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

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

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

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

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

Категории

Все категории
Loading categories
obfuscation_analysis — Плагин Binary Ninja для анализа и упрощения обфусцированного кода | Kitploit
Инструменты/GitHubGitHub/mrphrazer/obfuscation_analysis
Статический анализАнализ КодаОбратная инженерияАнализ вредоносных программУтилиты и фреймворкиАнализ Бинарных Файлов
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

Плагин Binary Ninja для анализа и упрощения обфусцированного кода

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

Популярное

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

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

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

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

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

Анализ обфускации (v1.3)

Авторы: Tim Blazytko & Nicolò Altamura

Анализ и упрощение обфусцированного кода

Описание:

Obfuscation Analysis — это плагин для Binary Ninja, который избавляет от боли при работе с сильно защищёнными бинарными файлами. Он объединяет несколько специализированных помощников, которые позволяют

  • упрощать выражения смешанной булевой арифметики (MBA) в один клик (на основе msynth)
  • находить и очищать функции с нарушенным дизассемблированием

Некоторые примеры использования можно найти в examples. Кроме того, доклад с REcon «Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications» демонстрирует некоторые сценарии использования. Слайды доступны здесь. Плагин дополняет Obfuscation Detection: после того как подозрительные функции помечены, Obfuscation Analysis помогает их очистить и понять. Со временем будут добавлены новые помощники.

Основные возможности

  • упрощение обфускации смешанной булевой арифметики в представлении декомпилятора Binary Ninja
  • выявление и удаление функций с нарушенным дизассемблированием
  • встраивание функций в представлении декомпилятора
  • эффективная и архитектурно-независимая реализация
  • выполнение в качестве фоновой задачи
  • аккуратная обработка ошибок: краткие сообщения для пользователя, полная трассировка в журнале Debug

Установка

Инструмент можно установить через менеджер плагинов Binary Ninja.

Для ручной установки выполните следующие шаги в папке плагинов Binary Ninja:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_analysis.git
cd obfuscation_analysis

# optionally: use a virtual environment
python -m venv obfana-env
source obfana-env/bin/activate

# install requirements
pip install -r requirements.txt

Если вы используете виртуальное окружение, вам потребуется вручную указать путь к site-packages в настройках Binary Ninja.

Использование

Плагин доступен в верхнем меню Binary Ninja в разделе Plugins -> Obfuscation Analysis.

Plugin Menu

Упрощение MBA

Чтобы упростить арифметическую обфускацию, сначала выделите выражение HLIL, которое хотите упростить, в представлении декомпилятора. Затем выберите Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify. Плагин вычисляет полное выражение, прогоняет его через msynth и вставляет упрощённый результат в виде комментария на той же строке. Короткая анимация ниже показывает весь рабочий процесс:

MBA Simplification Workflow

Упрощение MBA основано на msynth. По умолчанию плагин использует стандартный оракул упрощения msynth, который поставляется вместе с плагином и предварительно настроен. Если вы хотите использовать более крупный или пользовательский оракул, задайте obfuscation_analysis.mba_oracle_path вручную или выберите файл в окне настроек Binary Ninja.

Plugin Settings

Если что-то пойдёт не так, плагин запишет краткое сообщение для пользователя в панель Log; переключите представление журнала на Debug, чтобы увидеть полную трассировку.

Log Output

Возможности

Плагин включает специализированные помощники, нацеленные на типичные препятствия, с которыми вы сталкиваетесь при реверсе защищённых бинарных файлов; каждый из них можно запустить как фоновую задачу из интерфейса или из head-less скриптов. Ниже перечислены возможности, доступные в настоящее время.

Повреждённые функции

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

  • блоков данных, которые дизассемблер ошибочно принял за код
  • обфускационных заглушек, нарушающих линейное дизассемблирование
  • функций, использующих перекрывающиеся инструкции или невыровненные переходы
  • проблем с новыми архитектурами, где встречаются необычные инструкции

Упрощение MBA

Смешанная булева арифметика (MBA) — это техника обфускации, которая прячет простые вычисления в длинных цепочках арифметических и булевых операций. Эта возможность упрощает такие выражения в декомпиляторе. Когда вы выбираете инструкцию HLIL, плагин собирает её полную цепочку вычислений с помощью обратного SSA-среза, ограниченного текущим базовым блоком, транслирует этот срез в Miasm IR, передаёт его в msynth и, наконец, добавляет упрощённый результат в виде комментария в представлении декомпилятора. Эта возможность позволяет

  • сворачивать многострочные MBA-нагромождения в одно читаемое уравнение
  • раскрывать непрозрачные предикаты, основанные на MBA
  • сводить запутанные константные кодировки к их буквальному значению

Встраивание функций

Для текущей выбранной функции этот помощник рекурсивно встраивает каждый вызываемый метод внутри представления декомпилятора, давая Binary Ninja единый самодостаточный IL. Когда все границы исчезают, декомпилятор может распространять данные между функциями, что позволяет глубже сворачивать константы, устранять мёртвый код и в целом делает логику понятнее. Используйте это, чтобы

  • сворачивать цепочки крошечных обёрток, thunk-функций или вспомогательных аксессоров
  • улучшать представление алгоритмов, которые были разбиты между несколькими функциями
  • анализировать схемы обфускации, где логика намеренно разбросана между функциями

Учтите, что HLIL может стать очень большим и медленно отрисовываться на очень больших функциях или глубоких деревьях вызовов. Кроме того, некоторые оптимизации декомпилятора могут стать менее эффективными после объединения всего в единый блок. Чтобы контролировать это, вы можете ограничить глубину встраивания: задайте Settings -> Obfuscation Analysis -> Max Function Inlining Depth верхней границей N (по умолчанию установлено в 1). При ограничении глубины встраиваются только первые N уровней вызовов; более глубокие вызовы не встраиваются.

Ограничения

У плагина есть несколько нюансов, о которых следует знать, большинство из них связано с конвейером упрощения MBA:

  • баг Binary Ninja: в BN 5.0 stable шаг обратного среза может завершиться неудачей из-за отсутствующих приведений типов HLIL: https://github.com/Vector35/binaryninja-api/issues/6371; проблема исправлена в 5.1.7477-de и новее

  • срез ограничен одним базовым блоком: определения переменных, расположенные в блоках-предшественниках, игнорируются (часто зависят от потока управления), поэтому некоторые MBA-термы могут остаться частично нерешёнными

  • пробелы в трансляции HLIL в Miasm IR: не каждая конструкция HLIL имеет корректный эквивалент в Miasm; при неудаче трансляции выражение пропускается и регистрируется ошибка

  • покрытие IL: узлы потока управления и операции с плавающей точкой в настоящее время не транслируются

  • унаследованные ограничения msynth : упрощение MBA наследует все ограничения msynth

Контакты

Для получения дополнительной информации свяжитесь с Tim Blazytko (@mr_phrazer) или Nicolò Altamura (@nicolodev).

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