Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
bindiff — 快速查找反汇编代码中的差异和相似之处 | Kitploit
工具/GitHubGitHub/google/bindiff
静态分析漏洞分析逆向工程恶意软件分析二进制分析论文与研究学习与教育固件分析
GitHubgoogle/bindiff

bindiff

快速查找反汇编代码中的差异和相似之处

查看仓库
3.1k2384714小时1分前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

BinDiff Logo

版权所有 2011-2026 Google LLC。

BinDiff

本仓库包含 BinDiff 的源代码。BinDiff 是一款开源二进制文件比较工具,可快速发现反汇编代码中的差异与相似之处。

目录

  • 关于 BinDiff
  • 快速入门
  • 文档
  • 代码地图
  • 从源码构建
  • 许可协议
  • 参与贡献

关于 BinDiff

BinDiff 是一款开源二进制文件比较工具,可帮助漏洞研究人员和工程师快速发现反汇编代码中的差异与相似之处。

借助 BinDiff,研究人员可以识别并隔离供应商补丁中的漏洞修复。它还可用于在不同版本同一二进制的反汇编结果之间移植符号和注释。这使得跟踪随时间变化的工作更加容易,并允许组织保留分析结果,促进二进制分析师之间的知识传递。

使用场景

  • 比较 x86、MIPS、ARM、PowerPC 及主流反汇编器支持的其他架构的二进制文件。
  • 识别不同二进制文件中相同或相似的函数。
  • 将一个反汇编结果中的函数名、注释和局部名称移植到另一个反汇编结果中。
  • 检测并高亮同一函数的两个变体之间的变化。

快速入门

如果你只想快速上手使用 BinDiff,请从发布页面下载预构建的安装包。

注意:BinDiff 依赖于单独的反汇编器。默认情况下,它支持 IDA Pro、Binary Ninja 和 Ghidra。支持的配置列在反汇编器页面中。

文档

现有手册的部分内容可在 docs/ 目录中找到。

代码地图

BinDiff 包含以下组件:

  • cmake - CMake 构建文件,声明外部依赖项。
  • fixtures - 用于测试 BinDiff 核心引擎的测试文件集合。
  • ida - 与 IDA Pro 反汇编器的集成。
  • java - Java 源代码。包含 BinDiff 的可视化差异对比用户界面及其对应的工具库。
  • match - BinDiff 核心引擎的匹配算法。
  • packaging - 安装包的打包源码。
  • tools - 随产品一起分发的辅助可执行文件。

从源码构建

以下说明应足以构建本地代码和基于 Java 的组件。

更详细的构建说明将在后续补充。这包括用于构建安装包的现成 Dockerfile 和脚本。

本地代码

BinDiff 使用 CMake 为那些由原生 C++ 代码组成的组件生成构建文件。

需要以下构建依赖项:

  • BinExport 12,BinDiff 的配套插件,也包含大量共享代码。
  • Boost 1.83.0 或更高版本(Boost 1.83.0 的部分副本随 BinExport 提供,并将自动使用)。
  • CMake 3.14 或更高版本。
  • Ninja(用于快速构建)。
  • 在 Linux/macOS 上使用 GCC 15 或最新版本的 Clang。在 Windows 上,使用 Visual Studio 2022 编译器和 Windows 11 的 Windows SDK。
  • Git 1.8 或更高版本。
  • 将自动下载的依赖项:
    • Abseil、GoogleTest、Protocol Buffers (3.14) 和 SQLite3。
    • Binary Ninja SDK。
    • IDA SDK。

在 Windows、Linux 和 macOS 上的通用构建步骤相同。以下展示 Linux 上的命令。

接下来,配置构建目录并生成构建文件:

root@kitploit:~
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release

最后,调用实际的构建过程。二进制文件将放在 build/ 目录下:

root@kitploit:~
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release

不包含 IDA 的构建

要构建不含 IDA 的版本,只需将上述配置步骤改为:

root@kitploit:~
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DBINEXPORT_ENABLE_IDAPRO=OFF

Java GUI 和 yFiles

构建基于 Java 的 GUI 需要商业第三方图形可视化库 yFiles 用于图形显示和布局。该库功能强大,且不易替代。

在构建时,BinDiff 使用 Gradle 6.x 和 Java 11 LTS。请参考其安装指南了解安装说明。

假设你持有 yFiles 许可证,请将 YFILES_DIR 环境变量设置为包含 yFiles 的 y.jar 和 ysvg.jar 的目录。

注意:BinDiff 仍使用 yFiles 较旧的 2.x 分支。

然后调用 Gradle 下载外部依赖项并构建:

Windows:

root@kitploit:~
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar

Linux 或 macOS:

root@kitploit:~
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar

之后,java 子目录下的 ui/build/libs 目录中应包含独立的 bindiff-ui-all.jar 构件,可使用标准的 java -jar 命令运行。

延伸阅读 / 类似工具

阐述 BinDiff 基本思想的原始论文:

  • Thomas Dullien 和 Rolf Rolles。Graph-Based Comparison of Executable Objects。bindiffsstic05-1.pdf。SSTIC '05,信息与通信技术安全研讨会。2005年。
  • Halvar Flake。Structural Comparison of Executable Objects。dimva_paper2.pdf。第161-173页。入侵检测与恶意软件及漏洞评估。2004年。3-88579-375-X。

同领域的其他工具:

  • Diaphora,一种先进的程序差异比较工具,实现了许多相同的思想。
  • TurboDiff,一个现已停用的 IDA Pro 程序差异比较插件。

使用 BinDiff 的项目:

  • VxSig,一种从相似二进制文件集合中自动生成 AV 字节签名的工具。

许可协议

BinDiff 采用 Apache 许可协议。更多信息请参见 LICENSE。

参与贡献

如果你想贡献代码,请在发送拉取请求前阅读 CONTRIBUTING.md。你也可以报告 Bug 或提出功能请求。

下载工具