
エクスプロイト開発のためのAFL++ファジング、クロスアーキテクチャQEMUエミュレーション、ハーネス開発、Ghidraヘッドレス解析、カスタムミューテーター、パッチ比較を行うデスクトップワークベンチ。
Rogue Framework は、AFL++、クロスアーキテクチャ QEMU ファジング、ハーネス開発、軽量 Ghidra ヘッドレス解析、カスタムミューテーター、パッチ比較のためのデスクトップワークベンチです。 これは意図的に、ボタン操作だけのラッパーではなく監査可能なワークベンチです。生成されたすべての AFL++ コマンドは実行前に表示され、生成されたハーネスは研究者が編集できる通常のソースファイルです。 「エクスプロイト開発者のための BurpSuite」となることを目指しています。
Rogue Framework は現在、Linux と PyQt6 を使用した Python 3.11+ を対象としています。
Kali Linux では、インストーラが Python 環境をセットアップし、公式の
AFL++ stable ブランチをクローンして、その完全なディストリビューションとインストルメント済み QEMU
バックエンドをビルドし、その後、Ghidra headless、ネイティブ/マルチアーキテクチャ GDB、GDB サーバー、QEMU
ユーザー/システムエミュレーション、コンパイラ/ビルド依存関係、ユーザーランチャー、そして
永続的なシェル 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 は、すでに実行中の親シェルを変更できないため、新しいターミナルを開くか、
~/.zshrc/~/.bashrc を source するか、インストーラが出力する絶対パスの
~/.local/bin/rogue-framework から Rogue を起動してください。
チェックアウトからの手動起動も引き続き可能です:
python3 run.py
編集可能な環境の場合:
python3 -m pip install -e .
rogue-framework
クロスアーキテクチャの動的バイナリには、QEMU_LD_PREFIX で選択した一致するゲスト sysroot が必要です。これは本質的にターゲット/ディストリビューション固有です。Ghidra の analyzeHeadless パスは、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 はマニフェストを正しいワークスペース ID に結び付け、project.sqlite3 は運用/インデックス状態を保存します。管理対象リファレンスは workspace:// を使用し、明示的に外部のリソースは external:// を使用します。マシンローカルのツールパスと UI 状態は、ポータブルプロジェクトの外部に保存されます。
Save As は、新しいプロジェクト ID とワークスペース ID を持つ独立したクローンを作成します。Rogue は、開いているドキュメントを切り替える前に宛先をステージングして検証するため、クローンが失敗してもソースプロジェクトは変更されません。正規の保存では、アドバイザリの書き込みリースとリビジョン/SHA-256 の競合チェックを使用し、直前の正常なマニフェストを保持し、fsync でファイルをアトミックに公開し、アクティブなエディタの下書きを含むクラッシュリカバリのスナップショットを維持します。生成されたハーネス、ミューテーター、Ghidra JSON、パッチ差分結果、最小化された検出結果もトランザクション的に公開されるため、置き換えに失敗しても以前の有効なアーティファクトは削除されません。
.fuzz projectsRogue は、レガシースキーマ 0–2 の .fuzz マニフェストと、その .fuzz-work コンパニオンをインポートできます。レガシーソースが正規の保存先になることはありません。最初の保存で、元のレガシーファイルを保持したまま、隣接する .rgp プロジェクトと .rgp-work ワークスペースにアップグレードされます。新しいプロジェクトと Save As の保存先は常に .rgp を使用します。