<分区>
我有一个类(class)项目,我们需要将一个用 C++ 编写的 32 位可执行文件反汇编并修改汇编代码,然后重新汇编。我们应该在游戏中做硬编码作弊之类的事情。
我已经搜索了几个小时,但找不到任何可以执行此操作的软件。我查看了 Ollydbg 并花了大约两个小时使用它,但无法真正弄清楚如何让它工作。我使用了 Cheat Engine ,这对我来说真的很有效——我能够隔离修改我关心的地址的代码,并将其替换为对游戏产生有利影响的代码,但据我所知 Cheat Engine 没有能力重新编译修改后的代码。
这是一个相当低水平的计算机科学类(class),所以请在提出建议时考虑我的能力水平,但如果有任何软件或其他方法可以让我做到这一点,我将不胜感激。谢谢!
既然您提到了 OllyDBG 和 Cheat Engine,我假设您使用的是 Windows。
首先,您可以使用 OllyDBG 来保存文件,但出于某种原因,我在 OllyDBG 2 中找不到此选项,只有在旧版本(如 1.10)中才有。您可以右键单击代码窗口,然后 copy to executable > all modifications
,将打开一个新窗口,右键单击新窗口,然后选择 save file
.
我真正喜欢的替代方案是 x64dbg .它是一个开源调试器/反汇编器,并且可以选择通过“补丁”保存更改。
另一种选择是通过十六进制编辑器应用更改,它允许您以二进制格式修改任何文件(包括可执行文件)。当然,这有点难做,因为您需要手动将您的更改转换为操作码,但如果您的更改不是太大或仅由修改一些常量组成,它可能是一个更快、更容易的解决方案。有很多十六进制编辑器,但我最喜欢的是 XVI32 .
我个人喜欢做的是使用 Windows API 的 WriteProcessMemory 通过代码修改内存和 ReadProcessMemory因为它允许您动态地执行此操作。