Aviso legal: Faça engenharia reversa apenas de software de sua propriedade, que tenha permissão por escrito para análise ou que esteja explicitamente licenciado para esse uso. O software comercial de engenharia reversa pode violar os contratos de licença do usuário final e a lei aplicável, incluindo DMCA §1201 (EUA), a Lei de Uso Indevido de Computadores (Reino Unido) e estatutos equivalentes em outros lugares. Este tutorial não é um aconselhamento jurídico.
A engenharia reversa com IA funciona melhor quando o agente possui ferramentas estruturadas em vez de suposições. Rastrear um recurso em um aplicativo Electron significa seguir um clique de botão no renderizador, através de um canal IPC, em um manipulador de processo principal e, às vezes, em um complemento nativo. Isso normalmente significa alternar entre DevTools, inspetores de Node e um desmontador. REA (Reverse Engineer Anything) é um servidor CLI e MCP de código aberto que fornece a um agente de codificação de IA uma maneira consistente de fazer isso, e cada resultado que ele retorna é registrado como evidência com seus limites declarados.
Este tutorial mostra como instalar o REA, apontá-lo para um aplicativo Electron que você tem permissão para analisar e rastrear um recurso da IU até o código nativo. Os comandos aqui vêm do projeto README de outubro de 2026. REA está em desenvolvimento ativo, então execute rea --help e verifique se há alterações no repositório.
Índice
O que é REA?
REA expõe os mesmos recursos através de uma CLI e através de MCP (Model Context Protocol, documentado em modelcontextprotocol.io). Com o MCP, um agente como Claude Code, Cursor ou Codex pode chamar ferramentas REA no meio da tarefa. Com a CLI, você mesmo pode executar a mesma análise e verificar o que o agente afirma.
Três opções de design são importantes para este fluxo de trabalho:
- Evidência para cada resultado. As chamadas bem-sucedidas são registradas como registros Evidence v2 com identidade, confiança e limitações do artefato e do provedor.
- O desconhecido permanece desconhecido. Canais IPC dinâmicos ou ambíguos são relatados como não resolvidos em vez de serem adivinhados.
- Análise local. De acordo com o README, a análise é executada em sua máquina e o REA não carrega o aplicativo em um serviço de análise hospedado.
Para JavaScript e Electron, o REA reconstrói a estrutura estática (pacotes, pontos de entrada, importações de módulos, BrowserWindow e scripts de pré-carregamento, contextBridge, IPC e complementos nativos) a partir de um diretório aprovado ou arquivo ASAR sem executar o aplicativo. Para código compilado, ele usa um provedor de análise profunda: Hopper, ou uma instalação do Ghidra fornecida por você.
Instalando o REA
REA precisa de Node.js 22.19+ ou 24.11+ e npm. Ele suporta macOS 12+, Ubuntu 24.04+, Fedora 41+ e Arch Linux de 64 bits, além de um modo experimental Windows x64 limitado à análise Ghidra de aplicativos PE nativos.
A rota recomendada é o assistente de configuração. Mostra seu plano completo e pede aprovação antes de alterar qualquer coisa:
npx --yes rea-agents@latest setup
Para instalar o rea comando globalmente:
npm install --global rea-agents
rea setup
rea doctor
rea doctor é somente leitura. Ele relata hosts não suportados, dependências ausentes, mecanismo de análise ausente e desvios de configuração. A instalação detecta Claude Code, Claude Desktop, Codex, Cursor, Gemini CLI e Windsurf e registra REA como um servidor MCP para os agentes que você escolher. Reinicie o agente depois para que ele carregue o novo registro.
Provedor de análise nativo
A análise nativa profunda usa Hopper (um aplicativo de desktop separado com licença própria e modo de demonstração gratuito) ou seu próprio Ghidra. Se você escolher Ghidra, o README diz que a versão suportada é exatamente Ghidra 12.1.2 com um JDK 21 completo de 64 bits no Linux x64. REA nunca baixa Ghidra ou Java para você. Aponte para sua instalação e verifique:
export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.2_PUBLIC
export JAVA_HOME=/absolute/path/to/jdk-21
rea doctor --json
A análise JavaScript e Electron não precisa de nenhum provedor, então você pode começar por aí.
Aprovando Pastas para Análise
REA nega acesso ao sistema de arquivos por padrão. Você aprova pastas absolutas por meio de variáveis de ambiente, e os comandos que leem seus arquivos também precisam do --approved bandeira:
export REA_EVIDENCE_ROOTS_JSON='("/absolute/path/to/evidence")'
export REA_INVESTIGATION_INPUT_ROOTS_JSON='("/absolute/path/to/releases")'
Se o REA estiver registrado em um cliente MCP, execute aprovado rea setup enquanto essas variáveis estão definidas, reinicie o cliente. A instalação copia a política não secreta no registro e a alteração posterior do ambiente shell não atualiza um processo MCP que já esteja em execução.
Mapeando o aplicativo Electron
Copie o aplicativo de destino app.asar (ou diretório do aplicativo descompactado) na pasta de entrada aprovada. Para um diretório ou .asar, rea analyze seleciona automaticamente o provedor de aplicativo JavaScript estático:
rea analyze /absolute/path/to/releases/app.asar --approved --json
rea analyze-javascript-application /absolute/path/to/releases/app.asar --approved --json
O resultado é um mapa limitado do aplicativo: pacote e pontos de entrada, módulos do bundler, BrowserWindow e configuração de pré-carregamento, exposição do contextBridge, canais IPC, processos utilitários e complementos nativos. A análise é apenas AST. Ele nunca executa o código de inicialização do aplicativo.
Seguindo o Canal IPC
Escolha o recurso que deseja entender, como uma ação “Exportar” ou “Sincronizar”. No mapa do aplicativo, procure a API que o script de pré-carregamento expõe por meio contextBridgee, em seguida, o canal IPC pelo qual a API envia. REA emparelha canais somente quando eles são literais de string exatos. Um canal criado em tempo de execução é relatado como não resolvido e você deve tratá-lo como uma lacuna a ser investigada manualmente, em vez de uma conexão REA encontrada.
Para uma rota literal, string, API, canal IPC, módulo ou exportação nativa, os fluxos de trabalho entre camadas do REA podem rastrear a evidência do aplicativo autenticado com limites de passagem explícitos. Isso mantém o rastreamento vinculado a evidências registradas, em vez da memória do agente sobre como o Electron normalmente funciona.
Transferência para análise nativa
Quando o manipulador do processo principal chama um complemento nativo (um .node arquivo), o rastreamento precisa passar do JavaScript para o código compilado. A REA entrega o resumo exato do artefato e as exportações solicitadas às evidências retidas de Ghidra ou Hopper. Ele não muda de provedor automaticamente. A partir daí, aplicam-se fluxos de trabalho de investigação nativos, incluindo binary_overview, trace_feature, get_call_graphe dossiês de função com pseudocódigo, assembly, bordas de chamada e referências.
O pseudocódigo do Ghidra é uma observação feita por esse provedor. Não é código-fonte original, e a REA afirma isso em seus registros. Para dar uma olhada rápida em uma função do terminal, você pode usar a CLI, por exemplo rea decompile ou rea analyze contra o binário nativo.
Permitindo que um agente conduza o rastreamento
Após a configuração e reinicialização, você pode descrever o objetivo em linguagem simples. O prompt de exemplo do README é:
Reverse engineer the Notes app. Find how offline search works, explain it,
and build a version for my project using TypeScript and SQLite.
Para um recurso Electron, um prompt mais específico funciona melhor. Por exemplo: “Analise o app.asar aprovado, encontre o canal IPC atrás do botão Exportar, mostre as evidências e liste tudo o que a REA não conseguiu resolver.” Em seguida, verifique você mesmo as evidências executando a correspondência rea comando. O README descreve a investigação como etapas que o agente executa com ferramentas REA: abrir e identificar o alvo, pesquisar strings e nomes em busca de pistas, seguir referências cruzadas, reconstruir o fluxo de chamadas e descompilar as rotinas relevantes. Construir sua própria versão do recurso é uma etapa separada que usa as ferramentas normais de codificação do agente.
Limitações e notas de segurança
- A REA não pretende recuperar o código-fonte original ou clonar um aplicativo automaticamente.
- A análise estática não prova o comportamento em tempo de execução. Um módulo presente em um pacote configurável nunca é relatado como executado e o REA mantém as evidências estáticas e de tempo de execução separadas.
- A observação passiva em tempo de execução de um Node ou alvo Electron em execução não captura bordas de necessidade/importação, tráfego Electron IPC ou identidade de função. Aqueles permanecem marcados como desconhecidos.
- Canais IPC dinâmicos ou ambíguos, correspondências duplicadas e resultados truncados são relatados como desconhecidos em vez de preenchidos.
- Alguns fluxos de trabalho nativos ainda dependem do Hopper e do macOS. O suporte do Windows é um modo experimental somente do Ghidra para aplicativos PE x86-64 nativos aprovados.
- Instantâneos de análise e evidências podem conter código proprietário e caminhos locais. Armazene-os localmente e mantenha as raízes aprovadas estreitas.
Resumo
O REA oferece a um agente de IA uma maneira estruturada e baseada em evidências de seguir um recurso do Electron da UI através do IPC e no código nativo, e deixa links não resolvidos visíveis. Instale-o com npx --yes rea-agents@latest setupcorrer rea doctoraprove suas pastas de entrada e mapeie o aplicativo com rea analyze --approved. Revise o repositório em github.com/morluto/rea para comandos atuais e plataformas suportadas e analise apenas software que você tem o direito de inspecionar.
Source link




