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

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

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

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

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

Категории

Все категории
Loading categories
Dna — Основанный на LLVM фреймворк для статического анализа бинарных файлов | Kitploit
Инструменты/GitHubGitHub/colton1skees/dna
Статический анализАнализ уязвимостейАнализ КодаЭксплуатацияОбратная инженерияОтладчикиАнализ Бинарных ФайловАнализ Прошивок
GitHubcolton1skees/dna

Dna

Основанный на LLVM фреймворк для статического анализа бинарных файлов

Репозиторий
3653454 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Dna

Dna — это фреймворк для статического анализа бинарных файлов, построенный на основе LLVM. Примечательно, что он написан почти полностью на C#, включая управляемые привязки для LLVM, Remill и Souper.

Функциональность

Dna реализует итеративную реконструкцию графа потока управления, вдохновлённую статьёй SATURN. Он итеративно применяет рекурсивный спуск, подъём (lifting) с использованием remill и решение путей до тех пор, пока не будет восстановлен полный граф потока управления. В случае таблиц переходов мы используем рекурсивный алгоритм на основе Souper и z3 для вычисления множества возможных целей таблицы переходов. Алгоритм итеративного исследования можно найти здесь, а алгоритм решения таблиц переходов — здесь.

После полного исследования графа потока управления его можно перекомпилировать в x86 и повторно вставить в бинарный файл с помощью алгоритмов отсюда здесь и здесь. Хотя скомпилированный код далёк от красоты, он должен работать, если восстановленный граф потока управления корректен. Тем не менее, это всё ещё исследовательский прототип — ожидаются ошибки и граничные случаи. Исследование графа потока управления может не удаться, например, в случае неограниченных таблиц переходов или не поднимаемых инструкций.

Некоторые другие примечательные особенности:

  • Поддерживает большинство таблиц переходов, включая вложенные или так называемые сжатые таблицы переходов MSVC.
  • Поддерживает подъём кода с SEH в LLVM IR. Когда присутствует SEH, в граф потока управления вставляются операторы try/catch и внутренние функции filter. Однако перекомпилятор пока не поддерживает SEH (записи SEH не исправляются), поэтому исключения приведут к сбоям.
  • Включает мощный API для написания проходов LLVM нативным образом на C#. У нас есть привязки, например, для MemorySSA, LoopInfo, деревьев доминаторов, управления конвейером проходов и т.д.
  • Визуализация графов для LLVM IR и бинарных графов потока управления с помощью graphviz или, альтернативно, генератор сценариев для Binary Ninja.

Некоторые предостережения:

  • Поддерживается только x86_64
  • Перекомпилированный код не соответствует CET

Зависимости

  • LLVM/LLVMSharp
  • Remill
  • Souper
  • AsmResolver
  • Rivers

Обратите внимание, что Dna в настоящее время основан на LLVM 17.

VMProtect

Dna содержит плагин девиртуализации VMProtect, расположенный в Dna.BinaryTranslator/VMProtect. Смотрите этот PR для получения дополнительной информации.

Сборка

Dna в настоящее время нацелен на LLVM 17 и предполагается сборка на Windows x64 с Visual Studio 2022. Соберите Dna.LLVMInterop в режиме Release; дерево нативных зависимостей собирается в Release, сборки Debug interop не поддерживаются.

Предварительные требования

  • Visual Studio 2022 с инструментами C++/MSBuild
  • CMake
  • Ninja
  • clang-cl / инструменты LLVM, доступные из цепочки инструментов VS
  • Rust/Cargo для DLL упрощения EqSat
  • .NET SDK 8+

Запускайте команды ниже из оболочки разработчика VS x64 или из другой оболочки, где инструменты C++ VS находятся в PATH.

1. Сборка нативных зависимостей

Суперсборка зависимостей устанавливает LLVM 17, Remill, Z3, XED, gflags/glog и связанные нативные библиотеки в Dna.LLVMInterop/dependencies/install.

root@kitploit:~
cmake -S Dna.LLVMInterop/dependencies `
      -B Dna.LLVMInterop/dependencies/build `
      -G Ninja `
      -DCMAKE_BUILD_TYPE=Release `
      -DCMAKE_C_COMPILER=clang-cl `
      -DCMAKE_CXX_COMPILER=clang-cl

cmake --build Dna.LLVMInterop/dependencies/build

Если вы меняете компилятор, тип сборки или настройки CRT, удалите как Dna.LLVMInterop/dependencies/build, так и Dna.LLVMInterop/dependencies/install перед перенастройкой.

2. Сборка DLL упрощения на Rust

Проекты Dna.Example и упрощения копируют eq_sat.dll из выходного каталога Cargo release.

root@kitploit:~
cargo build --manifest-path Simplifier/EqSat/Cargo.toml --release

3. Сборка решения

root@kitploit:~
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" `
  Dna.sln `
  /restore `
  /p:Configuration=Release `
  /p:Platform=x64 `
  /m
Скачать инструмент