-
-
[原创]Bindiff使用手册 v1.0
-
发表于:
2024-4-8 22:30
10305
-
Bindiff使用手册
分享Bindiff工具使用技巧,围绕案例讲解应用方向,已方便对此工具有需求的可快速上手与解决问题,欢迎反馈问题与分享好的方法
作者:梦幻的彼岸
更新日期:2024年4月8日
官网:https://www.zynamics.com/bindiff.html
开源地址:https://github.com/google/bindiff
插件地址:https://github.com/google/binexport
官网描述:
BinDiff 是一款二进制文件比较工具,可帮助漏洞研究人员和工程师快速查找反汇编代码中的异同点。
有了 BinDiff,你就能识别和隔离供应商提供的补丁中的漏洞修复程序。您还可以在同一二进制文件的多个版本的反汇编之间移植符号和注释,或使用 BinDiff 收集代码盗窃或专利侵权的证据。
导出插件:
BinDiff 是一款独立工具,可为 SRE(软件逆向工程) 工具提供导出插件。其中一个适用于 IDA、Ghidra 和 BinaryNinja。这些插件将分析信息提取到协议缓冲区,这是一种语言中立的结构化二进制数据和函数序列化方式。之后,BinDiff 可视化应用程序可以使用这些数据进行函数匹配。
基本界面:看到这两个程序的概览,其中显示了哈希值、架构等内容。
点击一下

调用图: 在创建了两个可执行文件的初始匹配后,调用图(包含函数间调用关系信息的图)将用于生成更多匹配。
双击

Matched Functions 想匹配的函数: 有多种匹配算法可用于确定给定函数是否相似,如基于哈希和边缘匹配的算法。在此视图中,您可以根据相似度和置信度值等因素快速确定哪些函数发生了更改。
其作用在于识别并匹配两个二进制文件之间相同或者高度相似的函数。
当用户运行 Bindiff 对比两个二进制文件时,它会通过算法分析函数的控制流图(CFG)、指令序列以及其他特征来找出对应的功能块。一旦找到相似或相同的函数,这些函数会被标记为“Matched Functions”。
在 Matched Functions 视图中,可以看到:
-
函数匹配列表:列出所有在两个版本之间成功匹配的函数及其相似度评分。相似度越接近1,说明两个函数越相似或完全一致。
-
差异展示:对于相似度不是100%的函数,用户可以进一步查看具体的差异部分,这对于逆向工程、漏洞分析、软件更新审计等场景尤其有用。
-
排序和筛选:用户可以根据相似度从低到高排序,快速定位那些经过修改或新增的函数。

线条的颜色根据匹配函数的相似程度而定,其中绿色表示高度相似,而红色表示弱匹配。
similarity 越高说明越匹配
Confidence 越高说明算法匹配度越准确
可双击查看具体差异

主要不匹配函数: 显示当前打开的数据库中包含的函数,这些函数与差异数据库中的任何函数都没有关联。

解析:匹配出主有这个函数,未知没有这个函数
次要不匹配函数: 包含差异数据库中的函数,但与第一个数据库中的任何函数都没有关联。

解析:主没有这个函数,未知有这个函数
[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!