Portage Rust de REA, un outil de rétro-ingénierie purement local avec des workflows CLI/MCP et un worker Ghidra natif
Un portage en Rust de REA pour le reverse engineering local depuis le terminal ou un client MCP.
Inspectez des binaires, décompilez des fonctions, analysez des applications JavaScript et Electron, lisez des artefacts managés et mobiles, et travaillez avec des captures de processus et de navigateur. La CLI et le serveur MCP utilisent les mêmes implémentations d'outils. Le runtime ne nécessite pas Node.js.
Les versions précompilées incluent rea, le serveur MCP et le worker Ghidra pour macOS, Linux et Windows sur ARM64 et x86-64. Aucun Node.js, chaîne d'outils Rust ou compte administrateur n'est nécessaire.
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
Sous Windows, exécutez l'installateur PowerShell depuis une invite PowerShell :
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
Les installateurs vérifient les sommes de contrôle des versions publiées et stockent les fichiers versionnés dans un
répertoire par utilisateur. Ils ne modifient pas les profils shell, le PATH ni les paramètres MCP.
Relancez l'installateur pour mettre à jour, ou définissez REA_VERSION pour sélectionner une version. Consultez
les détails d'installation pour les chemins, les emplacements personnalisés et
la désinstallation.
Nécessite la chaîne d'outils Rust épinglée (1.93.1), Python 3.11+ pour les scripts de publication, et un compilateur C/C++20 (GCC 12+ sous Linux). Ce dépôt contient toutes les sources des assistants intégrés.
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
Sur macOS, Linux ou Windows, compilez le worker Ghidra séparément et placez-le
à côté de rea :
cargo build --manifest-path ghidra-rust-worker/Cargo.toml --locked --release
cp ghidra-rust-worker/target/release/rea-ghidra-rust-worker target/release/
Dans PowerShell, utilisez Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ pour l'étape de copie.
Le worker utilise le décompilateur Ghidra natif et ne nécessite aucune JVM. Pour le conserver
ailleurs, définissez REA_GHIDRA_RUST_WORKER sur son chemin absolu.
Frida est une fonctionnalité de compilation optionnelle. Voir Frida setup. Les autres fournisseurs d'analyse et outils externes nécessitent leurs propres installations.
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
Utilisez --help sur n'importe quelle commande pour connaître ses arguments et options.
Ajoutez ceci à la configuration MCP de votre client, en remplaçant le chemin de l'exécutable :
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp démarre le serveur stdio. Utilisez le chemin absolu de l'exécutable installé ;
les clients MCP peuvent avoir un PATH différent de celui de votre shell. rea setup prévisualise
les enregistrements de clients et l'installation des compétences, puis demande confirmation avant d'appliquer les modifications.
Les installations de version incluent déjà le worker Ghidra.
GitHub Actions compile et effectue des tests de fumée sur les archives macOS et Linux pour les deux architectures, ainsi que sur les archives Windows ARM64 et x64, avant de publier une version étiquetée. Les binaires Linux musl et activés pour Frida ne sont pas fournis. Les autres fournisseurs d'analyse et outils externes nécessitent leurs propres installations.
Les différences de comportement connues et la couverture des tests sont consignées dans le rapport de vérification de la migration.
Le benchmark des applications locales couvre 11 applications macOS installées et Go : 125 échantillons sur 25 workflows, avec le temps écoulé, le CPU, la mémoire, les résultats par appel et les échecs documentés. La réexécution de vérification des échecs consigne les correctifs, les mesures répétées et les échecs restants.
La comparaison séparée TypeScript/natif a utilisé des builds figés, mesurés sur un Apple M1 Pro le 24 octobre 2026, avec des caches de système de fichiers chauds. Sept sessions par version ; la ligne de requête répétée utilise 56 appels par version :
| Tâche | TypeScript | Rust |
|---|---|---|
| Démarrer et inspecter les métadonnées de build Go | 570 ms | 64 ms |
| Répéter une requête de métadonnées Go dans une session en cours | 7,3 ms | 16,2 ms |
| Démarrer et décompiler la première fonction d'un petit programme C | 9,43 s | 0,39 s |
| Mémoire de la famille de processus échantillonnée en pic pendant cette session de décompilation | 1 022 MiB | 214 MiB |
La comparaison de décompilation a utilisé Java Ghidra pour TypeScript et Rust Ghidra pour le build natif. Rust a échoué sur le test Go plus volumineux en raison d'une collision de noms d'import ; Java a renvoyé les trois fonctions demandées.
Consultez la comparaison des runtimes et les résultats Ghidra pour les entrées, les mesures brutes, les différences de sortie et les étapes de reproduction. L'audit de performance couvre les optimisations Rust ultérieures.
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
Le guide de développement couvre l'organisation des sources, les exigences de test de l'ensemble du workspace, le worker Ghidra et l'API C expérimentale. Consultez MIGRATION_GUIDE.md lors de la modification du comportement des outils et les notes d'architecture pour la répartition des crates.