字节修补 JMP

逆向工程 拆卸 部件 C++ 记忆
2021-07-11 20:31:22

我有一个地址,我想对它进行字节修补,因为我想阻止一个 JMP。但是当我 NOP 时,游戏就会崩溃,因为它破坏了功能。所以,我不知道如何使用字节补丁来阻止 JMP。下面是地址的屏幕。提前致谢 !地址 ASM

2个回答

你的问题是你改变了程序的预期流程 - 通过修补JMP你完全改变了流程 - 这不是call原来的流程不会回到push rdi指令,但在修补它之后,所以行为是不期望的. 尝试查找 中发生的情况7FFCAE2A0F13,并可能在内部进行修补。

这里有两个问题。一,正如 macr0controller 指出的那样,跳转可能是在例程之前运行的基本代码。

第二个是跳转可能不是一个固定地址,这意味着有一个重定位项指向它,所以如果你用 NOP 替换 0xE9 指令,那么你写的任何 NOP 都将被替换为垃圾指令。

相反,您可以将 0xE9 (JMP) 更改为等效长度的指令,例如 0x3D(CMP EAX、imm32),它不会更改任何寄存器并且不会受到以下值的影响。