BinDiff
摘要
BinDiff 是一款独立工具,可为 SRE(软件逆向工程) 工具提供导出插件。其中一个适用于 IDA、Ghidra 和 BinaryNinja。
IDA-BinDiff
参考:
https://blog.nsfocus.net/bindiff/(除了比对结果解析之外还有过滤、排序,寻找匹配代码)
Using BinDiff - Malware Analyst’s Cookbook and DVD
使用
使用前需要先获得两个二进制文件的IDA数据库(.i64)文件(用IDA打开并保存数据库)
Primary File基准文件:当前使用IDA打开的文件
Secondary File对比文件:选择的要与之比较的文件
假设当前文件是new.i64(Primary File),在Edit->Plugins->BinDiff (Ctrl-6)->Diff Database->选中old.i64(Secondary File)。diff完成会出现四个窗口:
Matched Functions
匹配的函数
参数含义:
单行颜色:越绿表示相似度最高,越红表示相似度越低
Similarity:[0,1]区间的值,指明new与old的相似度。1表示完全一样。缺省对Similarity降序排列显示
Confidence:[0,1]区间的值,指明Similarity的可信度,值越接近1表示Similarity可信度越高。Confidence实际代表了识别算法的强弱。
高Similarity、低Confidence表示一个弱算法找到一个强匹配;低 Similarity、高Confidence表示一个强算法找到一个弱匹配。显然,强算法找到的强匹配是最佳匹配

Statics
A summary of the overall similarity between the two files Matched functions

1 | Primary函数:41565 |
Primary全部函数都找到了匹配,Secondary多了279个函数

Similarity表示两个程序结构相似度,Confidence表示匹配可靠度
Primary unmatch
主文件中的未匹配。在Primary File中存在,在Secondary File中未找到匹配
Secondary Unmatch
对比文件中的不匹配。在Secondary File中存在,在Primary File中未找到匹配

应用
不同版本之间迁移符号表等信息
用BinDiff迁移符号的要点是,先打开new,再比较old,最后右键Import符号
漏洞修补前后版本比对,找出漏洞点
保存与重用
保存后得到的文件形如Primary File_vs_Secondary File.BinDiff
再次打开bindiff文件,需要先用IDA打开Primary File,然后Edit->Plugins->BinDiff,选择Load Results...,然后选中保存的文件(略麻烦)
也可以直接使用BinDiff的GUI打开