Ghidra 扩展,在您的 Ghidra 项目中使用 BinDiff 来查找匹配的函数并自动重命名它们(支持 BinDiff 6、7、8)。 查看 BinDiff 手册 了解其工作原理以及如何匹配函数/基本块。不过,使用此扩展后,BinDiff 在 Ghidra 内部自动运行,因此您无需自己对比二进制文件。
请通过 GitHub 的 issue 功能报告 bug
如果与您的 Ghidra 版本兼容,可以从 release 下载 .zip 文件,否则请参阅下方的 如何构建。
没有这些工具,您将只能导入 .BinDiff 文件,而无法从 Ghidra 项目自动导出和对比
确保插件已在代码浏览器中加载,方法是在 Ghidra 中打开一个文件,然后在 代码浏览器 中转到 File->Configure
点击右上角的小插头图标:

并确保 BinDiffHelperPlugin 旁边的复选框已勾选。

相应的 .BinExport 文件需要位于同一文件夹中。
在代码浏览器中打开您想要导入名称的文件,然后转到 Window->BinDiffHelper

使用 Open from BinDiff 按钮或菜单项,选择您的 .BinDiff 文件。

选择您想要导入的所有函数名称,然后点击右上角的 Import function names 按钮或菜单项。
转到 Window->BinDiffHelper,确保没有关于 BinExport 或 BinDiff 的警告,然后点击 Open from project 按钮。
从树中选择另一个文件并点击 OK。

要求:
递归克隆仓库,因为它依赖 BinExport 中相应的 protocol buffer 定义。
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
您需要将 GHIDRA_INSTALL_DIR 环境变量设置为 Ghidra 安装目录。
如果您安装了不同的 JDK,请确保环境变量 JAVA_HOME 指向您的 Ghidra 安装所使用的那个。
该扩展将专门针对该 Ghidra 版本构建。
然后在您的 shell 中进入 BinDiffHelper 文件夹 并执行
gradle
这将构建相应子模块中的 BinExport 以及父目录中的 BinDiffHelper。dist 目录中应该已经创建了一个 .zip 文件。使用该 .zip 文件按照上述说明进行安装。
有时能够与 Ghidra 一起调试扩展是很有用的,以下是一些相关说明:
GHIDRA_INSTALL_DIR 环境变量gradle build eclipse 创建 BinDiffHelper eclipse 项目由 gradle build eclipse 生成的 classpath 与 GhidraDev 所做的 classpath 修改之间可能存在一些 classpath 冲突。从扩展项目中移除核心 Ghidra 安装中的所有 .jar 文件并让 GhidraDev 重新添加它们可能会有所帮助。如果之后 eclipse 调试失败,在 eclipse 中关闭并重新打开扩展项目可能会有所帮助。
当从 eclipse 外部调试带有扩展的 Ghidra 时,扩展会自动加载到 Ghidra 中(不要走通常的扩展安装流程)。但是,插件必须在代码浏览器中启用。
图标来自:Fatcow free icons