我正在尝试学习如何使用BinDiff工具,但我不知道如何打开两个二进制文件来进行比较。在浏览他们的手册时,似乎我需要为此使用 IDA Pro。
我可以在没有 IDA Pro 的情况下使用 BinDiff(比如,只有 IDA free)吗?
我正在尝试学习如何使用BinDiff工具,但我不知道如何打开两个二进制文件来进行比较。在浏览他们的手册时,似乎我需要为此使用 IDA Pro。
我可以在没有 IDA Pro 的情况下使用 BinDiff(比如,只有 IDA free)吗?
是的,现在 Ghidra 可以做到这一点。
最新版本 BinDiff 6 具有对 Ghidra 反汇编程序的实验性支持。它附带了一个扩展,允许将 Ghidra 反汇编导出为差异所需的 .BinExport 格式。
安装 BinDiff 后,在安装文件夹中找到“BinExport”扩展。
默认值是
C:\Program Files\BinDiff\extra\ghidra
/opt/bindiff/extra/ghidra
/Applications/BinDiff/Extra/Ghidra
如果您找到了该ghidra_BinExport.zip
文件,则可以像安装任何其他 Ghidra 扩展程序一样安装该扩展程序:
File
| Install Extensions...
.+
按钮Add extension
。在Select Extension
对话框中,导航到包含
ghidra_BinExport.zip
.
选择 .zip 文件并单击 OK
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
File
| Install Extensions...
.BinExport
已列出并具有正确的Install Path
Export...
Binary BinExport (v2) for BinDiff
.BinExport
将被附加。OK
。现在可以对导出的文件进行比较,并将结果显示在其 UI 中:
primary.BinExport
和secondary.BinExport
。从命令行运行 BinDiff 引擎
bindiff primary.BinExport secondary.BinExport
这将primary_vs_secondary.BinDiff
在当前目录中创建一个文件。该bindiff
命令应该在您的系统路径中。
通过bindiff --ui
或使用操作系统的启动器启动 BinDiff UI 。
创建一个新的工作区或打开一个现有的工作区。
选择Diffs
| Add Existing Diff...
.
在 下Choose Diff
,选择primary_vs_secondary.BinDiff
在步骤 2 中创建的。
单击OK
,然后单击Add
。差异现在显示在左侧的树视图中,可以通过双击打开。
通常使用 BinDiff 来显示匹配函数的调用图或流程图。
最后,BinExport 扩展(以及 IDA Pro 插件)是开源的,可在 GitHub 上获得。该v11
标签对应于 BinDiff 6。