Port Rust di REA, uno strumento di reverse engineering solo locale con flussi di lavoro CLI/MCP e un worker Ghidra nativo
Un port in Rust di REA per il reverse engineering locale dal terminale o da un client MCP.
Ispeziona binari, decompila funzioni, analizza app JavaScript ed Electron, legge artefatti managed e mobile e lavora con catture di processi e browser. La CLI e il server MCP utilizzano le stesse implementazioni degli strumenti. Il runtime non richiede Node.js.
Le release precompilate includono rea, il server MCP e il worker Ghidra per macOS, Linux e Windows su ARM64 e x86-64. Non sono necessari Node.js, la toolchain Rust né un account amministratore.
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
Su Windows, esegui l'installer PowerShell da un prompt di PowerShell:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
Gli installer verificano i checksum della release e memorizzano i file con versione in una
directory per utente. Non modificano i profili della shell, il PATH o le impostazioni MCP.
Rieseguire l'installer per aggiornare, oppure impostare REA_VERSION per selezionare una release. Consultare
i dettagli di installazione per i percorsi, le posizioni personalizzate e
la rimozione.
Richiede la toolchain Rust fissata (1.93.1), Python 3.11+ per gli script di release, e un compilatore C/C++20 (GCC 12+ su Linux). Questo repository contiene tutte le sorgenti helper incorporate.
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
Su macOS, Linux o Windows, compila il worker Ghidra separatamente e posizionalo
accanto a rea:
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, usare Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ per il passaggio di copia.
Il worker utilizza il decompilatore nativo di Ghidra e non richiede la JVM. Per conservarlo
altrove, impostare REA_GHIDRA_RUST_WORKER sul suo percorso assoluto.
Frida è una funzionalità di build opzionale. Vedere Configurazione di Frida. Altri provider di analisi e strumenti esterni richiedono le proprie installazioni.
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
Usa --help su qualsiasi comando per visualizzarne argomenti e opzioni.
Aggiungi questo alla configurazione MCP del tuo client, sostituendo il percorso dell'eseguibile:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp avvia il server stdio. Utilizza il percorso assoluto dell'eseguibile installato; i client MCP potrebbero avere un PATH diverso da quello della tua shell. rea setup mostra in anteprima le registrazioni dei client e l'installazione delle skill, poi chiede conferma prima di applicare le modifiche. Le installazioni delle release includono già il worker Ghidra.
GitHub Actions compila ed esegue smoke test sugli archivi macOS e Linux su entrambe le architetture, oltre agli archivi Windows ARM64 e x64, prima di pubblicare una release con tag. I binari Musl Linux e quelli abilitati a Frida non sono forniti. Altri provider di analisi e strumenti esterni richiedono installazioni proprie.
Le differenze di comportamento note e la copertura dei test sono documentate nel report di verifica della migrazione.
Il benchmark delle applicazioni locali copre 11 applicazioni macOS installate e Go: 125 campioni su 25 workflow, con tempo trascorso, CPU, memoria, risultati per chiamata e fallimenti documentati. La riesecuzione della verifica dei fallimenti registra correzioni, misurazioni ripetute e fallimenti rimanenti.
Il confronto separato TypeScript/native ha utilizzato build congelate, misurate su un Apple M1 Pro il 24 ottobre 2026, con cache del filesystem calde. Sette sessioni per versione; la riga della richiesta ripetuta utilizza 56 chiamate per versione:
| Attività | TypeScript | Rust |
|---|---|---|
| Avvio e ispezione dei metadati di build Go | 570 ms | 64 ms |
| Ripetizione di una richiesta di metadati Go in una sessione in esecuzione | 7.3 ms | 16.2 ms |
| Avvio e decompilazione della prima funzione in un piccolo programma C | 9.43 s | 0.39 s |
| Memoria di picco campionata della famiglia di processi durante quella sessione di decompilazione | 1,022 MiB | 214 MiB |
Il confronto di decompilazione ha utilizzato Java Ghidra per TypeScript e Rust Ghidra per la build nativa. Rust ha fallito sul test Go più grande a causa di una collisione di nomi di import; Java ha restituito tutte e tre le funzioni richieste.
Consulta il confronto dei runtime e i risultati Ghidra per input, misurazioni grezze, differenze di output e passaggi di riproduzione. L'audit delle prestazioni copre le ottimizzazioni Rust successive.
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
La guida allo sviluppo illustra la struttura del codice sorgente, i requisiti completi per i test del workspace, il worker Ghidra e l'API C sperimentale. Consultare MIGRATION_GUIDE.md quando si modifica il comportamento degli strumenti e le note sull'architettura per la proprietà dei crate.