我是否需要 IDA Pro 才能使用 BinDiff 工具?

逆向工程 bin-diffing 工具bindiff
2021-06-17 08:05:27

我正在尝试学习如何使用BinDiff工具,但我不知道如何打开两个二进制文件来进行比较。在浏览他们的手册时,似乎我需要为此使用 IDA Pro。

我可以在没有 IDA Pro 的情况下使用 BinDiff(比如,只有 IDA free)吗?

2个回答

是的,现在 Ghidra 可以做到这一点。

最新版本 BinDiff 6 具有对 Ghidra 反汇编程序的实验性支持。它附带了一个扩展,允许将 Ghidra 反汇编导出为差异所需的 .BinExport 格式。

所需软件

安装 Ghidra 扩展

安装 BinDiff 后,在安装文件夹中找到“BinExport”扩展。

默认值是

  • 视窗: C:\Program Files\BinDiff\extra\ghidra
  • Linux: /opt/bindiff/extra/ghidra
  • 苹果系统: /Applications/BinDiff/Extra/Ghidra

如果您找到了该ghidra_BinExport.zip文件,则可以像安装任何其他 Ghidra 扩展程序一样安装该扩展程序:

  1. 启动 Ghidra,然后选择File| Install Extensions....
  2. 单击+按钮Add extension
  3. Select Extension对话框中,导航到包含 ghidra_BinExport.zip.

  4. 选择 .zip 文件并单击 OK

  5. 单击OK以确认并再次关闭重新启动消息。然后重启 Ghidra。

用法

与 IDA Pro 的本机 C++ 版本相比,此版本的基于 Java 的 Ghidra 导出器具有以下功能:

|                                         | Ghidra | IDA |
| --------------------------------------- | ------ | --- |
| Protocol Buffer based full export       |    ✓¹  |  ✓  |
| Statistics text file                    |    -   |  ✓  |
| Text format for debugging               |    -   |  ✓  |
| BinNavi export into PostgreSQL database |    -   |  ✓  |

¹ No operand trees

验证安装版本

  1. 在 Ghidra 中,选择File| Install Extensions....
  2. 验证BinExport已列出并具有正确的Install Path

调用

  1. 在 Ghidra 中,打开一个项目或创建一个新项目。
  2. 如果尚未完成,请在代码浏览器工具中打开要导出的二进制文件并运行 Ghidra 的初始分析。您可能希望启用“积极的指令查找器”选项以获得更好的导出覆盖范围。
  3. 在项目视图中,右键单击要导出的二进制文件并选择 Export...
  4. 从下拉列表中,选择 Binary BinExport (v2) for BinDiff
  5. 选择输出文件的路径。这可以是原始文件名, .BinExport将被附加。
  6. 单击OK

BinDiff 导出文件

现在可以对导出的文件进行比较,并将结果显示在其 UI 中:

  1. 按照上述说明导出两个二进制文件。以下步骤假设primary.BinExportsecondary.BinExport
  2. 从命令行运行 BinDiff 引擎

    bindiff primary.BinExport secondary.BinExport
    

    这将primary_vs_secondary.BinDiff在当前目录中创建一个文件bindiff命令应该在您的系统路径中。

  3. 通过bindiff --ui或使用操作系统的启动器启动 BinDiff UI

  4. 创建一个新的工作区或打开一个现有的工作区。

  5. 选择Diffs| Add Existing Diff....

  6. 在 下Choose Diff,选择primary_vs_secondary.BinDiff在步骤 2 中创建的。

  7. 单击OK,然后单击Add差异现在显示在左侧的树视图中,可以通过双击打开。

  8. 通常使用 BinDiff 来显示匹配函数的调用图或流程图。

开源

最后,BinExport 扩展(以及 IDA Pro 插件)是开源的,可在 GitHub 上获得v11标签对应于 BinDiff 6。

Bindiff 可以是 IDA 中的插件,也可以是独立的,但您仍然需要 IDA 数据库来比较二进制文件。

在此处输入图片说明