
Настольная рабочая среда для фаззинга AFL++, кросс-архитектурной эмуляции QEMU, разработки харнесов, headless-анализа Ghidra, пользовательских мутаторов и сравнения патчей для разработки эксплойтов.
Rogue Framework — это настольная рабочая среда для AFL++, кросс-архитектурного фаззинга через QEMU, разработки харнессов, облегчённого headless-анализа в Ghidra, пользовательских мутаторов и сравнения патчей. Это намеренно аудируемая рабочая среда, а не обёртка из одних кнопок: каждая сгенерированная команда AFL++ видна перед выполнением, а сгенерированные харнессы представляют собой обычные исходные файлы, которые исследователь может редактировать. Предполагается, что это будет «BurpSuite для разработчиков эксплойтов».
Rogue Framework в настоящее время ориентирован на Linux и Python 3.11+ с PyQt6.
В Kali Linux установщик настраивает окружение Python, клонирует официальную
ветку AFL++ stable и собирает её полный дистрибутив и инструментированный бэкенд QEMU,
затем устанавливает headless-версию Ghidra, нативный/мультиархитектурный GDB, GDB server, эмуляцию
QEMU в режимах user/system, зависимости для компиляции/сборки, пользовательский лаунчер и
постоянные записи PATH в оболочке. AFL++ загружается в игнорируемый локальный
каталог AFLplusplus/ и не распространяется в составе Rogue Framework:
chmod +x install.sh
./install.sh
rogue-framework
Установите также распространённые кросс-компиляторы и их гостевые sysroot-окружения (это намного больший объём загрузки) с помощью:
./install.sh --with-cross-toolchains
Установщик идемпотентен. Используйте ./install.sh --check для проверки существующей установки или ./install.sh --rebuild-afl, чтобы принудительно пересобрать AFL++/QEMU. Используйте ./install.sh --update-afl, чтобы явно обновить загруженную копию репозитория до последней официальной стабильной ревизии.
Запускайте его от имени пользователя рабочего стола; sudo запрашивается только для пакетов apt. Новый PATH не может изменить уже запущенную родительскую оболочку, поэтому либо откройте новый терминал, либо выполните source ~/.zshrc/~/.bashrc, либо запустите Rogue по абсолютному пути ~/.local/bin/rogue-framework, который выводит установщик.
Ручной запуск из копии репозитория по-прежнему доступен:
python3 run.py
Для редактируемой среды:
python3 -m pip install -e .
rogue-framework
Кроссплатформенным динамическим бинарникам требуется соответствующий гостевая sysroot, выбираемая с помощью
QEMU_LD_PREFIX; это по своей сути зависит от целевой платформы/дистрибутива. Путь к
analyzeHeadless в Ghidra можно переопределить в разделе Tools → External tools.
Проект .rgp — это читаемый, версионируемый JSON, содержащий переносимое определение проекта. Крупные и изменяемые артефакты хранятся в его управляемом сопутствующем рабочем пространстве:
example.rgp
example.rgp-work/
workspace.json
project.sqlite3
corpus/
output/
harnesses/
mutators/
analysis/
logs/
runs/
staging/
recovery/
backups/
objects/sha256/
Такое разделение позволяет проверять файлы проекта и избегает встраивания корпусов сбоев, находок, индексов анализа или состояния Ghidra в JSON. workspace.json связывает манифест с правильной идентичностью рабочего пространства, а project.sqlite3 хранит операционное/индексированное состояние. Управляемые ссылки используют workspace://; явно внешние ресурсы используют external://. Пути к инструментам, локальным для машины, и состояние UI хранятся вне переносимого проекта.
Save As создаёт независимый клон с новыми идентичностями проекта и рабочего пространства. Rogue подготавливает и проверяет место назначения перед переключением открытого документа, поэтому неудачное клонирование оставляет исходный проект без изменений. Канонические сохранения используют рекомендательную аренду записи (advisory writer lease) плюс проверки конфликтов по ревизии/SHA-256, сохраняют предыдущие исправные манифесты, публикуют файлы атомарно с fsync и поддерживают снимки для восстановления после сбоев, включая активные черновики редактора. Сгенерированные harness-ы, мутаторы, JSON Ghidra, результаты patch-diff и минимизированные находки также публикуются транзакционно, чтобы неудачная замена не удаляла предыдущий валидный артефакт.
.fuzzRogue может импортировать устаревшие манифесты .fuzz схемы 0–2 и их компаньоны .fuzz-work. Устаревший источник никогда не является каноническим местом назначения: при первом сохранении он обновляется до соседнего проекта .rgp и рабочего пространства .rgp-work, при этом исходные устаревшие файлы сохраняются. Новые проекты и места назначения Save As всегда используют .rgp.