
Banco de trabajo de escritorio para fuzzing con AFL++, emulación QEMU multiarquitectura, desarrollo de harnesses, análisis headless con Ghidra, mutadores personalizados y comparación de parches para el desarrollo de exploits.
Rogue Framework es un banco de trabajo de escritorio para AFL++, fuzzing QEMU de arquitectura cruzada, desarrollo de harnesses, análisis headless ligero de Ghidra, mutadores personalizados y comparación de parches. Es intencionadamente un banco de trabajo auditable en lugar de un envoltorio de solo botones: cada comando AFL++ generado es visible antes de la ejecución, y los harnesses generados son archivos fuente ordinarios que el investigador puede editar. Se supone que es "El BurpSuite de los desarrolladores de exploits".
Rogue Framework actualmente apunta a Linux y Python 3.11+ con PyQt6.
En Kali Linux, el instalador configura el entorno Python, clona la rama stable oficial de AFL++ y compila su distribución completa y el backend QEMU instrumentado, luego instala Ghidra headless, GDB nativo/multiarchitecture, servidor GDB, emulación de QEMU usuario/sistema, dependencias de compilador/construcción, un lanzador de usuario y entradas persistentes de PATH del shell. AFL++ se descarga en el directorio local ignorado AFLplusplus/ y no se distribuye como parte de Rogue Framework:
chmod +x install.sh
./install.sh
rogue-framework
Instala también los compiladores cruzados comunes y sus sysroots invitados (esto es una descarga mucho más grande) con:
./install.sh --with-cross-toolchains
El instalador es idempotente. Use ./install.sh --check para auditar una instalación existente o ./install.sh --rebuild-afl para forzar una reconstrucción de AFL++/QEMU. Use ./install.sh --update-afl para poner al día explícitamente el checkout descargado a la última revisión estable oficial.
Ejecútelo como el usuario de escritorio; solo solicita sudo para los paquetes apt. Un PATH recién escrito no puede alterar el shell padre ya en ejecución, así que abra una nueva terminal, haga source de ~/.zshrc/~/.bashrc, o lance Rogue mediante la ruta absoluta ~/.local/bin/rogue-framework impresa por el instalador.
El inicio manual desde el checkout sigue disponible:
python3 run.py
Para un entorno editable:
python3 -m pip install -e .
rogue-framework
Los binarios dinámicos de arquitectura cruzada necesitan un sysroot invitado correspondiente seleccionado con QEMU_LD_PREFIX; esto es inherentemente específico del objetivo/distribución. La ruta de analyzeHeadless de Ghidra se puede sobrescribir en Herramientas → Herramientas externas.
Un proyecto .rgp es un JSON legible y versionado que contiene la definición portátil del proyecto. Los artefactos grandes y mutables viven en su espacio de trabajo complementario gestionado:
example.rgp
example.rgp-work/
workspace.json
project.sqlite3
corpus/
output/
harnesses/
mutators/
analysis/
logs/
runs/
staging/
recovery/
backups/
objects/sha256/
Esta división mantiene los archivos del proyecto revisables y evita incrustar corpus de crashes, hallazgos, índices de análisis o estado de Ghidra en JSON. workspace.json vincula el manifiesto con la identidad correcta del espacio de trabajo, mientras que project.sqlite3 almacena el estado operativo/indexado. Las referencias gestionadas usan workspace://; los recursos explícitamente externos usan external://. Las rutas de herramientas locales de la máquina y el estado de la interfaz se almacenan fuera del proyecto portátil.
Guardar como crea un clon independiente con nuevas identidades de proyecto y espacio de trabajo. Rogue prepara y valida el destino antes de cambiar el documento abierto, por lo que un clon fallido deja el proyecto de origen sin cambios. Los guardados canónicos usan una concesión de escritura de asesoramiento más comprobaciones de conflicto de revisión/SHA-256, conservan los manifiestos anteriores válidos, publican archivos atómicamente con fsync y mantienen instantáneas de recuperación ante fallos, incluidos los borradores activos del editor. Los harnesses generados, mutadores, JSON de Ghidra, resultados de comparación de parches y hallazgos minimizados también se publican de forma transaccional, de modo que un reemplazo fallido no elimina el artefacto válido anterior.
.fuzz heredadosRogue puede importar manifiestos .fuzz heredados de esquema 0–2 y sus acompañantes .fuzz-work. El origen heredado nunca es el destino canónico: el primer guardado lo actualiza a un proyecto .rgp hermano y a un espacio de trabajo .rgp-work, conservando los archivos heredados originales. Los nuevos proyectos y los destinos de Guardar como siempre usan .rgp.