REA (Reverse Engineer Anything) é um servidor MCP que permite fazer engenharia reversa de aplicativos de software, binários e comportamento em tempo real. A ferramenta cobre o caminho desde o comportamento do aplicativo até o código de máquina e é conveniente usar OpenCode como agente que o gerencia.
OpenCode é um agente de programação aberto que reside no terminal. Ele lê arquivos de projeto, edita código, executa comandos e testes e, o mais importante, oferece suporte imediato ao MCP, portanto, o REA se conecta diretamente a ele.
O que torna o REA único
A REA se destaca na área de engenharia reversa com suporte abrangente a diversas plataformas e tipos de análise:
- Binários nativos: Hopper, Ghidra, IDA ou Kuna para desmontagem e descompilação
- Aplicações JavaScript e Electron: análise estática de módulos Electron, importações e limites
- Código gerenciado: analisando assemblies .NET
- Análise em tempo real: monitoramento do comportamento do processo
- Tráfego de rede: captura e análise de solicitações e respostas HTTP/S
- Aplicativos móveis: análise de arquivos APK e IPA para Android e iOS
- Software embarcado: análise de sistemas embarcados e dispositivos IoT
- Arquivos de modelo: extraindo metadados GGUF e safetensors
- Objetos de código GPU: análise de kernels CUDA e HIP
- Salvar jogos: restaurar a lógica do jogo e arquivos executáveis
Arquitetura básica e filosofia
A REA segue um processo de pesquisa em três etapas que torna a engenharia reversa acessível aos desenvolvedores:
- Inspeção: REA se conecta a ferramentas de análise e examina alvos (binários, aplicativos, sites)
- Análise: rastreia o código, determinando regras e comportamento
- Recuperação: o agente usa os resultados para explicar o comportamento e construir ou testar uma implementação
Esse processo permite que o agente de IA responda perguntas complexas, como: “Entenda como funciona a pesquisa no aplicativo Notes, mostre-me as evidências e crie um recurso semelhante para o meu projeto”.
Exemplos práticos de uso
1. Análise de aplicativos móveis
REA pode analisar arquivos APK do Android para recuperação:
- declarações e permissões no manifesto;
- métodos de classe e dependências;
- links para bibliotecas nativas;
- endpoints de rede e fluxos de dados.
Por exemplo, uma análise do Aegis Authenticator mostrou como os códigos de autorização de seis dígitos mudam a cada 30 segundos: examinou como funciona a geração de código baseada no tempo (TOTP).
2. Extração de função de aplicativo de desktop
A análise do botão % na Calculadora do Windows demonstra os recursos do REA:
- definir comportamentos diferentes dependendo do contexto (após + ou ×);
- analisar instruções assembly para entender a lógica;
- extrair e explicar operações matemáticas;
- restaurando as regras: “Depois de +: 10% do primeiro número” e “Depois de ×: converta 10% para 0,1.”
3. Restaurando a API do aplicativo Web
REA pode gravar uma sessão do navegador e reconstruí-la como um ambiente RL onde o agente de IA executa tarefas como trabalhar com pastas sem executar o aplicativo original.
4. Restaurando a lógica do jogo
O caso DX-Ball mostrou como a REA restaurou o cálculo da paisagem sonora do jogo para Windows de 1996 por meio de engenharia reversa do código C que executa 3.205 casos de teste e corresponde ao código compilado original.
Capacidades técnicas
Análise nativa
- Funciona com Hopper, Ghidra, IDA ou Kuna para análise profunda de arquivos binários
- Suporta ELF, PE, Mach-O e outros formatos de arquivo executáveis
- Extrai pseudocódigo, assembler, símbolos e chamadas
- Realiza análises off-line sem precisar iniciar as ferramentas originais
Análise JavaScript
- Analisa aplicações Node.js e Electron
- Rastreia importações e dependências de módulos
- Captura o comportamento em tempo real por meio de uma conexão de navegador
- Извлекает source maps и минифицированный код
Segurança
- Análise estática de certificados PE (Authenticode)
- Análise de mecanismos de defesa (PIE, NX, RELRO, CFG)
- Mapeamento de importações e DLLs
- Análise de relatórios de falhas (Apple IPS)
O que o REA retorna
A REA não dá ao agente conclusões prontas sem motivo. O resultado de cada consulta são as descobertas juntamente com as evidências nas quais elas se baseiam. Dependendo da finalidade, a resposta inclui:
- Links para código – arquivos e linhas específicas onde a função em estudo é implementada.
- Pseudocódigo e assembler – para binários nativos: funções descompiladas, instruções e conexões entre chamadas.
- Estrutura da aplicação – para JavaScript e Electron: módulos, importações, rotas, IPC e conexões com add-ons nativos.
- Metadados e fatos: manifestos, certificados, assinaturas, cabeçalhos de formato e outros dados estáticos.
- Restrições – locais que não puderam ser resolvidos, com uma nota sobre o que exatamente permanece desconhecido.
O agente utiliza esses dados para explicar o comportamento, responder perguntas esclarecedoras ou montar e testar sua implementação. É a presença de evidências e limitações explícitas que distingue um resultado REA de uma simples suposição do modelo.
Antes de começar
Supõe-se que o OpenCode já esteja instalado e o modelo esteja conectado a ele. Node.js 22.23.4+, 24.22.1+ ou 26.12.1+ é necessário para o próprio REA, então verifique a versão:
node -v
Etapa 1: Conecte REA ao OpenCode
REA registra-se no OpenCode como um servidor MCP. Execute no terminal:
npx rea-agents@latest setup
Para especificar OpenCode diretamente, use seu identificador opencode:
npx rea-agents@latest setup --client opencode
O que a configuração faz:
- regista REA como um servidor MCP;
- adiciona instruções de fluxo de trabalho;
- faz uma cópia de backup da configuração existente;
- pede confirmação antes de aplicar as alterações.
Ponto importante:
Para o primeiro experimento, você pode pular a instalação opcional do Hopper. Após a conclusão da configuração, reinicie o OpenCode: saia da sessão e execute opencode novamente.
Verifique a conexão:
npx -y rea-agents@latest doctor --client opencode --json
Resultado bem-sucedido: "healthy": true.
Então pergunte ao agente:
“Verifique se o REA está conectado e mostre quais ferramentas REA você pode usar.”
Etapa 2: Primeira investigação
REA pode analisar aplicativos sem iniciá-los.
- Baixe o exemplo:
Download https://rea.tools/examples/notes-example.zipDescompacte o arquivo na pasta
notes-example. - Dê uma tarefa ao agente:
“Use REA para inspecionar o aplicativo em
/absolute/path/to/notes-example. Descubra o que acontece quando clico em Exportar notas. Mostre onde o arquivo notes.csv está escrito, quais campos ele contém e os arquivos e linhas relevantes.”
Resposta esperada:
“O botão envia uma mensagem
notes:export. O processo principal formata as notas como CSV e escrevenotes.csvna pasta Downloads do usuário. As colunas sãoidetitle.”
Etapa 3: instalação do Ghidra e análise nativa
Para analisar binários nativos (executáveis e bibliotecas), o REA utiliza um provedor de análise. A opção gratuita mais acessível é o Ghidra da NSA. A ferramenta é instalada uma vez no computador onde o REA é executado.
O que você precisa
- JDK 21 de 64 bits ou posterior, incluindo compilador Java (
javac). - Arquivo Ghidra na página de lançamentos.
Instalação
- Instale o JDK 21 de 64 bits ou posterior. Selecione um pacote para a arquitetura do seu computador.
- Baixe o Ghidra na lista de ativos na página de lançamentos e descompacte o arquivo
ghidra_…_PUBLIC_….zip. Pegue o arquivo de lançamento, não o “código-fonte”. - Encontre a pasta descompactada que contém
ghidraRunoughidraRun.bat. Este caminho será necessário para a variávelGHIDRA_INSTALL_DIR.
Confira Java. O primeiro comando imprime java.home – este caminho é necessário para JAVA_HOME. A segunda confirma que o compilador está instalado:
java -XshowSettings:properties -version
javac -version
Conexão Ghidra
Windows (PowerShell):
$env:GHIDRA_INSTALL_DIR = "C:/tools/ghidra_12.1.4_PUBLIC"
$env:JAVA_HOME = "C:/tools/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
macOS/Linux:
export GHIDRA_INSTALL_DIR="/absolute/path/to/ghidra_12.1.4_PUBLIC"
export JAVA_HOME="/absolute/path/to/jdk-21"
npx -y rea-agents@latest doctor --provider ghidra --json
npx -y rea-agents@latest setup
Substitua os caminhos pelos seus próprios. Mantenha os comandos em uma sessão de terminal: após definir as variáveis de ambiente, execute novamente o setup, confirme a atualização da configuração e reinicie o OpenCode.
A verificação do provedor deve retornar um relatório bem-sucedido:
npx -y rea-agents@latest doctor --provider ghidra --json
Exemplo de análise nativa
Forneça ao agente o caminho completo para o arquivo executável e especifique o provedor:
“Use REA com um provedor configurado para explorar
/absolute/path/to/program. Liste as funções e linhas e explique a parte que trata a entrada do usuário, com referências ao código.”
Ou execute o comando diretamente do terminal:
npx -y rea-agents@latest function "/absolute/path/to/program" main --provider ghidra --json
Substitua main pelo nome ou endereço da função da lista de funções do programa alvo. O resultado contém pseudocódigo, assembler e referências entre chamadas.
Análise de outro tipo de software
Selecione a categoria de software alvo:
- JavaScript / Electron – requer Node.js e npm. Guia.
- Sites – Requer navegador Chrome, Chromium ou Edge. Guia.
- Android APK – requer JADX e JDK 17+. Manual.
- Executáveis nativos – requer Hopper, Ghidra ou IDA. Guia.
- Assemblies .NET – requer Node.js e npm. Manual.
Usando REA do terminal
Análise estática de aplicação JavaScript/Electron
npx -y rea-agents@latest analyze-javascript-application "/absolute/path/to/app" --json
Substitua o caminho pela pasta do aplicativo ou arquivo .asar.
Onde encontrar o arquivo .asar do aplicativo Electron:
- Windows:
C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar - macOS:
/Applications/<App>.app/Contents/Resources/app.asar - Linux:
/opt/<App>/resources/app.asar
Instalação global do comando rea
npm install --global rea-agents
Depois disso, o comando rea --help estará disponível.
Instalação via curl (macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/morluto/rea/main/install.sh | bash
Após a instalação, siga as instruções para configurar o agente. Se o menu de configuração não aparecer, execute rea setup.
Atualizar e excluir
Atualização do REA
npx rea-agents@latest setup
Para instalação global: rea update
Removendo REA
npx rea-agents@latest uninstall
Obtendo ajuda
- Perguntas frequentes: rea.tools/faq/ – respostas rápidas sobre atualizações, agentes e análises
- Guias: rea.tools/guides/ – exemplos para análise binária, Electron e de navegador
- Problemas do GitHub: github.com/morluto/rea/issues – reportar um problema
- Discord: discord.gg/GkcryMnJDM – perguntas, investigações e trabalhos em andamento
Problemas típicos
OpenCode não vê REA
Reinicie o OpenCode após a configuração. Use o comando doctor para testar a conexão:
npx -y rea-agents@latest doctor --client opencode --json
O provedor requer configuração
Para executar Ghidra:
npx -y rea-agents@latest doctor --provider ghidra --json
O relatório mostrará o teste que falhou e a próxima etapa sugerida.
Windows, WSL e caminhos com espaços
- Use o PowerShell para clientes Windows
- Se o agente estiver sendo executado dentro do WSL, instale o Node.js e o REA dentro desse sistema Linux e use os caminhos do Linux
- No terminal, coloque os caminhos com espaços entre aspas
Configurando o Hopper no macOS
Se o macOS solicitar que você permita a automação, permita o aplicativo que executa o REA nas Preferências do Sistema: Preferências do Sistema → Privacidade e Segurança → Automação e tente novamente.
Links
https://github.com/morluto/rea
https://rea.tools/
https://rea.tools/get-started/
https://rea.tools/guides/
https://opencode.ai/
https://opencode.ai/docs/
https://opencode.ai/docs/mcp-servers/
Leave a Reply