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

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

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

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

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

Категории

Все категории
Loading categories
LCSAJdump — Графовый мультиархитектурный подход на основе ML для обнаружения ROP-гаджетов | Kitploit
Инструменты/GitHubGitHub/chris1sflaggin/lcsajdump
Статический анализЭксплуатацияОбратная инженерияШелл-кодАнализ Бинарных ФайловМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubchris1sflaggin/lcsajdump

LCSAJdump

Графовый мультиархитектурный подход на основе ML для обнаружения ROP-гаджетов

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

Популярное

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

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

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

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

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

Логотип LCSAJdump

LCSAJdump

PyPI Downloads

Универсальный графовый фреймворк для автоматизированного поиска гаджетов

Status License: MIT



LCSAJdump — это фреймворк статического анализа, предназначенный для поиска гаджетов Return-Oriented Programming (ROP) и Jump-Oriented Programming (JOP). В отличие от традиционных сканеров, LCSAJdump является архитектурно-независимым и использует графовый подход для выявления уязвимостей, невидимых для обычных линейных инструментов.


Почему LCSAJdump?

Обычные ROP-сканеры используют линейный подход «скользящего окна» по исполняемым байтам бинарного файла. Этот метод систематически не обнаруживает теневые гаджеты (Shadow Gadgets): цепочки выполнения, проходящие через несмежные блоки памяти, соединённые безусловными переходами или условными ветвлениями.

LCSAJdump преодолевает это ограничение, восстанавливая граф потока управления (CFG) с помощью анализа LCSAJ (Linear Code Sequence and Jump). Моделируя бинарный файл как ориентированный граф базовых блоков, инструмент находит:

  1. Смежные гаджеты: Стандартные линейные последовательности, завершающиеся передачей управления.
  2. Теневые гаджеты (несмежные): Сложные цепочки, обходящие «плохие байты» (например, нулевые байты) за счёт использования инструкций, недостижимых при линейном сканировании.

Ключевые возможности

  • Поддержка множества архитектур: Встроенная поддержка RISC-V (64GC), x86-64 и ARM64; легко расширяется на другие архитектуры через модульные профили.
  • Графовый анализ: Разбивает секцию .text на базовые блоки LCSAJ и восстанавливает связи потоков через собственный обратный граф потока управления (легковесное представление смежности, без тяжёлых графовых зависимостей).
  • Алгоритм Rainbow BFS: Собственный обратный поиск в ширину, начиная с точек завершения потока управления. Теперь включает фильтр уникальности O(1) Early-Drop и жёсткие ограничения на количество инструкций, предотвращающие взрыв состояний и обеспечивающие сверхбыстрый анализ даже на плотных CISC-бинарниках.
  • Ленивое построение графа: При построении графа сохраняются только узлы, достижимые из хвостов гаджетов в пределах --depth шагов, что значительно сокращает память и время сборки для больших бинарников (например, libc) при идентичных результатах.
  • Двухэтапный движок ранжирования: Сочетает сверхбыстрый эвристический базовый уровень (оптимизированный байесовским методом через Optuna) с глубокой ML-моделью LightGBM, уточняющей качество гаджетов на основе структурных и семантических признаков.
  • Вывод с нулевыми накладными расходами: ML-модель встроена нативно и запускается по умолчанию, обрабатывая десятки тысяч узлов за секунды. Она эффективно отфильтровывает шумные переходы и возвращает чистые, хорошо управляемые цепочки гаджетов. Модель размещена на Hugging Face.
  • Параметры обрезки: Настраиваемый коэффициент «Тьмы» (Darkness) для баланса глубины анализа и производительности, предотвращающий бесконечные циклы в циклических графах.

Поддерживаемые архитектуры

(см. Бенчмарки).

LCSAJdump спроектирован как универсальный. В настоящее время поддерживаются:

  • RISC-V 64-bit (RV64GC): Полная поддержка сжатых 16-битных инструкций.
  • x86-64: Обрабатывает инструкции переменной длины с перекрытием. Безопасно навигирует по плотным графам без взрыва памяти.
  • ARM64: Обрабатывает 32-битные инструкции и глубоко отфильтровывает раздутые гаджеты с помощью строгих эвристических штрафов.
  • Другие архитектуры: Могут быть легко добавлены путём определения новых профилей в config.py.

Установка

Через pip (рекомендуется)

pip install lcsajdump

Из исходников (разработка)

git clone [https://github.com/Chris1sFlaggin/LCSAJdump.git](https://github.com/Chris1sFlaggin/LCSAJdump.git)
cd LCSAJdump
pip install -r requirements.txt


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

LCSAJdump предоставляет мощный CLI для точного анализа бинарных файлов:

Стандартный анализ (по умолчанию RISC-V):

python LCSAJdump.py <путь_к_бинарнику>

Расширенный анализ (указание архитектуры и выходного файла):

lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <путь_к_бинарнику>

Экспорт в JSON с фильтром плохих символов:

lcsajdump -a x86_64 -d 20 -k 5 -b "000a0d" --json -o gadgets.json <путь_к_бинарнику>

Примечание: Используйте -o после --json, чтобы сохранить JSON в файл. Без --json -o сохраняет обычный текст.

Сохранение вывода в виде обычного текста:

lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <путь_к_бинарнику>

Анализ всех исполняемых секций:

lcsajdump --all-exec -d 25 -k 10 -l 30 <путь_к_бинарнику>

Принудительное строго алгоритмическое ранжирование (без ML):

lcsajdump --algo <путь_к_бинарнику>

Опции CLI

ФлагТипПо умолчаниюОписание
-a, --archТЕКСТautoЦелевая архитектура (auto, riscv64, x86_64, arm64). Автоопределение из ELF-заголовка.
-d, --depthЦЕЛОЕ20Максимальная глубина поиска в блоках LCSAJ. Определяет длину цепочки.
-k, --darknessЦЕЛОЕ5Порог обрезки — максимальное количество посещений на узел. Выше = больше гаджетов, медленнее сканирование.
-l, --limitЦЕЛОЕ10Максимальное количество гаджетов для отображения в выводе.
-s, --min-scoreЦЕЛОЕ0Минимальная эвристическая оценка для включения гаджета в результаты.
-i, --instructionsЦЕЛОЕ15Максимальное количество инструкций в одном узле LCSAJ.
-v, --verboseФЛАГ—Включить подробный вывод для детализированных результатов по каждому гаджету.
-o, --outputПУТЬ—Запись вывода в файл. По умолчанию обычный текст; используйте с --json для вывода JSON.
-b, --bad-charsТЕКСТ—Шестнадцатеричные байты для фильтрации из адресов гаджетов (например, "000a0d").
--jsonФЛАГ—Вывод гаджетов в структурированном JSON. Комбинируйте с -o для сохранения в файл.
--all-execФЛАГ—Анализировать все исполняемые секции, а не только .text.
-al, --algoФЛАГ—Использовать строго алгоритмическое ранжирование (без ML).
--versionФЛАГ—Показать установленную версию и выйти.
--helpФЛАГ—Показать справку и выйти.


Точность и бенчмарки

LCSAJdump подкреплён строгим, инкрементально проверяемым набором тестов, расположенным в каталоге benchmarkTests/.

За 14 крупных итераций семантического инжиниринга признаков гибридная модель научилась различать гаджеты на основе реальных побочных эффектов в памяти (извлечённых с помощью символического выполнения angr), а не только синтаксических эвристик.

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