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

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

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

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

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

Категории

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

bindiff

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

Репозиторий
3.1k2384810 ч 51 мин назадПроверено 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. Вы также можете сообщать об ошибках или отправлять запросы на новые функции.

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