【发布时间】:2016-07-19 10:33:06
【问题描述】:
我有一个类项目,我们需要获取一个用 C++ 编写的 32 位可执行文件并将其反汇编并修改汇编代码,然后重新组装它。我们应该在游戏中进行硬编码作弊之类的操作。
我已经搜索了几个小时,但找不到任何可以执行此操作的软件。我查看了 Ollydbg 并花了大约两个小时使用它,但无法真正弄清楚如何让它工作。我使用了作弊引擎,这实际上对我来说效果很好——我能够隔离修改我关心的地址的代码并将其替换为对游戏产生有利影响的代码,但据我所知作弊引擎无法重新编译修改后的代码。
这是一门相当低水平的计算机科学课程,因此在提出建议时请考虑我的能力水平,但如果有任何软件或替代方法可以让我这样做,我将不胜感激。谢谢!
【问题讨论】:
-
关于软件的问题不在 SO 上,但你的问题似乎很有趣,我以前从未见过这样的问题。
-
看看来自 Hexrays 的 IDA Pro 免费版。
-
Agner Fog's
objconvdisassembler 输出 NASM、MASM 或 GNU 程序集,由您选择。但是,它不会重新组装成逐字节相同的代码。例如带有imm32的指令本来可以使用imm8,最终会得到imm8。 NASM / YASM 语法确实支持add eax, dword 1之类的东西来发出add eax, imm32,但 objconv 不这样做。没有语法可以在add r/m32, imm32编码或 add-imm32-to-eax 的特殊操作码之间进行选择(这使得 5 字节的 insn 包括立即数,如 mov-immediate)。
标签: c++ assembly executable decompiler disassembly