通过编译(变量用常量代替):
_asm{
         push 6    //变量a
push 0    //变量b
push 6    //变量c
mov ecx,0x6d3610
call ecx
add esp,0xc
}
现在要改为变量 求解
以下为什么不行?
int aInt=6;
int* aPoint=&aInt;
_asm{
         mov eax,aPoint
         push eax    //变量a
push 0    //变量b
push 6    //变量c
mov ecx,0x6d3610
call ecx
add esp,0xc
}

解决方案 »

  1.   

    直接代入进去试试!!!
    int a=6;
    _asm{
    ...
    mov eax,a
    push eax //变量a
    ...
    }
      

  2.   


    int add(int a,int b,int c)
    {
    _asm
    {
    pushad //压栈
    mov eax,p //指针p的值,也就是aa的地址
    mov edx,dword ptr[eax] //取p指向的地址的DWORD值,也就是aa的值
    mov eax, dword ptr[ebp+8] //参数1
    mov ecx, dword ptr[ebp+0xC] //参数2
    mov edx, dword ptr[ebp+0x10] //参数3
    push eax
    push edx
    push ....
    call xxx
    .......
    popad 出栈 }
    }
      

  3.   

    //int aInt=6;
    //这些都是堆栈上的变量,要通过ESP 的地址才能访问 楼主可以把变量弄成全局的 或者静态的。
    //int* aPoint=&aInt;
    static int aInt=6;
    static int* aPoint=&aInt;
    _asm{
    mov eax,aPoint
    push eax //变量a
    push 0 //变量b
    push 6 //变量c
    mov ecx,0x6d3610
    call ecx
    add esp,0xc