是否有针对 32 位可执行文件的具有修改和重组功能的反汇编程序?

Is there a disassembler with modification and reassembly capabilities for a 32-bit executable?

我有一个 class 项目,我们需要将一个用 C++ 编写的 32 位可执行文件反汇编并修改汇编代码,然后重新汇编。我们应该在游戏中做硬编码作弊之类的事情。

我已经搜索了几个小时,但找不到任何可以执行此操作的软件。我查看了 Ollydbg 并花了大约两个小时使用它,但无法真正弄清楚如何让它工作。我使用了作弊引擎,这对我来说真的很有效——我能够隔离修改我关心的地址的代码,并将其替换为对游戏产生有利影响的代码,但据我所知作弊引擎无法重新编译修改后的代码。

这是一个相当低水平的计算机科学 class 所以请在提出建议时考虑我的能力水平,但如果有任何软件或其他方法可以让我做到这一点,我会非常感谢欣赏它。谢谢!

既然你提到了 OllyDBG 和作弊引擎,我假设你正在使用 Windows。

首先,您可以使用OllyDBG 来保存文件,但由于某些原因我在OllyDBG 2 中找不到此选项,只有在旧版本(如1.10)中才有。您可以右键单击代码 window,然后选择 copy to executable > all modifications,将打开一个新的 window,右键单击新的 window,然后选择 save file .

我真正喜欢的替代方案是 x64dbg。它是一个开源 debugger/disassembler 并且可以选择通过 "Patches".

保存更改

另一种选择是通过十六进制编辑器应用更改,它允许您以二进制格式修改任何文件(包括可执行文件)。当然,这有点难做,因为您需要手动将您的更改转换为操作码,但如果您的更改不是太大或仅由修改一些常量组成,它可能是一个更快、更容易的解决方案。有很多十六进制编辑器,但我最喜欢的是 XVI32.

我个人喜欢做的是使用 Windows API 的 WriteProcessMemory and ReadProcessMemory 通过代码修改内存,因为它允许您动态地执行此操作。