最近开发一个游戏外挂
想在程序里面嵌入这段代码:
push eax
push ecx
mov eax,0x0045b3b0
push 0x145
mov ecx,[0x095ad3c]
mov ecx,[ecx+0x1c]
mov ecx,[ecx+0x24]
call eax
pop ecx
pop eax
在段代码在代码注入器里可以正常使用。注入器原理是创建远程线程执行这些代码,可以正常执行但是在VC6里面编译出来运行后游戏程序异常退出大根们帮我分析一下原因,小弟感激不尽~!

解决方案 »

  1.   

    我的代码写在DLL中HOOK了游戏程序实现加载的~!
      

  2.   

    使用“Naked Functions”试试。
      

  3.   

    单单这一点代码谁也无法回答你的问题,在做外挂的时候问题比较多,内存是否可写、内存数据位置是否会变化能不能锁定....
    现在还多了种,平台是否支持,在XP下面注入成功同种的代码放到VISTA上失败,按你自己的思路去调试程序,在最有可能发生错误的地方,比如初始化的运行外挂的时候出错、或执行了那段代码出错再研究是在那出了问题,你知道了在那写内存证明你可以使用OD去调试游戏,使用OD吧~~:)
      

  4.   


    _asm{
    push eax
            push ecx
            mov eax,0x0045b3b0
            push 0x145
            mov ecx,[0x095ad3c]
            mov ecx,[ecx+0x1c]
            mov ecx,[ecx+0x24]
            call eax
            pop ecx
            pop eax
    }
      

  5.   

    这样的话编译是不会有问题的,但程序就不运行结果就不敢保证了
    如:这个地址0x0045b3b0是不是你的函数入口地址。
    还有
    mov ecx,[0x095ad3c] 这句
    如果是要把0x095ad3c地址里的数据送到ecx的话应该是
    mov ecx,0x095ad3c
    mov ecx,[ecx]
      

  6.   

    多谢各位,我提问的时候已经排除别的问题才来问的。
    我只是把有问题的这一块写上了,不用帮我多考虑,呵呵~!先谢过了~!
    刚刚以为大哥指点过我了,
    原因就是Ghost90说的
    非常感谢
    结贴加分~!