Bindiff
**BinDiff** 是一款由 Google(收购自 Zynamics)推出的**二进制文件比对工具**。它是安全研究人员、逆向工程师在分析软件差异时的“火眼金睛”。
#status / growing
#type / resource
#tech / security
Bindiff
[!info] related notes
以下是它的核心介绍:
1. 核心功能:二进制“找不同”
普通的文本对比工具(如 Beyond Compare)只能对比源代码或文本文件。而 BinDiff 能够对比**可执行文件(.exe, .dll 等)**的内部结构。
- 不仅仅是字节对比: 它不是简单的比较
01代码,而是基于反汇编代码和**控制流图(Control Flow Graph)**进行逻辑层面的对比。 - 智能匹配: 即使两个文件的函数地址发生了变化(例如编译器优化或代码重排),BinDiff 也能通过算法识别出哪两个函数是对应的,并标出它们的相似度(Similarity)。
2. 依赖环境
BinDiff 并不是一个完全独立的软件,它通常作为插件配合反汇编神器使用:
- IDA Pro: 它是 IDA 最经典的搭档。
- Ghidra: 近年来也开始支持 NSA 开源的 Ghidra。
3. 最著名的应用场景:补丁分析 (Patch Diffing)
这是 BinDiff 最“高光”的用途:
- 场景: 微软发布了一个安全补丁修复了 Windows 的某个漏洞。黑客或安全研究员想知道这个漏洞到底在哪里。
- 操作: 使用 BinDiff 对比“打补丁前”的文件和“打补丁后”的文件。
- 结果: BinDiff 会高亮显示发生变化的那几个函数。研究人员通过分析这些变化,就能逆推出漏洞的原理,进而编写攻击代码(Exploit)或防御措施。
4. 优缺点
- 优点: 算法强大,可视化界面非常直观(双栏图表展示),目前完全免费(Google 收购后免费开放)。
- 缺点: 学习门槛高,需要懂汇编语言和逆向工程基础;配置环境(尤其是配合不同版本的 IDA/Ghidra)有时比较麻烦。
总结
BinDiff 是二进制安全领域的标配工具。如果你需要分析“旧版软件 vs 新版软件”在代码逻辑上到底改了什么(尤其是为了挖掘漏洞),它是必不可少的利器。
您目前是配合 IDA Pro 使用,还是准备在 Ghidra 上配置它?