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