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

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

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

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

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

Категории

Все категории
Loading categories
Binvariants — Инвариантно-ориентированный фреймворк фаззинга на уровне регистров для бинарных файлов с закрытым исходным кодом, использующий вероятные нарушения инвариантов для обнаружения сбоев и ошибок в исполняемых бинарных файлах. | Kitploit
Инструменты/GitHubGitHub/futureslab/binvariants
Анализ уязвимостейЭксплуатацияФаззингАнализ Бинарных Файлов
GitHubfutureslab/binvariants

Binvariants

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

Репозиторий
511 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

Binvariants: Фаззинг бинарных файлов, управляемый инвариантами на уровне регистров

Binvariants logo

Этот репозиторий содержит исходный код Binvariants: прототипа фреймворка для фаззинга, который использует нарушения вероятных инвариантов на уровне регистров для фаззинга бинарных файлов.

Эта работа представлена в нашей статье Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants, которая будет опубликована на 2026 ACM International Conference on the Foundations of Software Engineering (FSE'26).

  • Установка Binvariants
  • Использование Binvariants
  • Дополнительные примечания
  • Трофейные баги


Binvariants workflow
Binvariants workflow

Цитирование этого репозитория: @inproceedings{yang:binvariants, title = {Binvariants: Enhancing Fuzzing of Closed-source Binary Executables via Register-level Likely Invariants}, author = {Zao Yang and Stefan Nagy}, year = {2026}, issue_date = {July 2026}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {3}, number = {FSE}, journal = {Proc. ACM Softw. Eng.}}
Разработчики:Zao Yang ([email protected]) и Stefan Nagy ([email protected])
Лицензия:MIT License
Отказ от ответственности:Данное программное обеспечение предоставляется «как есть» без каких-либо гарантий.

Установка Binvariants

Binvariants построен на базе AFL++ и QEMU-AFL. Установите зависимости, необходимые для этих проектов, перед настройкой Binvariants:

root@kitploit:~
sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake cmake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools cargo libgtk-3-dev
# try to install llvm-18 and install the distro default if that fails
sudo apt-get install -y lld-18 llvm-18 llvm-18-dev clang-18 || sudo apt-get install -y lld llvm llvm-dev clang
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/\..*//'|sed 's/.* //')-dev
sudo apt-get install -y meson ninja-build # for QEMU mode

Binvariants включает два компонента:

  • 1-Invariant_Learner
  • 2-Fuzzer

Для сборки каждого перейдите в соответствующий каталог и выполните следующие команды:

root@kitploit:~
./1_patch.sh
./2_build.sh

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

Пример содержит примеры скриптов и тестовые случаи для использования Binvariants с бинарным файлом nconvert. Вы можете изменить скрипты для фаззинга других бинарных файлов.

Настройка

Перед использованием Binvariants отключите ASLR, так как для согласованности адресов базовых блоков между обучением инвариантов и фаззингом требуется их постоянство:

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

Обучение вероятным инвариантам на уровне регистров (RLI)

Для обучения инвариантам выполните:

root@kitploit:~
./Example/1-learn_invs.sh [Binvariants_Root]

Выведенные RLI будут сохранены в каталоге, указанном в переменной BINV_TRACES_DIR в файле 1-learn_invs.sh, с именем: [PROGRAM]_trace_qemu_invs.

Фаззинг с RLI

Чтобы запустить фаззинг с помощью Binvariants, выполните:

root@kitploit:~
./Example/2-fuzz.sh [Binvariants_Root] [Fuzz_Time] [Trial_Number]

Например, запустите 1-й прогон 48-часовой кампании фаззинга из корневого каталога Binvariants:

root@kitploit:~
./Example/2-fuzz.sh $PWD 48h 1

Дополнительные примечания

Ниже приведены возможные улучшения для Binvariants.

Адаптивное обучение инвариантам

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

Возможные соображения по дизайну:

  1. Если инварианты обновляются во время выполнения тестового примера, который позже приводит к сбою или таймауту, обновление, возможно, придется откатить. Практическое решение — применять обновления к копии инвариантов и фиксировать их только в случае нормального завершения теста (т.е. FSRV_RUN_OK).
  2. По мере выполнения фаззинга и обновления инвариантов нарушения будут естественным образом становиться менее частыми. Это может привести к тому, что AFL++ будет многократно выбирать тестовые случаи ранних стадий (которые вызывают больше нарушений, но представляют менее развитые состояния программы). Возможно, потребуется корректировка веса/perf_score/top_rated на стороне AFL++, чтобы обеспечить выбор более поздних, репрезентативных тестовых случаев.

Межблочные инварианты

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

Трофейные баги

Если вы найдете другие баги с помощью Binvariants, сообщите нам, пожалуйста!

Благодарности

Эта работа основана на исследованиях, поддержанных Национальным научным фондом (NSF) в рамках награды № 2419798, а также Агентством перспективных исследовательских проектов Министерства обороны США (DARPA) в рамках награды № FA8750-24-2-0002, субнаграда № GR105409-SUB00001384.

Скачать инструмент
ПрограммыСообщенные баги
nconverthttps://newsgroup.xnview.com/viewtopic.php?t=49598
xls2csvhttps://github.com/vbwagner/catdoc/issues/6, https://github.com/vbwagner/catdoc/issues/7, https://github.com/vbwagner/catdoc/issues/8, https://github.com/vbwagner/catdoc/issues/9, https://github.com/vbwagner/catdoc/issues/10, https://github.com/vbwagner/catdoc/issues/11, https://github.com/vbwagner/catdoc/issues/12, https://github.com/vbwagner/catdoc/issues/13
gpmfhttps://github.com/gopro/gpmf-parser/issues/201, https://github.com/gopro/gpmf-parser/issues/202, https://github.com/gopro/gpmf-parser/issues/203
hdf5https://github.com/HDFGroup/hdf5/issues/5831, https://github.com/HDFGroup/hdf5/issues/5832, https://github.com/HDFGroup/hdf5/issues/5834
stormhttps://github.com/ladislav-zezula/StormLib/issues/397, https://github.com/ladislav-zezula/StormLib/issues/398
mp4splithttps://github.com/axiomatic-systems/Bento4/issues/1038, https://github.com/axiomatic-systems/Bento4/issues/1039
cpdfhttps://github.com/johnwhitington/camlpdf/issues/75
sfconverthttps://github.com/mpruett/audiofile/issues/73