我最近一直在进行一个小型RE项目,该项目需要修补可执行文件。对于小的修改,我知道有足够的x86可以修补跳转,nop,无限循环等,因此十六进制编辑器就足够了。但是较大的呢?

我以前使用OllyDbg进行操作,里面有很多工具,您可以转到任意一行,按空格键,然后开始组装,替换的指令将自动填充NOP,甚至不错的插件,可找到代码陷阱。

不幸的是,这些天OllyDbg似乎很少更新,并且无法在64位Windows 8.1上加载任何应用程序,因此我改用Hiew。 Hiew不错,但是界面很好,比Olly的界面还有些陈旧,使用起来也很麻烦。

我想知道是否有人知道可以执行相同功能的更多现代工具。

#1 楼

如果您拥有IDA专业版,则IDA修补程序是最近发布的。虽然我还没有亲自使用它,但它赢得了Hexrays插件竞赛之一,而且可能很合理。
我过去也使用过这个简单的python脚本:

http://stalkr.net/files/ida/idadif.py

不是现代的,但是可以用。

评论


看起来IDA如今具有内置的“编辑”->“补丁程序”->“汇编”功能,这可以改善补丁管理。谢谢。这将完美地完成。

–ultramancool
2014年10月12日下午16:28

#2 楼

我经常使用radare2修补二进制文件。它运行良好,它是免费的(就像在自由中一样),并且可以编写脚本。

评论


我快速浏览了radare2,但是找不到有关使用它进行修补的很多好信息。您介意链接一个好的指南吗?谢谢。

–ultramancool
2014年10月14日13:49

通常,radar.org网站上的文档非常好。关于特定问题,这是修补radare.org/doc/html/Section3.8.html#write的部分

– PhoeniX
2014年10月14日在22:10

#3 楼

有几个非常好的选择。

首先,我在进行修补时经常忘记的一点是LD_PRELOAD使钩子/重定向库例程非常容易。指令,我经常使用的工具是pwntools(Python库)和Fentanyl(IDAPython脚本)。

对于pwntools,以下示例是在文件-地址0x1234,我们将其称为虚拟地址0x8001234。请注意,此支持仅限于ELF文件,不适用于PE。填充您的说明并修复偏移量。



#4 楼

使用x64dbg。它与现代Windows上的x86和x64完美配合,您可以像在Olly中一样进行修补和保存。总体来说,界面与olly非常相似