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

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

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

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

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

Категории

Все категории
Loading categories
xfg_analyzer — Плагин для Binary Ninja, использующий хэши XFG, полученные перебором, для восстановления точных прототипов функций. | Kitploit
Инструменты/GitHubGitHub/ea/xfg_analyzer
Статический анализОбратная инженерияАнализ Бинарных Файлов
GitHubea/xfg_analyzer

xfg_analyzer

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

Репозиторий
1622 лет назадЕщё не проверено

Популярное

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

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

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

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

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

Восстановление прототипов функций методом перебора XFG-хешей

Этот репозиторий содержит скрипты для генерации и поиска хешей eXtended Flow Guard.

Развёрнутое описание того, как это работает, доступно в выпуске 22 журнала International Journal Of Proof Of Concept || GTFO.

Моя работа над этим PoC была значительно упрощена ребятами из Quarkslab, которые провели обширный реверс-инжиниринг соответствующих частей компилятора MS. Их подробный разбор того, как вычисляются XFG-хеши, можно прочитать здесь: https://blog.quarkslab.com/how-the-msvc-compiler-generates-xfg-function-prototype-hashes.html

Примечание: это никоим образом не «ломает» XFG как защиту от эксплуатации, это просто использует её побочные эффекты для выявления функций без символов.

Если кратко, XFG в том виде, в котором он реализован в Windows, расширяет и ужесточает защиту Control Flow Guard от эксплуатации, ограничивая возможные цели косвенных вызовов функций не только допустимыми точками входа в функции, но и функциями с подходящей сигнатурой. Для этого для каждой функции вычисляется XFG-хеш, и во время выполнения выполняется его проверка. Хеши основаны только на прототипе функции (то есть на соглашении о вызове, аргументах и их типах). Таким образом, мы можем предвычислить их для известных типов, а затем искать их для функций в неизвестных бинарных файлах.

Если поиск успешен, мы можем быть на 100% уверены в точном количестве и типах всех аргументов, а также в возвращаемом значении функции. Это может быть чрезвычайно полезно для бинарных файлов и функций без публичных символов.

Я приглашаю вас прочитать полную статью в PoC||GTFO, доступную с ближайшего зеркала.

Скрипты:

  • gen_function_prototypes.py — просто выводит файл, содержащий все возможные прототипы с заданными типами
  • gen_hash_from_ast.py — читает .c файл, разбирает его, вычисляет хеш и сохраняет его в базу данных (предназначен для использования с файлами, сгенерированными gen_function_prototypes.py)
  • xfg_analyzer.py — плагин Binary Ninja, который ищет XFG-хеши в бинарном файле и ищет их в базе данных
  • find_hash.py — простой ярлык для поиска заданных хешей в базе данных

Чтобы использовать эти скрипты, сначала нужно изменить gen_function_prototypes.py, добавив «примитивные типы», структуры или перечисления, специфичные для вашей цели. Также потребуется выбрать, сколько аргументов вы хотите перебирать. До 3 занимает минуту, до 4 — день...

После генерации прототипов функций всех комбинаций нужно запустить gen_hash_from_ast.py, который построчно разберёт ранее сгенерированный файл и создаст соответствующий XFG-хеш. Когда это будет завершено, у вас будет SQLite-база данных прототипов функций с их XFG-хешами. В xfg_analyzer.py включён очень простой плагин Binary Ninja. При запуске против бинарного файла, защищённого XFG, он найдёт все XFG-хеши, найдёт их в базе данных и, если совпадение найдено, применит новый прототип функции к определённой функции.

Имейте в виду, что это всего лишь PoC. Чтобы быть действительно полезным, должна быть сгенерирована гигантская база данных хешей (возможно, заполненная всеми именами структур и перечислений из заголовочных файлов Windows) и предоставлена для онлайн-поиска. Кроме того, расширение этой идеи на XFG-хеши C++ было бы очень интересным проектом.

Не стесняйтесь использовать код из этого репозитория любым способом. Если вы найдёте его полезным, я хотел бы услышать о вас.

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