Port em Rust do REA, uma ferramenta de engenharia reversa apenas local com fluxos de trabalho CLI/MCP e um worker nativo do Ghidra
Um port em Rust do REA para engenharia reversa local a partir do terminal ou de um cliente MCP.
Inspecione binários, descompile funções, analise aplicativos JavaScript e Electron, leia artefatos gerenciados e móveis, e trabalhe com capturas de processos e de navegadores. A CLI e o servidor MCP usam as mesmas implementações de ferramentas. O runtime não requer Node.js.
As versões pré-compiladas incluem o rea, o servidor MCP e o worker do Ghidra para macOS, Linux e Windows em ARM64 e x86-64. Não é necessário Node.js, toolchain Rust ou conta 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
No Windows, execute o instalador do PowerShell a partir de um prompt do PowerShell:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
Os instaladores verificam os checksums das releases e armazenam os ficheiros versionados num diretório por utilizador. Não editam perfis de shell, PATH nem definições de MCP. Volte a executar o instalador para atualizar, ou defina REA_VERSION para selecionar uma release. Consulte os detalhes de instalação para caminhos, localizações personalizadas e remoção.
Requer a toolchain Rust fixada (1.93.1), Python 3.11+ para os scripts de release e um compilador C/C++20 (GCC 12+ no Linux). Este repositório contém todas as fontes auxiliares incorporadas.
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
No macOS, Linux ou Windows, compile o worker do Ghidra separadamente e coloque-o
ao lado 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/
No PowerShell, use Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ para a etapa de cópia.
O worker usa o descompilador nativo do Ghidra e não requer JVM. Para mantê-lo
em outro local, defina REA_GHIDRA_RUST_WORKER com o caminho absoluto dele.
O Frida é um recurso de build opcional. Consulte Configuração do Frida. Outros provedores de análise e ferramentas externas exigem suas próprias instalações.
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
Use --help em qualquer comando para ver os seus argumentos e opções.
Adicione isto à configuração MCP do seu cliente, substituindo o caminho do executável:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp inicia o servidor stdio. Use o caminho absoluto do executável instalado;
os clientes MCP podem ter um PATH diferente do seu shell. rea setup pré-visualiza
os registros de clientes e a instalação de skills, depois pergunta antes de aplicar as alterações.
As instalações de release já incluem o worker Ghidra.
O GitHub Actions compila e faz smoke-tests de arquivos macOS e Linux em ambas as arquiteturas, além de arquivos Windows ARM64 e x64, antes de publicar uma release com tag. Binários Musl Linux e com Frida habilitado não são fornecidos. Outros provedores de análise e ferramentas externas exigem suas próprias instalações.
Diferenças de comportamento conhecidas e cobertura de testes estão registradas no relatório de verificação de migração.
O benchmark de aplicações locais abrange 11 aplicações macOS instaladas e Go: 125 amostras em 25 workflows, com tempo decorrido, CPU, memória, resultados por chamada e falhas documentadas. A reexecução de verificação de falhas registra correções, medições repetidas e falhas remanescentes.
A comparação separada entre TypeScript/nativo usou builds congelados, medidas em um Apple M1 Pro em 24 de outubro de 2026, com caches de sistema de arquivos aquecidos. Sete sessões por versão; a linha de requisição repetida usa 56 chamadas por versão:
| Tarefa | TypeScript | Rust |
|---|---|---|
| Iniciar e inspecionar metadados de build do Go | 570 ms | 64 ms |
| Repetir uma requisição de metadados Go em uma sessão em execução | 7.3 ms | 16.2 ms |
| Iniciar e descompilar a primeira função em um pequeno programa C | 9.43 s | 0.39 s |
| Pico amostrado de memória da família de processos durante essa sessão de descompilação | 1,022 MiB | 214 MiB |
A comparação de descompilação usou Java Ghidra para TypeScript e Rust Ghidra para o build nativo. Rust falhou no teste Go maior devido a uma colisão de nomes de importação; Java retornou todas as três funções solicitadas.
Consulte a comparação de runtime e os resultados do Ghidra para entradas, medições brutas, diferenças de saída e etapas de reprodução. A auditoria de desempenho cobre otimizações posteriores em Rust.
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
O guia de desenvolvimento aborda a estrutura do código-fonte, os requisitos de teste de todo o workspace, o worker do Ghidra e a API C experimental. Consulte MIGRATION_GUIDE.md ao alterar o comportamento da ferramenta e as notas de arquitetura para saber a que crate pertence cada parte.