工具

ghidriff Ghidra 二进制差异分析引擎

命令行二进制差异分析引擎,通过 pyghidra 以无界面方式驱动 Ghidra:导入并分析新旧两个版本的二进制,列出新增、删除和修改的函数,主要用于补丁比对。默认的 VersionTrackingDiff 引擎组合了多个 Ghidra 版本跟踪关联器和 BSim 匹配,另有基于符号名和结构图的较简单引擎,并提供 GhidraDiffEngine 基类供编写自定义比对器。结果以 JSON 和带 Mermaid 图表的 Markdown 输出,附有字符串、被调用与调用函数及二进制元数据的元差异,也可另外生成并排对照的 HTML。

使用条件与局限

  • 审阅时最新版本为 v1.0.0,于 2025-07-04 发布到 GitHub 和 PyPI,要求 Python 3.9+ 和 pyghidra 2.0+。所审阅的 main 分支提交合并于 2026-05-11,比该版本多六个提交,版本号仍为 1.0.0:它要求 Python 3.10+ 和 pyghidra 3.x,以 Ghidra 12.0.4 为目标版本,运行其他版本的 Ghidra 或 pyghidra 时会记录警告。setup.cfg 将该软件包标为 Alpha 阶段。
  • 需安装 Ghidra 及该版本支持的 JDK,设置 GHIDRA_INSTALL_DIR,再用 pip 或 uvx 安装;README 介绍了 Windows、Linux 和 macOS 上的配置,其 x64/arm64 Docker 镜像内置 PyPI 发布版,无需在主机上安装 Ghidra 和 Java。分析大型二进制时可能需要调高 JVM 内存占比。
  • 需提供同一二进制的两个或更多版本,按从旧到新的顺序排列,多个新版本时可附加汇总;凡是 Ghidra 能导入和分析的文件都可比较,并可为固件或引导程序镜像指定基址、自定义分析器选项和 GDT 类型库。支持平台页面指出原生代码效果最好,托管 .NET 代码结果不一,APK 中的原生库需先取出。预检若发现两个程序的处理器语言不同,或符号数量相差 4,000 个及以上,就会中止比对,除非指定 --force-diff。默认会配置 Ghidra 内置的知名 PDB 符号服务器和本地符号库,可用 --no-symbols 关闭。
  • 采用 GPL-3.0 许可。匹配质量取决于 Ghidra 的分析和反编译结果。README 的用例和文档站的示例差异报告针对另行获取的 Windows 和 macOS 系统二进制;仓库本身不附带任何目标二进制。本条目未对任何二进制进行比对。

关于此条目

类型
工具
类别
二进制对比工具
关联
基础工具
目标
二进制 · 固件

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · clearbluejar/ghidriff · 修订 4f5d895
  2. README.md#L282-L315 GitHub · clearbluejar/ghidriff · 修订 4f5d895
  3. setup.cfg GitHub · clearbluejar/ghidriff · 修订 4f5d895
  4. ghidriff/ghidra_diff_engine.py#L205-L226 GitHub · clearbluejar/ghidriff · 修订 4f5d895
  5. ghidriff/ghidra_diff_engine.py#L845-L876 GitHub · clearbluejar/ghidriff · 修订 4f5d895
  6. ghidriff/ghidra_diff_engine.py#L1453-L1474 GitHub · clearbluejar/ghidriff · 修订 4f5d895
  7. www/docs/README/Supported%20Platforms.md GitHub · clearbluejar/ghidriff · 修订 4f5d895
  8. docs/progress-log.md GitHub · clearbluejar/ghidriff · 修订 4f5d895
  9. LICENSE GitHub · clearbluejar/ghidriff · 修订 4f5d895
  10. https://github.com/clearbluejar/ghidriff/releases/tag/v1.0.0
  11. https://pypi.org/project/ghidriff/1.0.0/