20 KiB
English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Türkçe · Русский · Tiếng Việt · ไทย · Deutsch · Español · Français · Українська · Polski · Português (Brasil) · العربية · فارسی · Bahasa Indonesia · Italiano
REA: Faça engenharia reversa de qualquer coisa
Um único MCP para engenharia reversa de binários, aplicativos e comportamento em execução.
Viu uma funcionalidade de que gostou? Entenda como ela funciona, até o nível binário.
Site · Guias · Casos de uso
Início rápido · Como o REA funciona · O que você pode analisar · Casos de uso · Perguntas frequentes · Documentação
npx rea-agents setup
|
Participe da comunidade de engenharia reversa Discord · Perguntas e respostas · Compartilhe seus resultados |
Viu uma funcionalidade em um aplicativo que gostaria de ter no seu próprio produto? Peça ao seu agente para investigá-la com o REA. Ele pode inspecionar o aplicativo sem o código-fonte, explicar como a funcionalidade funciona, apresentar as evidências e criar uma versão para o seu projeto.
O REA conecta seu agente a ferramentas para inspecionar binários nativos, aplicativos JavaScript e Electron, assemblies .NET e sites. Você também pode usar as mesmas ferramentas pelo terminal. A análise acontece localmente, e os resultados incluem as evidências e limitações por trás de cada conclusão.
A configuração registra o REA no seu agente e instala as instruções de fluxo de trabalho correspondentes. A análise nativa pode usar uma instalação existente do Hopper ou do Ghidra; a configuração também pode instalar o Hopper opcionalmente, mediante aprovação. A análise estática de JavaScript não precisa de nenhum dos dois motores.
Visite o site do REA para instruções de configuração, guias ilustrados e estudos de caso reais.
Início rápido
Configure seu agente
Com Node.js e npm instalados, execute:
npx rea-agents setup
Escolha seus agentes, revise as alterações propostas e aprove-as. A configuração adiciona o servidor MCP do REA e as instruções de fluxo de trabalho correspondentes, com backups das configurações existentes. Reinicie seu agente depois.
A configuração oferece suporte ao Claude Code, Codex, Cursor, Gemini CLI, Grok Build e outros agentes. Consulte instalação e configuração para configurar provedores e registrar o MCP manualmente.
Peça ao seu agente
Investigue como a busca funciona no aplicativo Notes, mostre as evidências e crie uma funcionalidade semelhante para o meu projeto.
Substitua Notes pelo aplicativo alvo e indique a funcionalidade que deseja entender.
Use o terminal
Inspecione um diretório extraído de um aplicativo JavaScript/Electron ou um arquivo ASAR:
npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
O resultado inclui módulos, importações, limites do Electron e suas evidências. Substitua o caminho pelo do seu alvo, como "D:/apps/example" no Windows.
Para instalar o comando rea e usá-lo regularmente:
npm install --global rea-agents
rea --help
Para análise nativa, configure primeiro um provedor. Consulte o guia de CLI e Evidence para comandos nativos, seleção de provedores, snapshots e uso em scripts.
Atualize o REA
O REA muda rapidamente, e novas versões incluem correções frequentes de bugs. Mantenha sua instalação atualizada.
Para uma CLI instalada pelo npm:
rea update
Para atualizar os registros dos agentes e a skill, execute o comando de configuração exibido pela atualização.
Se você usa npx, atualize a configuração do agente com:
npx rea-agents@latest setup
Revise as alterações de configuração e reinicie seu agente. Para comandos avulsos da CLI, use npx rea-agents@latest seguido do comando.
Como o REA funciona
Seu agente chama o REA por MCP para inspecionar o alvo e rastrear o código relevante. O REA retorna os resultados com suas evidências. O agente usa esses resultados para fazer novas perguntas, explicar o comportamento ou escrever e testar uma implementação. Os comandos da CLI usam os mesmos fluxos de trabalho.
Abra a figura em tamanho completo.
O que você pode analisar
O REA requer Node.js 22.x (>=22.19), 24.x (>=24.11) ou 26+, além do npm. As ferramentas adicionais e os sistemas anfitriões compatíveis dependem do alvo:
| Alvo | O que o REA retorna | Requisitos e guia |
|---|---|---|
| Binários nativos | Pseudocódigo, assembly, strings, símbolos, chamadas e referências | Hopper, Ghidra ou IDA; análise nativa |
| Estrutura ELF sem execução | Seções, segmentos, símbolos/relocações originais e possíveis mecanismos de mitigação identificados por análise estática | pwntools fornecido pelo chamador no Linux x64; diagnóstico de binários |
| Bytecode EVM | Seletores de despacho, offsets de bytes, argumentos inferidos e mutabilidade | Entrada local com bytes brutos ou representação hexadecimal no Linux x64; guia de EVM sem execução |
| Falhas do Linux registradas | Registros note brutos, registradores/sinais de cada thread registrada e candidatos opcionais a mapeamentos | pwntools fornecido pelo chamador no Linux x64; GDB/pwndbg opcionais; falhas registradas |
| JavaScript / Electron | Módulos, importações, source maps, rotas, IPC e relações com complementos nativos | Node.js e npm; análise de aplicativos |
| Sites | Estrutura da página, scripts, observações de rede e capturas de tela solicitadas | Um navegador da família Chrome; análise do navegador |
| Capturas de rede salvas | Requisições, respostas, payloads acessíveis e localizações de origem | HAR; mitmdump no Linux para capturas no formato nativo do mitmproxy; guia de capturas |
| Assemblies .NET | Metadados, instruções CIL, dependências nativas declaradas e comparações de builds | Inspeção estática; guia de código gerenciado |
| APKs Android | Declarações do manifesto, classes, métodos descompilados e referências | JADX sem interface gráfica e um JDK completo no Linux/macOS/Windows x64; guia de Android |
| Dispositivos Android | Dispositivos, pacotes, processos, logs, despejos, capturas de tela e transferências de APK/arquivos | adb fornecido pelo chamador (emulador ou aparelho); guia de ADB |
| Projetos JEB | Unidades de projeto do motor, hashes de artefatos e pseudocódigo de tipos/métodos | Um cliente JEB iniciado pelo chamador servindo MCP, selecionado com REA_JEB_MCP_URL; guia de JEB |
| Recursos do Android | Manifesto decodificado, tabelas de strings, idiomas e fatos de versão | Lançador do Apktool fornecido pelo chamador; guia de recursos |
| Firmware | Regiões, resultados de extração e encaminhamentos à análise nativa | Binwalk / Unblob no Linux; guia de firmware |
| Pacotes e recursos | Inventários de arquivos, digests, plists, estrutura de bundles Apple e recursos extraídos | Guia de artefatos e JavaScript, aplicativos Apple |
| Comportamento de processos | Saída do terminal, interações, observações de encerramento e do sistema de arquivos, e comparações entre execuções | Linux/macOS com PTY nativo; captura de processos |
A inspeção estática de JavaScript e .NET lê os arquivos fornecidos sem executar o aplicativo. A captura em execução inicia o alvo selecionado ou interage com ele usando as permissões do seu usuário; cada guia descreve seus efeitos.
Os formatos nativos e os sistemas anfitriões compatíveis variam por provedor. Consulte configuração do Hopper e Ghidra, o guia do IDA e o suporte experimental ao Ghidra no Windows. O Ghidra também oferece análise de DOS de 16 bits. Para selecionar um provedor, consulte o guia da CLI. Verifique a disponibilidade nas versões das funcionalidades adicionadas após a versão mais recente no npm.
Casos de uso
DX-Ball: reconstruir um cálculo de panorâmica de áudio
Siga uma chamada de áudio até a função auxiliar que converte posição em panorâmica, inspecione as instruções e transforme pseudocódigo incompleto em C. A reconstrução passa em 3.205 casos com o x86 original e reproduz todos os 63 bytes da função compilada.
Leia o estudo de caso · Repositório da reconstrução
Notion: rastrear a ponte da área de transferência do Electron
Encontre a API da área de transferência do renderizador, siga-a por preload e IPC até o processo principal e inspecione o formato da área de transferência com seus dados de formatação.
TH04: recuperar o cálculo de um anel de projéteis no DOS
Inspecione as instruções de 16 bits do jogo original para PC-98, recupere os cálculos de ângulos fixos e direcionados e compare o C++ reconstruído com a saída do compilador da época.
Leia o estudo de caso · Repositório da reconstrução
Se você usou o REA em algo interessante, gostaríamos de conhecer. Compartilhe seu caso em uma issue ou um pull request, incluindo o alvo, sua pergunta, como o REA ajudou e o que descobriu.
Perguntas frequentes
Quais agentes podem usar o REA?
Qualquer agente que ofereça suporte a servidores MCP locais. A configuração prepara os agentes compatíveis; outros clientes podem usar o registro manual do MCP.
Preciso do Hopper, Ghidra ou IDA?
A análise nativa aprofundada usa um desses motores. A inspeção estática de JavaScript e .NET funciona sem um motor de análise nativa. A configuração pode instalar o Hopper após aprovação; Ghidra e IDA usam as instalações existentes. Consulte configuração dos provedores.
Preciso iniciar o Hopper antes?
O REA inicia o Hopper quando uma operação precisa dele. No macOS, um diálogo na primeira execução pode pedir que você escolha o modo de demonstração ou ative a licença. Consulte inicialização do Hopper e solução de problemas.
O que faz a instalação da skill pelo skills.sh?
A skill fornece instruções de investigação ao seu agente. Use npx rea-agents setup para registrar o servidor MCP do REA e instalar as instruções correspondentes, depois reinicie seu agente. Consulte instalação apenas da skill.
Que código o REA retorna?
A análise nativa retorna pseudocódigo e assembly. A análise de JavaScript/Electron recupera módulos e suas relações. Seu agente usa esses resultados para escrever e testar uma implementação; os casos de uso apresentam exemplos completos.
O REA envia meu aplicativo para algum servidor?
O REA analisa os alvos localmente. Seu agente recebe os resultados das ferramentas, e o provedor do modelo tem sua própria política de dados.
O que devo fazer se encontrar um bug?
Atualize primeiro; uma versão recente pode já ter corrigido o problema.
Para uma CLI instalada pelo npm:
rea update
Para configurar o agente por npx:
npx rea-agents@latest setup
Se você usa um agente, conclua a atualização da configuração e reinicie-o. Tente executar a mesma tarefa novamente. Se o problema persistir, abra uma issue com sua versão do REA, o tipo de alvo, os passos para reproduzir e a saída do erro.
Documentação
Comece pelos guias práticos do site. Para opções exatas, pré-requisitos e contratos dos resultados:
- Instalação e configuração: registro de agentes, configuração de provedores, atualizações e desinstalação.
- Prontidão e solução de problemas: diagnóstico de um agente ou motor de análise específico.
- CLI e Evidence: comandos, seleção de provedores, snapshots, importação/exportação e status de saída.
- Contratos MCP e prompts para agentes: resultados das ferramentas, sessões e investigações guiadas.
- Catálogo de ferramentas: inventário de ferramentas, provedores e comandos da CLI gerado durante o build.
- Roadmap: trabalho planejado e acompanhamento das capacidades.
Relate vulnerabilidades conforme SECURITY.md.
Histórico de estrelas
🎉 90.000 estrelas no GitHub — muito obrigado!
Obrigado a todos que usam o REA, relatam bugs, sugerem funcionalidades, testam builds e contribuem com correções.
Aviso legal
O REA fornece ferramentas para pesquisa, análise e reconstrução por engenharia reversa dentro da lei. Você é responsável por obter as autorizações necessárias e cumprir as leis aplicáveis. O projeto não apoia usos ilegais ou não autorizados.
Contribuir
Sua ajuda com o REA é bem-vinda! Abra uma issue para relatar um bug ou sugerir uma funcionalidade, ou envie um pull request para melhorar o código ou a documentação.
Consulte CONTRIBUTING.md para configurar o ambiente de desenvolvimento e as verificações, o guia de testes para os fluxos de verificação e o mapa da arquitetura para a estrutura do projeto.
