Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bindiff — Быстро находите различия и сходства в дизассемблированном коде | Kitploit
Инструменты/GitHubGitHub/google/bindiff
Статический анализАнализ уязвимостейОбратная инженерияАнализ вредоносных программАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и ОбразованиеАнализ Прошивок
GitHubgoogle/bindiff

bindiff

Быстро находите различия и сходства в дизассемблированном коде

Репозиторий
3.1k2382 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Логотип BinDiff

Авторские права 2011-2026 Google LLC.

BinDiff

Этот репозиторий содержит исходный код BinDiff. BinDiff — это инструмент с открытым исходным кодом для сравнения бинарных файлов, позволяющий быстро находить различия и сходства в дизассемблированном коде.

Содержание

  • О BinDiff
  • Быстрый старт
  • Документация
  • Карта кода
  • Сборка из исходников
  • Лицензия
  • Участие в проекте

О BinDiff

BinDiff — это инструмент с открытым исходным кодом для сравнения бинарных файлов, который помогает исследователям уязвимостей и инженерам быстро находить различия и сходства в дизассемблированном коде.

С помощью BinDiff исследователи могут выявлять и изолировать исправления уязвимостей в патчах, предоставленных вендорами. Его также можно использовать для переноса символов и комментариев между дизассемблированными версиями одного и того же бинарного файла. Это упрощает отслеживание изменений со временем, позволяет организациям сохранять результаты анализа и обеспечивает передачу знаний между бинарными аналитиками.

Варианты использования

  • Сравнение бинарных файлов для x86, MIPS, ARM, PowerPC и других архитектур, поддерживаемых популярными дизассемблерами.
  • Выявление идентичных и похожих функций в разных бинарных файлах
  • Перенос имён функций, комментариев и локальных имён из одной дизассемблированной версии в другую
  • Обнаружение и подсветка изменений между двумя вариантами одной и той же функции

Быстрый старт

Если вы хотите просто начать использовать BinDiff, загрузите готовые установочные пакеты со страницы релизов.

Примечание: BinDiff полагается на отдельный дизассемблер. Из коробки он поддерживает IDA Pro, Binary Ninja и Ghidra. На странице дизассемблеров перечислены поддерживаемые конфигурации.

Документация

Подмножество существующего руководства доступно в каталоге docs/.

Карта кода

BinDiff содержит следующие компоненты:

  • cmake — файлы сборки CMake, объявляющие внешние зависимости
  • fixtures — набор тестовых файлов для проверки основного движка BinDiff
  • ida — интеграция с дизассемблером IDA Pro
  • java — исходный код на Java. Содержит пользовательский интерфейс визуального сравнения BinDiff и соответствующую библиотеку утилит.
  • match — алгоритмы сопоставления для основного движка BinDiff
  • packaging — исходники пакетов для установочных пакетов
  • tools — вспомогательные исполняемые файлы, поставляемые с продуктом

Сборка из исходников

Приведённых ниже инструкций должно быть достаточно для сборки как нативного кода, так и компонентов на Java.

Более подробные инструкции по сборке будут добавлены позже. Они включают готовые Dockerfile и скрипты для сборки установочных пакетов.

Нативный код

BinDiff использует CMake для генерации файлов сборки для компонентов, состоящих из нативного кода C++.

Требуются следующие зависимости для сборки:

  • BinExport 12 — сопутствующий плагин к BinDiff, который также содержит много общего кода
  • Boost 1.83.0 или выше (частичная копия 1.83.0 поставляется с BinExport и будет использоваться автоматически)
  • CMake 3.14 или выше
  • Ninja для быстрой сборки
  • GCC 15 или недавняя версия Clang на Linux/macOS. На Windows используйте компилятор Visual Studio 2022 и Windows SDK для Windows 11.
  • Git 1.8 или выше
  • Зависимости, которые будут загружены:
    • Abseil, GoogleTest, Protocol Buffers (3.14) и SQLite3
    • Binary Ninja SDK
    • IDA SDK

Общие шаги сборки одинаковы для Windows, Linux и macOS. Ниже показаны команды для Linux.

Затем настройте каталог сборки и сгенерируйте файлы сборки:

root@kitploit:~
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release

Наконец, выполните фактическую сборку. Бинарные файлы будут размещены в build/:

root@kitploit:~
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release

Сборка без IDA

Чтобы собрать без IDA, просто измените описанный выше шаг настройки на

root@kitploit:~
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
  -DBINEXPORT_ENABLE_IDAPRO=OFF

Java GUI и yFiles

Сборка GUI на Java требует коммерческой сторонней библиотеки визуализации графов yFiles для отображения и компоновки графов. Эта библиотека чрезвычайно мощная и её нелегко заменить.

Для сборки BinDiff использует Gradle 6.x и Java 11 LTS. Обратитесь к руководству по установке за инструкциями по установке.

Если вы являетесь владельцем лицензии yFiles, задайте переменную окружения YFILES_DIR, указав каталог, содержащий y.jar и ysvg.jar из yFiles.

Примечание: BinDiff по-прежнему использует более старую ветку 2.x yFiles.

Затем вызовите Gradle для загрузки внешних зависимостей и сборки:

Windows:

root@kitploit:~
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar

Linux или macOS:

root@kitploit:~
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar

После этого в каталоге ui/build/libs в подкаталоге java должен находиться автономный артефакт bindiff-ui-all.jar, который можно запустить стандартной командой java -jar.

Дополнительное чтение / Похожие инструменты

Оригинальные статьи, описывающие общие идеи, лежащие в основе BinDiff:

  • Thomas Dullien and Rolf Rolles. Graph-Based Comparison of Executable Objects. bindiffsstic05-1.pdf. SSTIC ’05, Symposium sur la Sécurité des Technologies de l’Information et des Communications. 2005.
  • Halvar Flake. Structural Comparison of Executable Objects. dimva_paper2.pdf. pp 161-173. Detection of Intrusions and Malware & Vulnerability Assessment. 2004.3-88579-375-X.

Другие инструменты в той же области задач:

  • Diaphora — продвинутый инструмент сравнения программ, реализующий многие из тех же идей.
  • TurboDiff — ныне не поддерживаемый плагин сравнения программ для IDA Pro.

Проекты, использующие BinDiff:

  • VxSig — инструмент для автоматической генерации байтовых сигнатур антивирусов из наборов похожих бинарных файлов.

Лицензия

BinDiff распространяется на условиях лицензии Apache. См. LICENSE для получения дополнительной информации.

Участие в проекте

Если вы хотите внести свой вклад, пожалуйста, прочитайте CONTRIBUTING.md перед отправкой pull request. Вы также можете сообщать об ошибках или отправлять запросы на новые функции.

Скачать инструмент