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

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

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

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

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

Категории

Все категории
Loading categories
xtride — Инструмент восстановления типов на основе N-грамм для бинарных файлов, восстанавливающий структуры и сигнатуры функций из декомпилированного кода с высокой пропускной способностью и действенными оценками уверенности для автоматизированных конвейеров. | Kitploit
Инструменты/GitHubGitHub/pr0me/xtride
Статический анализОбратная инженерияОтладчикиАнализ Бинарных ФайловМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеАнализ Прошивок
GitHubpr0me/xtride

xtride

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

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

Популярное

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

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

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

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

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

XTRIDE: Практическое восстановление типов на основе N-грамм

Введение

Статья XTRIDE Мы представляем XTRIDE, улучшенный подход на основе n-грамм (ср. STRIDE) к восстановлению типов для бинарных файлов, ориентированный на практичность: высокая оптимизированная пропускная способность и применимые оценки уверенности позволяют развертывание в автоматизированных конвейерах. По сравнению с современным уровнем восстановления структур, наш метод достигает сравнимой производительности, будучи при этом в 70–2300 раз быстрее.




Инструкции по сборке

Инструмент CLI в ./bin требует установки библиотеки версии 1.8.4 или новее для hdf5 (согласно документации крейта). Сборка с последней версией не удается на MacOS, мы рекомендуем установить hdf5 v1.10, например, с помощью

root@kitploit:~
brew install [email protected]

Как использовать инструмент CLI

  1. создайте токенизированный набор данных формы, см. Подготовка набора данных.
  2. создайте разбиения набора данных
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. постройте словарь
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. постройте n-граммные базы данных для n = {2, 4, 8, 12, 48} (укажите в bin/src/db_creation.rs).
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. Оцените на разбиении тестового набора
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

Режим восстановления

Используйте recover для запуска восстановления типов с максимальной отдачей на одном листинге декомпилированной функции (ввод в виде обычного текста).

Ожидания от ввода

  • одна функция на файл
  • рекомендуются имена символов в стиле декомпилятора (например, var*, param*, stack*, iVar*, sub_*)
  • прогнозы настолько хороши, насколько хорошо выравнивание между вашим стилем ввода и распределением обучающих данных

Пример базового использования

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

Необязательные флаги

  • --fn-vocab <путь>: явный путь к словарю функций (если опущен, recover пытается использовать <vocab_stem>.fn.vocab)
  • --strip: включить устаревший полный режим strip (обратная совместимость с DIRT / STRIDE, используйте с осторожностью)
  • --threshold <число с плавающей точкой>: скрывать прогнозы ниже порога оценки (1.0 отключает фильтрацию)
  • --top-k <целое>: количество кандидатов, показываемых на символ (по умолчанию: 5)

Интерпретация вывода

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

Предоставленные модели

Мы включаем предварительно обработанные данные для воспроизведения моделей $XTRIDE_{PLUS}$, описанных в нашей статье, в каталог ./data. Файлы JSONL можно напрямую использовать для извлечения словаря и обучения модели (шаги 3 и далее, выберите конфигурацию с 16 базами данных в bin/src/db_creation.rs). Хотя обучающий набор данных включает большой объем данных из множества различных бинарных файлов, мы хотим еще раз подчеркнуть, что обобщаемость подходов на основе n-грамм ограничена. Мы всегда рекомендуем добавлять в набор данных образцы из конкретной предметной области, в зависимости от того, где вы планируете применять модель.

Предоставленный набор данных содержит образцы, которые

  • очищены (stripped)
  • являются ELF-бинарными файлами
  • собраны из Ghidra

Попытка выполнить вывод на образцах, которые отклоняются от этого распределения, скорее всего, приведет к непригодным для использования прогнозам.

Наборы данных

Дополнительная информация о том, как извлекать данные для новых наборов данных или переобучать и оценивать на наборе данных DIRT, включена в документацию по подготовке наборов данных.

Интеграция с декомпилятором

Модуль retyper демонстрирует эталонную реализацию глубокой интеграции системы восстановления типов XTRIDE с декомпилятором. Функциональность отключена за флагом функции и может быть активирована с помощью cargo build --features retyper.

Мы используем фреймворк BIAS от Binarly для анализа программ, который был опубликован в рамках VulHunt. Фреймворк включает выразительную систему типов, которая бесшовно интегрируется с форком бэкенда декомпилятора Ghidra, используемым для подъема внутренне восстановленных представлений в псевдо-C. Мы расширили этот форк и его FFI с помощью интерфейсов, которые позволяют напрямую изменять типы переменных в декомпиляторе. Это позволяет напрямую применять выведенные типы в контексте декомпилятора, включая распространение типов полей и тому подобное.

До:После:
без типовтипы восстановлены

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

В целом, любая интеграция с декомпилятором требует уровня перевода от текстовых прогнозов (из словаря) к представлению, специфичному для инструмента. Формат, используемый в DIRT, достаточно выразителен для этого, но требует рекурсивного разрешения типов (например, в структурах) и ручного вычисления смещений и размеров (вся необходимая информация есть, включая аннотации заполнения). Для модуля retyper требуется, чтобы типы в словаре (и, следовательно, в обучающем наборе данных) были сериализованными типами BIAS. В настоящее время мы не планируем публиковать полный конвейер для извлечения данных и создания наборов данных, поэтому считаем эту реализацию скорее эталонной, чем полноценным подтверждением концепции.

Цитирование

Если вы используете код, методы или результаты, предоставленные с этим репозиторием и соответствующей статьей, пожалуйста, цитируйте нашу работу следующим образом:

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
Скачать инструмент