-
-
内存补丁
-
2006-5-27 07:36
6061
-
我昨天做了个内存补丁,老出问题,详细如下:
我在游戏的一个位置插入跳转,把游戏的原指令放到一个空内存中执行,执行完游戏指令后,我把寄存器入栈保护,然后执行我插入的指令,然后将入栈的寄存器出栈,再将程序跳回原处。
地址 指令
6C342FE0 JMP 6C379D00 (替换原指令,让程序跳转到空内存中执行)
6C342FE5 NOP
6C342FE6 NOP
6C342FE7 NOP
'==========================================
6C379D00 MOV EAX,[ESI+ECX*4-0C]
6C379D04 MOV [EDI+ECX*4-0C],EAX (这两条是程序的原来指令)
6C379D05 PUSH EBP(将寄存器入栈保护)
6C379D06 PUSH ESI
6C379D07 PUSH EDI
6C379D08 PUSH EAX
6C379D09 PUSH EBX
6C379D0A PUSH ECX
6C379D0B PUSH EDX
6C379D0C MOV [6C379DF0],EAX (这是我插入自己的指令)
6C379D11 POP EDX(寄存器出栈)
6C379D12 POP ECX
6C379D13 POP EBX
6C379D14 POP EAX
6C379D15 POP EDI
6C379D16 POP ESI
6C379D17 POP EBP
6C379D18 JMP 6C342FE8 (跳回去)
我想让大家帮我看下,到底问题出在哪?如果没有MOV [6C379DF0],EAX这条指令,程序一切正常,加了这条指令后就出错,可以帮我检查一下吗,最好能告诉我为什么,谢谢了
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课