补充说明:要转载请写名作者出处    :-)     
~~~~~~~~~~~~~~~~~~
若想投稿先告诉我一声    :-)
~~~~~~~~~~~~~~~~~~
如果有问题请留贴,或给我写信:  [email protected]

解决方案 »

  1.   

    to Chine_wxg(Chice):
    你觉得这个怎么样? 
       __declspec(naked) void Callback2()
       {      _asm  pop   eax;        // save return address
          _asm  pop   edx;        // save parameter 0
          _asm  pop   ecx;        // get address to JMP to
          _asm  push  edx;        // restore parameter 0
          _asm  push  eax;        // restore return address
          _asm  jmp   ecx;        // Jump to callback function....
       }
      

  2.   

    TO Amoon(阿木):
    实在抱歉,我汇编学的很不好,看不懂上面的程序哦。能解释一下吗?还有pop是出栈,push是入栈,注释怎么会是 “pop 保存 , push 恢复呢”?
    实在不明白,请高人指教。
      

  3.   

    haha,说实在的,我也没明白。这是MSDN上的一个例程。
      

  4.   

    补充:
    这个函数有点问题,改!:DWORD __stdcall GetStrAddress(char *s)
    {
    HANDLE h;
    h=GlobalAlloc(0,lstrlen(s)+1);
    if(h)CopyMemory(h,s,lstrlen(s)+1);else MessageBox(0,"Alloc Fail","",0);
    return h?(DWORD)h:(DWORD)s;
    }这样没问题了。