字节修补 JMP
逆向工程
拆卸
部件
C++
记忆
2021-07-11 20:31:22
2个回答
你的问题是你改变了程序的预期流程 - 通过修补JMP你完全改变了流程 - 这不是call原来的流程不会回到push rdi指令,但在修补它之后,所以行为是不期望的. 尝试查找 中发生的情况7FFCAE2A0F13,并可能在内部进行修补。
这里有两个问题。一,正如 macr0controller 指出的那样,跳转可能是在例程之前运行的基本代码。
第二个是跳转可能不是一个固定地址,这意味着有一个重定位项指向它,所以如果你用 NOP 替换 0xE9 指令,那么你写的任何 NOP 都将被替换为垃圾指令。
相反,您可以将 0xE9 (JMP) 更改为等效长度的指令,例如 0x3D(CMP EAX、imm32),它不会更改任何寄存器并且不会受到以下值的影响。
