
Diaphora, самый продвинутый бесплатный инструмент для сравнения программ с открытым исходным кодом.
Установите с помощью менеджера плагинов Hex-Rays:
hcli plugin install https://github.com/joxeankoret/diaphora/archive/refs/tags/3.4.2.zip
Инструкции по установке вручную приведены ниже.
Diaphora (διαφορά, греческое слово, означающее «различие») версии 3.4 — самый продвинутый инструмент диффинга программ (работающий как плагин IDA) на сегодняшний день (2026). Он был впервые представлен на SyScan 2015 и с тех пор активно поддерживается: Diaphora уже 11 лет портируется на каждую минорную версию IDA, начиная с 6.8 и до 9.4.
Diaphora поддерживает версии IDA >= 7.4, поскольку код работает только на Python 3.X (последней протестированной версией была Python 3.11).
Diaphora имеет множество наиболее распространённых функций диффинга программ (бинарного диффинга), которые вы могли бы ожидать, например:
Однако у Diaphora также есть много уникальных возможностей, недоступных ни в одном другом публичном инструменте. Ниже приведён неполный список уникальных возможностей:
Diaphora не требует установки: просто скачайте код и запустите скрипт diaphora.py из IDA или из командной строки (только для диффинга уже экспортированных баз данных). Однако его можно интегрировать в IDA в качестве плагина следующим образом:
plugins/diaphora_plugin.py и plugins/diaphora_plugin.cfg в каталог плагинов IDA.diaphora_plugin.cfg и установите значение path, указывающее на каталог Diaphora.Вы можете помочь (или отблагодарить) автора Diaphora, сделав пожертвование. Если хотите, можете воспользоваться одной из следующих ссылок:
Не стесняйтесь открывать issues на GitHub, если у вас возникли проблемы или нужна помощь. Если вы предпочитаете интерактивное общение, можете воспользоваться следующим Discord-каналом: https://discord.gg/atg34w2xjV
Версии Diaphora до 1.2.4 включительно распространялись под лицензией GNU GPL версии 3. Начиная с версии 2.0, Diaphora распространяется под лицензией GNU Affero GPL версии 3. Лицензия была изменена, чтобы компании, желающие модифицировать и адаптировать Diaphora, не могли предлагать веб-сервисы на основе этих модифицированных версий, не внося изменения обратно в проект.
Для 99.99% пользователей изменение лицензии вообще ни на что не влияет. Если вашей компании нужна другая модель лицензирования, обратитесь к следующему разделу...
Коммерческая поддержка и консультации предлагаются для легальных компаний. Если вам нужна поддержка или консультации по проблемам с вашим целевым объектом, для разработки продуктов на основе Diaphora, для внутреннего использования Diaphora во взаимодействии с вашими собственными инструментами, для проектов по обнаружению плагиата и т. д., вы можете связаться со мной по адресу [email protected] для получения дополнительной информации.
Если ваша компания не позволяет использовать лицензию AGPL, вы можете приобрести коммерческие лицензии Diaphora для использования в своей компании или в качестве частного лица в любой компании, где вы работаете (по аналогии с именными лицензиями IDA). Для получения дополнительной информации свяжитесь со мной по адресу [email protected].
Пожалуйста, помните, что не я мешаю вам использовать Diaphora, а ваша компания. Спасибо за понимание.
Если вы ищете способы автоматизировать процесс экспорта или диффинга, или хотите ускорить операции и т. д., возможно, вам стоит заглянуть в вики, где даны ответы на такие вопросы.
Diaphora находит точную функцию, в которой была исправлена уязвимость CVE-2020-1350:

Diaphora, снова находящий точную функцию, в которой была исправлена CVE-2023-28231:

CVE-2023-28231. Как объясняется в блоге ZDI, уязвимость была исправлена проверкой того, что количество ретранслируемых пересылаемых сообщений в "ProcessRelayForwardMessage()" не больше или равно 32 (0x20), как показано на следующем диффинге псевдокода:

Diaphora выполняет диффинг микрокода Hex-Ray:

Диффинг ассемблерного кода, псевдокода и микрокода:

Диффинг CVE-2023-21768 с помощью Diaphora 3.0:

Это скриншот Diaphora, выполняющего диффинг уязвимости PEGASUS в ядре iOS, исправленной в iOS 9.3.5:
А это старый скриншот Diaphora, выполняющего диффинг бюллетеня Microsoft MS15-034:
Diaphora выполняет диффинг MS15-034
Это несколько скриншотов Diaphora, выполняющего диффинг бюллетеня Microsoft MS15-050, взятых из поста в блоге Анализ MS15-050 с помощью Diaphora от Алекса Йонеску.

Вот скриншот Diaphora, выполняющего диффинг iBoot из iOS 10.3.3 против iOS 11.0: