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

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

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

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

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

Категории

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

LCSAJdump

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

2722 месяцев назадПроверено 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 (рекомендуется)

root@kitploit:~
pip install lcsajdump

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

root@kitploit:~
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):

root@kitploit:~
python LCSAJdump.py <путь_к_бинарнику>

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

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

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

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

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

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

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

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

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

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

root@kitploit:~
lcsajdump --algo <путь_к_бинарнику>

Опции CLI



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

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

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

Оценка с помощью групповой 5-кратной кросс-валидации (тестовые бинарники никогда не использовались в обучении) показала для ранжировщика NDCG@1 = 0.914 ± 0.047 и NDCG@10 = 0.922 ± 0.052, что означает, что наиболее полезные гаджеты последовательно оказываются в верхней части вывода. Двухэтапный движок успешно отдаёт приоритет чистым последовательностям извлечения стека и вызовам типа ret2csu, при этом сильно штрафуя подверженные сбоям переходы с фиксированным смещением, которые обманывают традиционные статические сканеры.


Руководство для разработчиков и ML-специалистов

Репозиторий структурирован так, чтобы поддерживать как конечных пользователей, так и исследователей ML.

  • Продуктовый движок: Основной CLI бесшовно интегрирует механизм вывода с использованием моделей, размещённых на Hugging Face, что не требует ручной загрузки модели.
  • ML-конвейер: Каталог lcsajdump/ml_study/ содержит полный конвейер, использованный для обучения моделей:
    • build_dataset.py: Извлекает структурные и семантические признаки из набора CTF-бинарников.
    • train_model.py: Обучает модель LightGBM LambdaRank и выводит .pkl-модели.
    • kfold_cv.py: Валидирует набор данных с помощью K-Fold кросс-валидации.

Вклад в проект (форки приветствуются!)

Фреймворк открыт для новых реализаций. Чтобы добавить новую архитектуру:

  1. Форкните репозиторий.
  2. Откройте lcsajdump/core/config.py.
  3. Добавьте новый профиль в словарь ARCH_PROFILES, определив мнемоники переходов, мнемоники возврата и регистры для нужной архитектуры (например, x86_64).
  4. Отправьте Pull Request.

Лицензия

Этот проект выпущен под лицензией MIT. Подробнее см. в файле LICENSE.


Ссылка на проект

Посетите веб-страницу проекта: Страница LCSAJdump


Создано Chris1sflaggin в рамках исследовательского проекта по автоматизированному поиску гаджетов.
Скачать инструмент
ФлагТипПо умолчаниюОписание
-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ФЛАГ—Показать справку и выйти.