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

标签 c++ assembly executable decompiler disassembly

<分区>

我有一个类(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因为它允许您动态地执行此操作。

关于c++ - 是否有针对 32 位可执行文件的具有修改和重组功能的反汇编程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36325486/

相关文章:

shell - "No such file or directory"但它存在

c++ - 如何使用 C++ Mat 类 ptr 对象的基本 C 包装器打印 Mat 元素

c++ - 创建 const 迭代器和非 const 迭代器

assembly - 为什么 "03 c8"和 "01 c1"= add ecx, eax

debugging - 为什么 int 3 生成 64 位的 SIGSEGV 而不是停止调试器?

c - 如何将 C 中带有数组的 while 循环转换为 ARM

linux - 我可以将图标与 Linux 中的可执行应用程序合并吗?

C++类实例化和内部调用方法

javascript - 如何将匿名函数作为参数从 javascript 传递到 webkit 上的 C++?

MATLAB 独立可执行文件