
Настольная рабочая среда для фаззинга 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
бэкенд, затем устанавливает Ghidra headless, нативный/мультиархитектурный GDB,
GDB server, эмуляцию QEMU user/system, компиляторы и зависимости сборки, пользовательский лаунчер и
постоянные записи PATH в shell. 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://. Локальные пути к инструментам и состояние интерфейса хранятся вне переносимого проекта.
«Save As» создаёт независимую копию с новыми идентичностями проекта и рабочего каталога. Rogue подготавливает и проверяет целевой каталог перед переключением открытого документа, поэтому неудачное клонирование оставляет исходный проект неизменным. Канонические сохранения используют вспомогательную writer-блокировку с проверками конфликтов по ревизии и SHA-256, сохраняют предыдущие корректные манифесты, атомарно публикуют файлы через fsync и поддерживают снапшоты восстановления после сбоев, включая активные черновики редактора. Сгенерированные харнесы, мутаторы, JSON Ghidra, результаты сравнения патчей и минимизированные находки также публикуются транзакционно, чтобы неудачная замена не удаляла предыдущий корректный артефакт.
.fuzzRogue может импортировать легаси-манифесты .fuzz схем 0–2 и их сопутствующие каталоги .fuzz-work. Легаси-источник никогда не является каноническим целевым: первое сохранение преобразует его в соседний проект .rgp и рабочий каталог .rgp-work, сохраняя при этом исходные легаси-файлы. Новые проекты и цели Save As всегда используют .rgp.