REA e OpenCode: instalação e primeira investigação

Written by

in

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:

  1. Inspeção: REA se conecta a ferramentas de análise e examina alvos (binários, aplicativos, sites)
  2. Análise: rastreia o código, determinando regras e comportamento
  3. 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.

  1. Baixe o exemplo:
    Download https://rea.tools/examples/notes-example.zip
    

    Descompacte o arquivo na pasta notes-example.

  2. 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 escreve notes.csv na pasta Downloads do usuário. As colunas são id e title.”

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

  1. Instale o JDK 21 de 64 bits ou posterior. Selecione um pacote para a arquitetura do seu computador.
  2. 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”.
  3. Encontre a pasta descompactada que contém ghidraRun ou ghidraRun.bat. Este caminho será necessário para a variável GHIDRA_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

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/

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.