joxeankoret/diaphora

GitHub: joxeankoret/diaphora

一款作为 IDA 插件运行的先进开源程序 diffing 工具,用于比对二进制文件间的差异并辅助漏洞分析。

Stars: 4331 | Forks: 412

# δiaphora

## 安装 使用 [Hex-Rays plugin manager](https://hcli.docs.hex-rays.com/user-guide/plugin-manager/) 安装: ``` hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.4.1.zip ``` 以下是手动安装说明。 Diaphora(διαφορά,希腊语意为“差异”)版本 3.4 是迄今为止(2026 年)最先进的程序 diffing 工具(作为 IDA 插件运行)。它最初在 2015 年 SyScan 大会上发布,并自此得到积极维护:11 年来,Diaphora 已被移植到从 6.8 到 9.4 的每一个 IDA 小版本中。 Diaphora 支持 IDA >= 7.4 版本,因为代码仅在 Python 3.X(Python 3.11 是最后测试的版本)下运行。 ## 独有功能 Diaphora 具备许多您可能预期的最常见程序 diffing(bindiffing)功能,例如: * Diffing 汇编。 * Diffing 控制流图。 * 迁移符号名称和注释。 * 添加手动匹配。 * 相似度比率计算。 * 批量自动化。 * Call graph 匹配计算。 * 数十种基于图论、汇编、bytes、函数特征等的启发式算法... 然而,Diaphora 还具有许多在任何其他公开工具中都不具备的独有功能。以下是不完整的独有功能列表: * 能够迁移 structs、enums、unions 和 typedefs。 * 针对 patch diffing 会话的潜在已修复漏洞检测。 * 支持编译单元(发现并 diff 编译单元)。 * 支持 Microcode。 * 并行 diffing。 * 基于 Pseudo-code 的启发式算法。 * Pseudo-code 补丁生成。 * Diffing pseudo-codes(带有语法高亮!)。 * 脚本支持(同时支持导出和 diffing 流程)。 * ... ## 安装 Diaphora 无需安装:只需下载代码并在 IDA 中或通过命令行运行脚本 `diaphora.py`(仅用于 diffing 已导出的数据库)。但是,您可以通过执行以下操作将其作为[插件](https://github.com/joxeankoret/diaphora/tree/master/plugin)集成到 IDA 中: * 将 `plugins/diaphora_plugin.py` 和 `plugins/diaphora_plugin.cfg` 复制到 IDA 的 plugins 目录。 * 编辑 `diaphora_plugin.cfg` 并将路径值设置为 Diaphora 的目录。 ## 支持 如果您有任何问题或需要帮助,请随时在 Github 上提交 issue。如果您更喜欢交互式聊天,可以使用以下 Discord 频道:https://discord.gg/atg34w2xjV ## 许可授权 Diaphora 1.2.4 及之前版本均根据 [GNU GPL version 3](https://www.gnu.org/licenses/gpl-3.0.html) 授权。自 2.0 版本起,Diaphora 现根据 [GNU Affero GPL version 3 license](https://www.gnu.org/licenses/agpl-3.0.html) 授权。更改许可证是为了防止那些想要修改和适配 Diaphora 的公司在不回馈更改的情况下提供基于这些修改版本的 Web 服务。 对于 99.99% 的用户来说,许可证的更改对他们没有任何影响。如果您的公司需要不同的许可模式,请查看下一节... ## 商业支持与咨询 我们为合法企业提供商业支持与咨询服务。如果您需要关于目标问题的支持或咨询,或者想要开发基于 Diaphora 的产品、在内部使用 Diaphora 与您自己的工具进行交互、用于抄袭检测项目等... 您可以通过 admin@joxeankoret.com 联系我获取更多详细信息。 ## 许可问题 如果您的公司不允许使用 AGPL 许可证,您可以获取 Diaphora 的商业许可证,以便在您的公司中使用它,或者在您工作的任何公司中以个人身份使用它(类似于 IDA 的指定许可证概念)。有关更多详细信息,请通过 admin@joxeankoret.com 联系我。 请记住,阻止您使用 Diaphora 的不是我:而是您的公司。感谢您的理解。 ## Wiki 如果您正在寻找如何自动化导出或 diffing 流程的方法,或者您想要加速操作等... 您可能想查看一下 [wiki](https://github.com/joxeankoret/diaphora/wiki),那里解答了此类问题。 ## 截图 Diaphora 找到 CVE-2020-1350 中漏洞被修复的确切函数: ![CVE-2020-1350](https://files.mastodon.social/media_attachments/files/110/313/141/968/158/099/original/607189c509ec1cc4.png) Diaphora 再次找到了修复 CVE-2023-28231 的确切函数: ![CVE-2023-28231](https://files.mastodon.social/media_attachments/files/110/313/148/945/529/051/original/28e032f21be414a3.png) CVE-2023-28231。正如 ZDI 在一篇博客中所解释的那样,该漏洞的修复方式是检查 "ProcessRelayForwardMessage()" 中转发消息的数量是否不大于或等于 32 (0x20),如下面的 pseudo-code diffing 所示: ![CVE-2023-28231](https://files.mastodon.social/media_attachments/files/110/300/368/934/189/808/original/fe3392db2b8234e9.png) Diaphora 正在进行 Hex-Ray 的 microcode diffing: ![Diffing microcode in a graph](https://files.mastodon.social/media_attachments/files/110/157/157/910/926/533/original/6c5975e15c378cb5.png) Diffing 汇编、pseudo-code 和 microcode: ![Assembly, pseudo-code and microcode](https://files.mastodon.social/media_attachments/files/110/102/237/646/074/440/original/4a816df5069691c3.png) 使用 Diaphora 3.0 Diffing CVE-2023-21768: ![Diffing CVE-2023-21768 with #Diaphora 3.0](https://files.mastodon.social/media_attachments/files/110/066/930/153/215/408/original/86b06ae90d57d5a1.png) 这是一张 Diaphora diff iOS 9.3.5 中修复的 PEGASUS iOS 内核漏洞的截图: ![Diffing iOS 9.3.5 diff](http://sektioneins.de/images/diaphora1.png) 这是一张 Diaphora diffing [Microsoft 公告 MS15-034](https://technet.microsoft.com/en-us/library/security/ms15-034.aspx) 的旧截图: ![Diaphora diffing MS15-034](https://pbs.twimg.com/media/CCnruP_W0AA8ksc.png:large) 这些是 Diaphora diffing [Microsoft 公告 MS15-050]( https://technet.microsoft.com/en-us/library/security/ms15-050.aspx) 的一些截图,摘自 Alex Ionescu 的博客文章 [使用 Diaphora 分析 MS15-050](http://www.alex-ionescu.com/?p=271)。 ![Diaphora diffing MS15-050, best matches](http://www.alex-ionescu.com/wp-content/uploads/diaphora2.png) ![Diaphora diffing MS15-050, partial matches](http://www.alex-ionescu.com/wp-content/uploads/diaphora3.png) ![Diaphora diffing MS15-050, diffing pseudo-code](http://www.alex-ionescu.com/wp-content/uploads/diaphora1.png) ![Diaphora diffing a LuaBot, matches and pseudo-code](https://1.bp.blogspot.com/-O5UjSOyjCgg/V5byA-ozXVI/AAAAAAAABaY/yRTMDTSD9zI0mSy4AsHN21ZYf_YvctnkwCLcB/s1600/evs-compile.png) 这是 Diaphora diffing [iOS 10.3.3 与 iOS 11.0 的 iBoot](https://blog.matteyeux.com/hacking/2018/04/04/diaphora-diff-and-ida.html) 的截图: ![Diaphora diffing iBoot from iOS 10.3.3 against iOS 11.0](https://blog.matteyeux.com/images/newgraph.PNG)
标签:DNS 反向解析, IDA插件, 二进制分析, 云安全运维, 云资产清单, 域名收集, 差异比对, 逆向工具, 逆向工程