#1 楼
是的,现在可以使用Ghidra来实现。最新版本BinDiff 6具有对Ghidra反汇编程序的实验性支持。它附带一个扩展程序,该扩展程序允许将Ghidra反汇编导出为差异所需的.BinExport格式。 />
最近的Java运行时(OpenJDK 11或更高版本)
Ghidra 9.1.2(https://ghidra-sre.org/releaseNotes_9.1.2.html)
安装Ghidra扩展
安装BinDiff之后,在安装文件夹中找到“ BinExport”扩展。
默认值为
Windows :
C:\Program Files\BinDiff\extra\ghidra
Linux:
/opt/bindiff/extra/ghidra
macOS:
/Applications/BinDiff/Extra/Ghidra
如果已找到
ghidra_BinExport.zip
文件,则扩展名可以像其他任何Ghidra扩展名:启动Ghidra,然后选择
File
。 Install Extensions...
。单击
+
按钮到Add extension
。在
Select Extension
对话框中,导航到包含ghidra_BinExport.zip
的目录。选择.zip文件,然后单击
OK
单击
OK
确认并再次取消重启消息。然后重新启动Ghidra。
用法
此版本的基于Java的Ghidra导出器具有以下功能
,与IDA的本机C ++版本相比Pro:
| | Ghidra | IDA |
| --------------------------------------- | ------ | --- |
| Protocol Buffer based full export | ✓¹ | ✓ |
| Statistics text file | - | ✓ |
| Text format for debugging | - | ✓ |
| BinNavi export into PostgreSQL database | - | ✓ |
¹ No operand trees
验证安装版本
在Ghidra中,选择
File
| Install Extensions...
。验证
BinExport
已列出并具有正确的Install Path
调用
在Ghidra中,打开一个项目或创建一个
如果尚未完成,请在“代码浏览器”工具中打开要导出的二进制文件,然后运行Ghidra的初始分析。您可能需要启用“ aggressive
指令查找器”选项以在导出中获得更好的覆盖。
在项目视图中,右键单击要导出的二进制文件,然后选择
Export...
从下拉列表中选择
Binary BinExport (v2) for BinDiff
选择输出文件的路径。这可以是原始文件名,因为会附加
.BinExport
。单击
OK
。结果显示在其UI中:按照上述说明导出两个二进制文件。
以下步骤假定
primary.BinExport
和secondary.BinExport
。在当前目录中创建文件
primary_vs_secondary.BinDiff
。 bindiff
命令应位于您的系统路径中。通过
bindiff --ui
或使用启动器运行您的操作系统来启动BinDiff UI。
创建一个新的工作区或打开一个
选择
Diffs
| Add Existing Diff...
。在
Choose Diff
下,选择在步骤2中创建的primary_vs_secondary.BinDiff
。单击
OK
,然后单击Add
。现在,差异显示在的树视图中,可以通过双击将其打开。
通常使用BinDiff显示匹配功能的调用图或流程图。
开源
最后,BinExport扩展(以及IDA Pro插件)是开源的,可以在GitHub上使用。
v11
标签对应于BinDiff6。评论
谢谢。我很高兴摆脱对IDA Pro的依赖!
–c00000fd
10月31日18:55
#2 楼
Bindiff可以是IDA中的插件,也可以是独立的,但您仍然需要IDA数据库来比较二进制文件。评论
我怀疑没有安装IDA就能打开.idb
–伊戈尔·斯科钦斯基♦
19-10-23在10:48
@ismael_akez:我可以生成没有IDA的数据库文件吗?
–c00000fd
19-10-25在8:44
评论
相关:BinDiff reverseengineering.stackexchange.com/q/26196/3934的替代项?