
REAのRust移植版。CLI/MCPワークフローとネイティブGhidraワーカーを備えたローカル専用のリバースエンジニアリングツール。
ターミナルまたは MCP クライアントからローカルでリバースエンジニアリングを行うための、REA の Rust 移植版です。
バイナリの検査、関数のデコンパイル、JavaScript および Electron アプリの解析、マネージドおよびモバイル成果物の読み取り、プロセスやブラウザのキャプチャの操作が可能です。CLI と MCP サーバーは同じツール実装を使用しています。ランタイムに Node.js は必要ありません。
ビルド済みリリースには、macOS、Linux、Windows の ARM64 および x86-64 向けの rea、MCP サーバー、Ghidra ワーカーが含まれています。Node.js、Rust ツールチェーン、管理者アカウントは不要です。
curl -fsSL https://github.com/nanashili/rea-rust/releases/latest/download/install.sh -o install-rea.sh
sh install-rea.sh
export PATH="$HOME/.local/bin:$PATH"
rea --version
Windows では、PowerShell プロンプトから PowerShell インストーラーを実行します:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
インストーラーはリリースのチェックサムを検証し、バージョン管理されたファイルをユーザーごとのディレクトリに保存します。シェルプロファイル、PATH、MCP設定は編集しません。更新するにはインストーラーを再実行するか、REA_VERSION を設定してリリースを選択してください。パス、カスタムロケーション、削除方法についてはインストールの詳細を参照してください。
固定されたRustツールチェーン(1.93.1)、リリーススクリプト用のPython 3.11+、およびC/C++20コンパイラ(LinuxではGCC 12+)が必要です。このリポジトリには、埋め込みヘルパーのソースがすべて含まれています。
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
macOS、Linux、または Windows では、Ghidra ワーカーを別途ビルドし、rea の隣に配置します:
cargo build --manifest-path ghidra-rust-worker/Cargo.toml --locked --release
cp ghidra-rust-worker/target/release/rea-ghidra-rust-worker target/release/
PowerShell では、コピー手順に Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ を使用します。
ワーカーはネイティブの Ghidra デコンパイラを使用し、JVM を必要としません。別の場所に置く場合は、REA_GHIDRA_RUST_WORKER をその絶対パスに設定してください。
Frida はオプションのビルド機能です。Frida setup を参照してください。 その他の分析プロバイダーや外部ツールは、それぞれ独自のインストールが必要です。
rea inspect /path/to/program
rea decompile /path/to/program main --provider ghidra-rust
rea inspect-go-binary /path/to/go-program --format json
rea doctor
任意のコマンドで --help を使用すると、その引数とオプションを確認できます。
クライアントの MCP 設定に以下を追加し、実行ファイルのパスを置き換えてください:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp は stdio サーバーを起動します。インストール済みの実行ファイルの絶対パスを使用してください。MCP クライアントはシェルとは異なる PATH を持っている場合があります。rea setup はクライアント登録とスキルのインストールをプレビューし、変更を適用する前に確認を求めます。リリース版のインストールには Ghidra ワーカーがすでに含まれています。
GitHub Actions は、タグ付きリリースを公開する前に、両アーキテクチャの macOS および Linux アーカイブ、さらに Windows ARM64 および x64 アーカイブをビルドしスモークテストします。Musl Linux および Frida 対応バイナリは提供されません。 その他の分析プロバイダーや外部ツールは、それぞれ独自にインストールする必要があります。
既知の動作の違いとテストカバレッジは、 移行検証レポートに記録されています。
ローカルアプリケーションベンチマーク は、インストール済みの 11 個の macOS アプリケーションと Go を対象としています。25 個のワークフローにわたる 125 個のサンプルで、経過時間、CPU、メモリ、呼び出しごとの結果、および文書化された失敗を含みます。 失敗検証の再実行 は、修正、繰り返し測定、および残存する失敗を記録しています。
別途実施した TypeScript/ネイティブの比較では、2026 年 10 月 24 日に Apple M1 Pro 上で、ファイルシステムキャッシュをウォーム状態にして、凍結されたビルドを用いて測定しました。バージョンごとに 7 セッション、繰り返しリクエストの行はバージョンごとに 56 回の呼び出しを使用しています:
| タスク | TypeScript | Rust |
|---|---|---|
| Go ビルドメタデータの起動と検査 | 570 ms | 64 ms |
| 実行中のセッションで Go メタデータリクエストを繰り返す | 7.3 ms | 16.2 ms |
| 小さな C プログラムの最初の関数を起動して逆コンパイルする | 9.43 s | 0.39 s |
| その逆コンパイルセッション中のプロセスファミリーのピークメモリ(サンプリング) | 1,022 MiB | 214 MiB |
逆コンパイルの比較では、TypeScript には Java 版 Ghidra を、ネイティブビルドには Rust 版 Ghidra を使用しました。Rust はインポート名の衝突により、より大きな Go テストで失敗しました。Java は要求された 3 つの関数すべてを返しました。
入力、生の測定値、出力の違い、および再現手順については、 ランタイム比較 および Ghidra の結果 を参照してください。 パフォーマンス監査は、その後の Rust 最適化を扱っています。
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
開発ガイドでは、ソースレイアウト、ワークスペース全体のテスト要件、Ghidra ワーカー、および実験的な C API について説明しています。 ツールの動作を変更する場合は MIGRATION_GUIDE.md を、クレートの所有権についてはアーキテクチャノートを参照してください。