如何在汇编代码级别区分两个 x86 二进制文件?

逆向工程 工具 二元分析 bin-diffing
2021-06-22 00:30:14

我正在寻找像Beyond Comparemeldkdiff等这样的工具可以用来比较两个反汇编的二进制文件。我知道有二进制(十六进制)比较,它显示了十六进制值的差异,但我正在寻找显示操作码和参数的东西。

任何人都知道可以提供帮助的东西?

4个回答

除非我弄错了,否则听起来您正在寻找二进制差异工具。下面是一些不错的选择。这些都需要IDA Pro。

  1. DarunGrim(开源) 死神

  2. BinDiff(商业) BinDiff

  3. eEye Binary Diffing Suite(使用 archive.org 下载安装程序)

您还可以尝试使用 radiff2(它不需要 IDA ;)),这是radare工具套件中的一个工具。它支持 delta diffing (-d)、graphdiff (-g) 和许多相关的好东西。

这里有各种很棒的选择。然而,所有这些似乎都没有得到维护。我向您推荐的工具是 Diphora https://github.com/joxeankoret/diaphora(免责声明:我是作者)。是一个用于 IDA Pro 的纯 Python 插件,用于进行程序差异,是唯一一个可以导入/导出结构、枚举等的插件,唯一一个使用 Hex-Rays 反编译器,更有趣的是,它保持不变:我最后一次提交更改是在上周。

一些截图:

不同的 MS015-034: 在此处输入图片说明

Diffing 伪代码 (MS015-050): 在此处输入图片说明

不同的 MS015-050: 在此处输入图片说明

此外,还有Turbodiff,它是一个 IDA 专业插件。还没有使用它,所以我不能说工具的质量。