我知道Zynamics的BinDiff和IDA的PatchDiff。但是我真的想要ImmDBG中的这样的工具。我也了解Radare的bindiffer和
mona.py
中的功能(但这在内存区域中更多)。然后,我将使用Immunity查找偏移量+基地址。这实际上不再可行,因为我最近开始撤消更大的补丁。 > #1 楼
答案就在评论之内,请阅读Nicolas A. Economou(CoreImpact)2009的Binary Diffing,以了解原因。事实上,良好的Binary Diffing是一个难度更大的问题,比比较字节或位。
用objdump和Meld制作二进制差异确实不是要走的路。阅读CoreImpact文档,它将显示一些与二进制差异有关的问题。
评论
我认为Immunity Debugger缺少PatchDiff和Zynamics BinDiff使用的IDA API中的许多功能。无论如何,您可能需要修改PatchDiff来查看它是否可以完成(它是开源的)。您到底想达到什么目的?突出显示十六进制视图中的差异吗?
好吧,我怀疑免疫缺乏功能。差异有多难? =)为了漏洞研究,我希望使我的差异补丁更加高效。现在,我使用十六进制编辑器进行比较,在ImmDbg中查找偏移量,并查找已更改的操作码。如果我可以将这些工具组合在一起,那我就去做。关于PatchDiff是开源的。我可能会尝试自己编写一些Imm插件以使PatchDiffing达到我想要的水平。 (但我宁可倒也不愿写代码)
它缺少功能,可以肯定的是:二进制文件中是否包含所有函数的原型?如何找到二进制文件中的函数?它是否认为一个函数可以划分为多个小块?基本块如何管理?非条件跳转会破坏代码吗?寻找开关结构有多好?确实,它缺少许多信息。至于“差异化有多难”,也许Rolf Rolles有兴趣问这个问题。
Stolas,您似乎不清楚什么是二进制差异或它如何工作。当我们在BinDiff,DarunGrim,PatchDiff等上下文中说“二进制差异”时,我们具体不是在谈论涉及可执行文件原始字节的差异,或在原始反汇编中使用“ diff”。这些工具创建两个二进制文件的图形分解表示,然后进行比较。因此,差异工具的质量取决于反汇编程序。这就是为什么评论者不断提及IDA的原因,也是为什么我总是皱起眉头,因为您建议使用十六进制编辑器Meld或diff。