Назад к обновлениям
New releaseAug 18, 2026

diaphora v3.4.2

Diaphora, самый продвинутый бесплатный инструмент для сравнения программ с открытым исходным кодом.

Поделиться

δiaphora

Установка

Установите с помощью менеджера плагинов 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 также есть много уникальных возможностей, недоступных ни в одном другом публичном инструменте. Ниже приведён неполный список уникальных возможностей:

  • Возможность переноса структур, перечислений, объединений и typedef.
  • Обнаружение потенциально исправленных уязвимостей для сеансов диффинга патчей.
  • Поддержка единиц компиляции (поиск и диффинг единиц компиляции).
  • Поддержка микрокода.
  • Параллельный диффинг.
  • Эвристики на основе псевдокода.
  • Генерация патчей на основе псевдокода.
  • Диффинг псевдокодов (с подсветкой синтаксиса!).
  • Поддержка скриптов (как для процессов экспорта, так и диффинга).
  • ...

Установка

Diaphora не требует установки: просто скачайте код и запустите скрипт diaphora.py из IDA или из командной строки (только для диффинга уже экспортированных баз данных). Однако его можно интегрировать в IDA в качестве плагина следующим образом:

  • Скопируйте plugins/diaphora_plugin.py и plugins/diaphora_plugin.cfg в каталог плагинов IDA.
  • Отредактируйте diaphora_plugin.cfg и установите значение path, указывающее на каталог Diaphora.

Пожертвования

Вы можете помочь (или отблагодарить) автора Diaphora, сделав пожертвование. Если хотите, можете воспользоваться одной из следующих ссылок:

  • Liberapay
  • Donate

Поддержка

Не стесняйтесь открывать 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:

CVE-2020-1350

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

CVE-2023-28231

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

CVE-2023-28231

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

Диффинг микрокода в графе

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

Ассемблерный код, псевдокод и микрокод

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

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

Это скриншот Diaphora, выполняющего диффинг уязвимости PEGASUS в ядре iOS, исправленной в iOS 9.3.5:

Диффинг iOS 9.3.5

А это старый скриншот Diaphora, выполняющего диффинг бюллетеня Microsoft MS15-034:

Diaphora выполняет диффинг MS15-034

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

Diaphora выполняет диффинг MS15-050, наилучшие совпадения Diaphora выполняет диффинг MS15-050, частичные совпадения Diaphora выполняет диффинг MS15-050, диффинг псевдокода

Diaphora выполняет диффинг LuaBot, совпадения и псевдокод

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

Diaphora выполняет диффинг iBoot из iOS 10.3.3 против iOS 11.0

Категории