使用 Hex-Rays 插件管理器 安装:
hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.4.2.zip
手动安装说明见下文。
Diaphora(διαφορά,希腊语中意为“差异”)3.4 版本是截至目前(2026 年)可用的最先进的程序差异比较工具(作为 IDA 插件工作)。它于 2015 年在 SyScan 期间首次发布,此后一直得到积极维护:Diaphora 已经被移植了 11 年,覆盖了从 6.8 到 9.4 的每一个 IDA 次要版本。
Diaphora 支持 IDA >= 7.4 版本,因为其代码仅在 Python 3.X 中运行(Python 3.11 是最后测试的版本)。
Diaphora 拥有许多您可能期望的最常见的程序差异比较(bindiffing)功能,例如:
然而,Diaphora 还拥有许多在任何其他公开工具中都没有的独特功能。以下是独有功能的不完全列表:
Diaphora 无需安装:只需下载代码并在 IDA 内或命令行中运行脚本 diaphora.py(仅用于对已导出的数据库进行差异比较)。不过,可以通过以下步骤将其作为 插件 集成到 IDA 中:
plugins/diaphora_plugin.py 和 plugins/diaphora_plugin.cfg 复制到 IDA 的插件目录。diaphora_plugin.cfg,将路径值设置为 Diaphora 的目录。您可以通过捐款来帮助(或感谢)Diaphora 的作者。如果您愿意,可以使用以下链接之一:
如果您有任何问题或需要帮助,请随时在 Github 中提出 issue。如果您更喜欢交互式聊天,可以使用以下 Discord 频道:https://discord.gg/atg34w2xjV
Diaphora 1.2.4 及之前的版本(包括 1.2.4 版)均以 GNU GPL 第 3 版 授权。自 2.0 版起,Diaphora 现在以 GNU Affero GPL 第 3 版许可证 授权。许可证之所以更改,是为了防止想要修改和适配 Diaphora 的公司在不回馈修改内容的情况下,基于这些修改版本提供 Web 服务。
对于 99.99% 的用户来说,许可证变更对他们完全没有影响。如果您的公司需要不同的许可模式,请查看下一节……
为合法公司提供商业支持和咨询服务。如果您需要对目标遇到的问题提供支持或咨询、基于 Diaphora 开发产品、在内部将 Diaphora 与您自己的工具配合使用、用于抄袭检测项目等……您可以通过 [email protected] 与我联系以获取更多详情。
如果您的公司不允许使用 AGPL 许可证,您可以获取 Diaphora 的商业许可证,以便在您的公司中使用,或作为您所任职的任何公司的个人使用(类似于 IDA 的命名许可证概念)。如需了解更多详情,请通过 [email protected] 与我联系。
请记住,阻止您使用 Diaphora 的不是我,而是您的公司。感谢您的理解。
如果您想了解如何自动化导出或差异比较过程,或者想加快操作速度等……您可能需要查看 wiki,那里回答了此类问题。
Diaphora 找到了 CVE-2020-1350 中漏洞被修补的确切函数:

Diaphora 再次找到了 CVE-2023-28231 被修复的确切函数:

CVE-2023-28231。正如 ZDI 的一篇博客所述,该漏洞的修复方式是检查 "ProcessRelayForwardMessage()" 中的中继转发消息数量是否不大于或等于 32(0x20),如下面的伪代码差异比较所示:

Diaphora 进行 Hex-Ray 微码差异比较:

对汇编、伪代码和微码进行差异比较:

使用 Diaphora 3.0 对 CVE-2023-21768 进行差异比较:

这是 Diaphora 对 iOS 9.3.5 中修复的 PEGASUS iOS 内核漏洞进行差异比较的截图:
这是 Diaphora 对 微软公告 MS15-034 进行差异比较的旧截图:
Diaphora 对 MS15-034 进行差异比较
这些是 Diaphora 对 微软公告 MS15-050 进行差异比较的一些截图,摘自 Alex Ionescu 的博客文章 使用 Diaphora 分析 MS15-050。

以下是 Diaphora 对 iOS 10.3.3 与 iOS 11.0 的 iBoot 进行差异比较的截图: