Port en Rust de REA, una herramienta de ingeniería inversa de solo local con flujos de trabajo CLI/MCP y un worker nativo de Ghidra
Un port en Rust de REA para ingeniería inversa local desde la terminal o un cliente MCP.
Inspecciona binarios, descompila funciones, analiza aplicaciones JavaScript y Electron, lee artefactos gestionados y móviles, y trabaja con capturas de procesos y navegadores. La CLI y el servidor MCP utilizan las mismas implementaciones de herramientas. El entorno de ejecución no requiere Node.js.
Las versiones precompiladas incluyen rea, el servidor MCP y el worker de Ghidra para macOS, Linux y Windows en ARM64 y x86-64. No se necesita Node.js, la cadena de herramientas de Rust ni una cuenta de administrador.
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
En Windows, ejecute el instalador de PowerShell desde un símbolo del sistema de PowerShell:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
Los instaladores verifican las sumas de comprobación de la versión y almacenan los archivos versionados en un
directorio por usuario. No editan los perfiles de shell, PATH ni la configuración de MCP.
Vuelve a ejecutar el instalador para actualizar, o establece REA_VERSION para seleccionar una versión. Consulta
detalles de instalación para rutas, ubicaciones personalizadas y
eliminación.
Requiere el toolchain de Rust fijado (1.93.1), Python 3.11+ para los scripts de publicación, y un compilador de C/C++20 (GCC 12+ en Linux). Este repositorio contiene todas las fuentes auxiliares embebidas.
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
En macOS, Linux o Windows, compile el worker de Ghidra por separado y colóquelo
junto 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/
En PowerShell, use Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ para el paso de copia.
El worker utiliza el descompilador nativo de Ghidra y no requiere JVM. Para mantenerlo
en otro lugar, establezca REA_GHIDRA_RUST_WORKER con su ruta absoluta.
Frida es una característica de compilación opcional. Consulte Frida setup. Otros proveedores de análisis y herramientas externas requieren sus propias instalaciones.
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 en cualquier comando para ver sus argumentos y opciones.
Añade esto a la configuración MCP de tu cliente, reemplazando la ruta del ejecutable:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp inicia el servidor stdio. Utilice la ruta absoluta del ejecutable instalado; los clientes MCP pueden tener un PATH diferente al de su shell. rea setup muestra una vista previa de los registros de clientes y de la instalación de skills, y luego pregunta antes de aplicar los cambios. Las instalaciones de las versiones ya incluyen el worker de Ghidra.
GitHub Actions compila y realiza pruebas de humo de los archivos de macOS y Linux en ambas arquitecturas, además de los archivos de Windows ARM64 y x64, antes de publicar una versión etiquetada. No se proporcionan binarios para Musl Linux ni binarios con Frida habilitado. Otros proveedores de análisis y herramientas externas requieren sus propias instalaciones.
Las diferencias de comportamiento conocidas y la cobertura de pruebas se registran en el informe de verificación de migración.
El benchmark de aplicaciones locales abarca 11 aplicaciones de macOS instaladas y Go: 125 muestras en 25 flujos de trabajo, con tiempo transcurrido, CPU, memoria, resultados por llamada y fallos documentados. La repetición de verificación de fallos registra correcciones, mediciones repetidas y fallos restantes.
La comparación separada entre TypeScript y nativo utilizó compilaciones congeladas, medidas en un Apple M1 Pro el 24 de octubre de 2026, con cachés del sistema de archivos en caliente. Siete sesiones por versión; la fila de solicitud repetida utiliza 56 llamadas por versión:
| Tarea | TypeScript | Rust |
|---|---|---|
| Iniciar e inspeccionar los metadatos de compilación de Go | 570 ms | 64 ms |
| Repetir una solicitud de metadatos de Go en una sesión en ejecución | 7.3 ms | 16.2 ms |
| Iniciar y descompilar la primera función de un pequeño programa en C | 9.43 s | 0.39 s |
| Memoria máxima muestreada de la familia de procesos durante esa sesión de descompilación | 1,022 MiB | 214 MiB |
La comparación de descompilación utilizó Java Ghidra para TypeScript y Rust Ghidra para la compilación nativa. Rust falló en la prueba de Go más grande debido a una colisión de nombres de importación; Java devolvió las tres funciones solicitadas.
Consulte la comparación de tiempos de ejecución y los resultados de Ghidra para ver las entradas, las mediciones sin procesar, las diferencias de salida y los pasos de reproducción. La auditoría de rendimiento abarca optimizaciones posteriores de Rust.
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
La guía de desarrollo cubre la estructura del código fuente, los requisitos de pruebas de todo el workspace, el worker de Ghidra y la API C experimental. Consulta MIGRATION_GUIDE.md al cambiar el comportamiento de las herramientas y las notas de arquitectura para la propiedad de los crates.