Beyond Compare
,meld
,kdiff
等工具,该工具可用于比较两个反汇编的二进制文件。我知道有一个二进制(十六进制)比较,该比较显示了十六进制值之间的差异,但是我正在寻找可以显示操作码和参数的东西。 > #1 楼
除非我没有记错,否则听起来您正在寻找二进制比较工具。以下是一些不错的选择。这些都需要IDA Pro。DarunGrim(开源)
BinDiff(商业)
eEye Binary Diffing Suite (使用archive.org下载安装程序)
评论
大。正是我一直在寻找的东西
–烛光
13年4月21日在16:04
根据您提供的链接,eEye Binary Diffing Suite是开源的,其中一部分是DarunGrim。
–烛光
13年4月21日在17:16
值得一提的是,它们全都在IDA之上运行,而不是独立运行。
–伊戈尔·斯科钦斯基♦
13年4月22日在9:06
也相关:BinDiff的工作方式
– newgre
13年4月22日在17:58
#2 楼
您也可以尝试radiff2(不需要IDA;)),它是rade工具套件中的工具。它支持增量差异(-d),graphdiff(-g)和许多相关的功能。#3 楼
这里有各种不错的选择。但是,它们似乎都没有得到维护。我推荐您使用的工具是Diaphora https://github.com/joxeankoret/diaphora(免责声明:我是作者)。是用于IDA Pro的纯Python插件,用于进行程序比较,是唯一可以导入/导出结构,枚举等的插件,也是唯一一个使用Hex-Rays反编译器的插件,更有趣的是,它得到维护:我上次进行更改的时间是上周。一些屏幕截图:
与MS015-034有所不同:
差异伪代码(MS015-050):
差异伪造MS015-050:
评论
BinDiff的最佳替代品,可在IDA7 +中使用。
– Biswapriyo
18年11月4日在7:54
听起来像是个很棒的工具,但是为什么要把它与该IDA专业版捆绑起来呢?至少IDA Free或Ghidra怎么样?不是每个人都能负担得起他们想要的一大笔钱。
–c00000fd
8月12日8:48
因为IDA是逆向工程的事实上的工具,所以IDA Free缺少很多功能,Ghidra不支持Python 3.x,而且因为在我写Diaphora的时候还没有任何公开版本。我有一些计划移植到Ghidra,但这是一项巨大的工作。随意尝试。
– joxeankoret
8月13日9:18
#4 楼
另外,还有Turbodiff,它是一个IDA pro插件。还没有使用过,所以我不能对工具的质量说什么。
评论
您知道这是否适用于IDA 6.x吗?他们只列出了IDA 4.9和5.x支持。
–米克
13年4月21日在20:04
Turbodiff已被放弃,不适用于最新的IDA。
–安东·科赫科夫(Anton Kochkov)
13年4月22日在7:52
请添加有关该插件的简短说明。仅链接的答案不视为答案。
–asheeshr
2013年5月7日14:35
这是IDA Pro的二进制差异插件。我认为此答案中没有任何相关的内容,不是吗?
– newgre
2013年5月7日14:51
@newgre:最终与PatchDiff2相同吗?
– 0xC0000022L♦
13年8月8日在23:40
#5 楼
如果您使用的是IDA Pro,我也建议您使用PatchDiff2。这是说明:
PatchDiff2是IDA反汇编程序的插件,可以分析两个IDB文件。并找出两者之间的差异。 PatchDiff2是免费的,并且与Windows和Linux上的最新版本的IDA(6.1)完全集成。插件可以执行以下任务:
显示相同功能的列表
显示匹配功能的列表
显示不匹配功能的列表(带有CRC) )
显示相同和匹配功能的流程图
此插件的主要目的是在处理安全补丁或修补程序时快速并给出准确的结果。因此,不能使用此工具在两个不同程序之间查找相似功能。 Patchdiff2支持IDA可以处理的所有处理器,并提供两种版本:32位和64位。
要使用全部,您需要做的是:
解压缩两个patch2diff zip,其中有两个文件夹,分别包含Linux和Windows的两个文件,只需将patchdiff2.p64和patchdiff2.plw复制到位于C:\ Program Files \ IDA Pro Directory \ plugins \的插件目录中
打开要进行比较的可执行文件,并将其另存为.idb(默认)。 “视图”选项卡转到“编辑插件”,您应该会看到PatchDiff2,只需单击它,然后选择要比较的辅助.idb。最后,您将拥有一些选项卡,匹配函数,不匹配函数,相同函数。
评论
请添加有关该插件的简短说明。仅链接的答案不视为答案。
–asheeshr
2013年5月7日14:34
#6 楼
我非常喜欢kdiff路线,因为它既快捷又干净。注意:我使用diff来编写恶意软件的签名。大多数时候,我需要简单了解不同的说明。如果需要更深入地挖掘,请按照Mick的说明进行BinDiff或DarunGrim路线。以下脚本可用于为工作目录中的所有可执行文件创建程序集输出。import os
import subprocess
import glob
paths = glob.glob("*.exe")
ida_path = os.path.join(os.environ['PROGRAMFILES'], "IDA", "idaw.exe")
for file_path in paths:
subprocess.call([ida_path, "-B", file_path])
执行脚本。
C:\Documents and Settings\Administrator\Desktop\diff\python make-asm.py
Thank you for using IDA. Have a nice day!
C:\Documents and Settings\Administrator\Desktop\diff>dir
Directory of C:\Documents and Settings\Administrator\Desktop\diff
10/25/2013 11:16 AM <DIR> .
10/25/2013 11:16 AM <DIR> ..
10/25/2013 11:16 AM 40,604 a.asm
10/24/2013 08:35 AM 9,938 a.exe
10/25/2013 11:16 AM 368,957 a.idb
10/25/2013 11:16 AM 40,657 b.asm
10/24/2013 08:35 AM 9,969 b.exe
10/25/2013 11:16 AM 368,957 b.idb
10/25/2013 11:15 AM 218 make-asm.py
选择两个.asm文件,右键单击,Kdiff,比较。尼斯和简单的输出。
#7 楼
您可以尝试的另一种选择是Relyze(商业,独立Windows桌面应用程序),它支持二进制差异。它匹配两个Windows二进制文件之间的函数,并为您提供所有相等,已修改,已删除和已添加函数的列表,以及百分比差异值,以便您可以看到任意两个匹配函数的修改程度。GUI通过交互式图形显示匹配的功能,因此您可以浏览它们并查看更改。可以在导航时同步两个图形,因此单击一个图形中的一条指令将在另一图形中选择匹配的指令(如果有)。
评论
好吧,您始终可以从反汇编程序中获取操作码\参数的列表,并将它们作为两个文本列表进行比较?甚至为Immunity Debugger构建python脚本:)为什么拆卸时的diff / meld / kdiff /…不能令人满意?
@Mellowcandle +1提及kdiff。这是进行快速对比的好工具。
@吉尔斯:在这里查看我的问答。