二进制文件相似性
BinDiff
BinDiff 是一款二进制文件比对工具,可帮助漏洞研究人员和工程师快速找到反汇编代码的异同,同时,使用 BinDiff 还可以识别和隔离供应商提供的补丁中的漏洞修复
安装
BinDiff 是一款 java 程序,因此需要安装 java jdk 环境,用
java -version
验证安装是否成功BinDiff 需要借助 IDA pro 进行分析,所以需要安装 IDA Pro 7.7.220118 (SP1) 全插件绿色版 (官方说明需要 6.8 及以上版本)
下载 BinDiff (BinDiff 同时支持 Windows、Linux、Mac)
Windows 平台选择bindiffx.msi
下载
像平时安装软件一样正常安装即可(低版本的 BinDiff 可能需要手动选择 IDA pro 的安装路径,否则 BinDiff 无法正常运行)
在 BinDiff 中使用
注意,BinDiff 并不能直接分析 exe 程序,只能分析 IDA 生成的
.i64
数据库文件
将想要对比相似性的两个二进制程序分别用 IDA 打开,待 IDA 分析完成后,关闭 IDA,IDA 会在本地生成一个数据库文件
在 BinDiff 中
主菜单 ——> File ——> New Workspace
新建一个工作空间
然后主菜单 ——> Diffs ——> New Diff
,选择生成的两个 IDA 数据库文件,待分析完成即可我就是这样操作的,但是会有一个报错,暂时还没有解决报错问题。。。
如果你的情况跟我一样,那就试试下面的方法吧
在 IDA 中使用
如果还是报错,可以直接在 IDA 中使用 BinDiff 插件
- 因为在安装 BinDiff 时,选择了本地正确的 IDA 安装目录,BinDiff 会把插件放在 IDA 的安装目录下的 plugins 文件夹里,如图:
如果没有的话,其实 IDA Pro 7.7.220118 (SP1) 全插件绿色版 这个版本的 IDA 是内置了 BinDiff 的,可以直接使用
- 打开其中一个 IDA 数据库文件,在 IDA 中使用快捷键:
Ctrl + 6
点击 Diff Database...
,然后选择另外一个二进制程序的 IDA 数据库文件
待分析完成,界面如下:
到此,说明插件安装成功
- 左边绿色框中,
Similarity
的值表示两个文件中函数的相似度,值越接近 1 表示越相似