Rust-Portierung von REA, einem rein lokalen Reverse-Engineering-Tool mit CLI/MCP-Workflows und einem nativen Ghidra-Worker
Eine Rust-Portierung von REA für lokales Reverse Engineering vom Terminal oder einem MCP-Client aus.
Binärdateien inspizieren, Funktionen dekompilieren, JavaScript- und Electron-Apps analysieren, verwaltete und mobile Artefakte lesen und mit Prozess- und Browser-Captures arbeiten. Die CLI und der MCP-Server verwenden dieselben Tool-Implementierungen. Die Laufzeit benötigt kein Node.js.
Vorgefertigte Releases enthalten rea, den MCP-Server und den Ghidra-Worker für
macOS, Linux und Windows auf ARM64 und x86-64. Es wird weder Node.js noch eine Rust-Toolchain noch
ein Administratorkonto benötigt.
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
Unter Windows führen Sie den PowerShell-Installer über eine PowerShell-Eingabeaufforderung aus:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
Die Installationsprogramme überprüfen die Prüfsummen der Releases und speichern versionierte Dateien in einem
benutzerspezifischen Verzeichnis. Sie bearbeiten keine Shell-Profile, PATH oder MCP-Einstellungen.
Führen Sie das Installationsprogramm erneut aus, um zu aktualisieren, oder setzen Sie REA_VERSION, um ein Release auszuwählen. Siehe
Installationsdetails für Pfade, benutzerdefinierte Speicherorte und
Deinstallation.
Erfordert die festgelegte Rust-Toolchain (1.93.1), Python 3.11+ für Release-Skripte und einen C/C++20-Compiler (GCC 12+ unter Linux). Dieses Repository enthält alle eingebetteten Hilfsquellen.
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
Unter macOS, Linux oder Windows den Ghidra-Worker separat bauen und neben rea ablegen:
cargo build --manifest-path ghidra-rust-worker/Cargo.toml --locked --release
cp ghidra-rust-worker/target/release/rea-ghidra-rust-worker target/release/
In PowerShell verwenden Sie Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ für den Kopierschritt.
Der Worker nutzt den nativen Ghidra-Decompiler und benötigt keine JVM. Um ihn
an anderer Stelle zu halten, setzen Sie REA_GHIDRA_RUST_WORKER auf seinen absoluten Pfad.
Frida ist ein optionales Build-Feature. Siehe Frida setup. Andere Analyse-Provider und externe Tools erfordern ihre eigenen Installationen.
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
Verwenden Sie --help bei jedem Befehl, um dessen Argumente und Optionen anzuzeigen.
Fügen Sie dies zur MCP-Konfiguration Ihres Clients hinzu und ersetzen Sie dabei den Pfad zur ausführbaren Datei:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp startet den stdio-Server. Verwende den absoluten Pfad der installierten ausführbaren Datei; MCP-Clients können einen anderen PATH als deine Shell haben. rea setup zeigt eine Vorschau der Client-Registrierungen und der Skill-Installation an und fragt dann vor dem Anwenden von Änderungen nach. Release-Installationen enthalten bereits den Ghidra-Worker.
GitHub Actions baut und führt Smoke-Tests für macOS- und Linux-Archive auf beiden Architekturen sowie für Windows-ARM64- und x64-Archive durch, bevor ein getaggtes Release veröffentlicht wird. Musl-Linux- und Frida-fähige Binärdateien werden nicht bereitgestellt. Andere Analyse-Provider und externe Tools erfordern ihre eigenen Installationen.
Bekannte Verhaltensunterschiede und die Testabdeckung sind im Migrationsverifikationsbericht dokumentiert.
Der lokale Anwendungs-Benchmark umfasst 11 installierte macOS-Anwendungen und Go: 125 Samples über 25 Workflows, mit verstrichener Zeit, CPU, Speicher, Ergebnissen pro Aufruf und dokumentierten Fehlern. Der Wiederholungslauf zur Fehlerverifikation dokumentiert Korrekturen, wiederholte Messungen und verbleibende Fehler.
Der separate TypeScript/native-Vergleich verwendete eingefrorene Builds, gemessen auf einem Apple M1 Pro am 24. Oktober 2026, mit warmen Dateisystem-Caches. Sieben Sitzungen pro Version; die Zeile für wiederholte Anfragen verwendet 56 Aufrufe pro Version:
| Aufgabe | TypeScript | Rust |
|---|---|---|
| Go-Build-Metadaten starten und inspizieren | 570 ms | 64 ms |
| Eine Go-Metadaten-Anfrage in einer laufenden Sitzung wiederholen | 7,3 ms | 16,2 ms |
| Die erste Funktion in einem kleinen C-Programm starten und dekompilieren | 9,43 s | 0,39 s |
| Abgetasteter Spitzenspeicher der Prozessfamilie während dieser Dekompilierungssitzung | 1.022 MiB | 214 MiB |
Der Dekompilierungsvergleich verwendete Java Ghidra für TypeScript und Rust Ghidra für den nativen Build. Rust schlug beim größeren Go-Test aufgrund einer Namenskollision bei Imports fehl; Java gab alle drei angeforderten Funktionen zurück.
Siehe den Laufzeitvergleich und die Ghidra-Ergebnisse für Eingaben, Rohmessungen, Ausgabeunterschiede und Reproduktionsschritte. Das Performance-Audit behandelt spätere Rust-Optimierungen.
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
Der Entwicklungsleitfaden behandelt die Quellcode-Struktur, die vollständigen Workspace-Testanforderungen, den Ghidra-Worker und die experimentelle C-API. Siehe MIGRATION_GUIDE.md bei Änderungen am Tool-Verhalten und die Architekturhinweise zur Crate-Zuordnung.