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 上配置它?

创建于 2025/12/22 更新于 2026/5/27