O que o REA (Reverse Engineer Anything) consegue inspecionar? Lista de alvos suportados por grupo

O REA (Reverse Engineer Anything) é um servidor MCP com CLI, open source, que dá a agentes de código ferramentas para analisar software sem acesso ao código-fonte. Ele inspeciona binários nativos (com Hopper, Ghidra ou IDA), ELF, binários Go, assemblies .NET, WASM (com WABT 1.0.42), APKs (com JADX e JDK), dispositivos Android (com adb), projetos JEB, JavaScript/Electron, websites (com navegador da família Chrome), capturas de rede, SQLite, crashes Linux gravados, firmware (com Binwalk/Unblob), bytecode EVM e pacotes. O que decide se o seu alvo funciona é a dependência externa que ele exige
O nome promete "qualquer coisa", mas a pergunta que importa é outra: o SEU alvo está na lista? E o que ele exige pra funcionar na sua máquina?
Fala aí, beleza? Bora destrinchar isso de um jeito prático 🙂
O REA (Reverse Engineer Anything) é um projeto open source: um servidor MCP com CLI que dá a agentes de código as ferramentas pra analisar software sem acesso ao código-fonte
Ou seja, tu pluga ele no teu agente e o agente passa a enxergar pseudocódigo, símbolos, manifest de APK, tabelas de SQLite e por aí vai
Um detalhe importante logo de cara: ele é voltado pra investigação de alvos de software autorizados, com análise e evidência locais
E o que sai no final? Pseudocódigo com evidências e uma lista dos pontos que o agente não conseguiu resolver (os famosos unknowns), o que é bem mais honesto que um "confia em mim" da IA haha
Formação Claude Code
Domine Claude Code do absoluto zero até o avançado
- 120 aulas
- 4 projetos
- 9h 45min
Tabela: cada alvo do REA, o que ele retorna e o que exige
Essa é a tabela de consulta rápida, montada a partir do README oficial
| Alvo | O que retorna | O que exige |
|---|---|---|
| Binários nativos | Pseudocódigo, assembly, strings, símbolos, chamadas e referências | Hopper, Ghidra ou IDA (pode usar instalação existente; o setup pode instalar o Hopper opcionalmente, com aprovação) |
| ELF (layout offline) | Seções, segmentos, símbolos e relocações originais | Não informado |
| Binários Go | Versão do compilador embutida, módulos, replacements e build settings | Nada além do REA (inspeção estática embutida de ELF/PE/Mach-O thin, sem Go instalado) |
| Assemblies .NET | Metadados, instruções CIL, dependências nativas declaradas e comparações de build | Nada além do REA (apenas estático) |
| Artefatos WASM | Validação, seções, formas WAT exatas de import/export e WAT decodificado | WABT 1.0.42 fornecido pelo usuário |
| APKs Android | Declarações do manifest, classes, métodos decompilados e referências | JADX headless e JDK completo em Linux/macOS/Windows x64 |
| Dispositivos Android | Dispositivos, pacotes, processos, logs, dumps, capturas de tela e transferência de APK/arquivos | adb fornecido pelo usuário (emulador ou hardware) |
| Projetos JEB | Units do projeto via engine, digests de artefatos e pseudocódigo de tipos/métodos | Cliente JEB iniciado pelo usuário servindo MCP, selecionado com REA_JEB_MCP_URL |
| JavaScript / Electron | Módulos, imports, source maps, rotas, IPC e relação com native add-ons | Nada além do REA (análise estática sem engine de análise nativa) |
| Websites | Estrutura da página, scripts, observações de rede e screenshots solicitados | Navegador da família Chrome |
| Capturas de rede salvas | Requests, responses, payloads expostos e localizações no código-fonte | Não informado |
| Bancos SQLite | Tabelas, colunas, índices, views, triggers e linhas selecionadas de tabelas comuns | Não informado |
| Crashes Linux gravados | Notas brutas, registradores/sinais de cada thread gravada e candidatos de mapeamento opcionais | Não informado |
| Firmware | Regiões, resultados de extração e handoff para análise nativa | Binwalk / Unblob em Linux |
| Bytecode EVM | Seletores de dispatch, offsets de bytes, argumentos e mutabilidade inferidos | Carrier raw/hex local em Linux x64 |
| Pacotes e recursos | Inventário de arquivos, digests, plists, anatomia de bundles Apple e recursos extraídos | Não informado |
Agora bora quebrar isso em grupos, porque ninguém chega pensando "quero analisar um ELF offline", né? A pessoa chega com um PROBLEMA 😛
Binários compilados: nativos, ELF, Go, .NET e WASM:
Esse é o grupo clássico da engenharia reversa: executáveis e bibliotecas que tu recebeu sem o fonte
O REA analisa binários nativos?
Sim, e aqui ele devolve pseudocódigo, assembly, strings, símbolos, chamadas e referências
Porém, ele não faz isso sozinho: precisa de um backend como Hopper, Ghidra ou IDA
Se tu já tem um desses instalado, ele pode usar a instalação existente
E o setup pode instalar o Hopper opcionalmente, sempre pedindo tua aprovação antes
O REA lê arquivos ELF?
Sim, no modo de layout offline ele retorna seções, segmentos, símbolos e relocações originais
É aquele raio-x da estrutura do arquivo, útil pra entender como o binário foi montado antes de partir pro pseudocódigo
Dá pra analisar binários Go sem ter Go instalado?
Dá sim, e essa é uma das partes mais massa da lista
Ele extrai a versão do compilador embutida, os módulos, os replacements e as build settings
A inspeção é estática e embutida, cobrindo ELF, PE e Mach-O thin, sem exigir Go na máquina
O REA inspeciona assemblies .NET?
Sim: metadados, instruções CIL, dependências nativas declaradas e comparações de build
Aqui não tem dependência extra, é tudo análise estática
A comparação de build é interessante quando tu quer saber o que mudou entre duas versões do mesmo assembly
E WebAssembly (WASM)?
Também entra: validação, seções, formas WAT exatas de import/export e WAT decodificado
Só que exige o WABT 1.0.42, fornecido por você
Tome cuidado com isso! O requisito fala de uma versão específica, então não adianta ter "um WABT qualquer" jogado no PATH
Mobile: APKs, dispositivos Android e projetos JEB:
Segundo grupo, pra quem mexe com app Android
O REA decompila APK?
Sim, ele entrega declarações do manifest, classes, métodos decompilados e referências
O requisito é JADX headless e um JDK completo, em Linux, macOS ou Windows x64
Repara no "completo": um runtime enxuto não é a mesma coisa que o JDK inteiro
Dá pra inspecionar um celular Android conectado?
Dá: dispositivos, pacotes, processos, logs, dumps, capturas de tela e transferência de APK e arquivos
Pra isso tu precisa do adb, fornecido por você, e pode ser emulador ou hardware de verdade
Que diferença isso faz pro APK? O APK é o arquivo parado, o dispositivo é o app rodando, com processo e log ao vivo
O REA conversa com o JEB?
Sim, ele puxa units do projeto via engine, digests de artefatos e pseudocódigo de tipos e métodos
O esquema aqui é diferente: tu inicia um cliente JEB que serve MCP, e o REA aponta pra ele pela variável REA_JEB_MCP_URL
Web e rede: JavaScript, Electron, websites e capturas:
Terceiro grupo, e talvez o mais útil pra quem é dev web e cai num app "misterioso"
O REA analisa apps JavaScript e Electron?
Sim: módulos, imports, source maps, rotas, IPC e a relação com native add-ons
A análise estática de JS não exige engine de análise nativa, então dá pra começar sem instalar Ghidra e afins
O IPC e os native add-ons são justamente onde um app Electron costuma esconder a parte interessante 😀
Ele consegue inspecionar um website?
Consegue: estrutura da página, scripts, observações de rede e screenshots quando solicitados
O requisito é um navegador da família Chrome
E capturas de rede salvas?
Também: requests, responses, payloads expostos e as localizações no código-fonte
Essa última parte é a que liga o tráfego com o código, ou seja, não fica só no "saiu um request", mas em de onde ele saiu
Dados, crashes, firmware, contratos e pacotes:
Quarto grupo, com alvos que não são "um programa" óbvio, mas que aparecem MUITO no dia a dia
O REA abre banco SQLite?
Sim: tabelas, colunas, índices, views, triggers e linhas selecionadas de tabelas comuns
Útil quando um app guarda estado num .db local e tu quer entender o esquema
Dá pra analisar crash no Linux?
Dá, a partir de crashes gravados: notas brutas, registradores e sinais de cada thread gravada e candidatos de mapeamento opcionais
O REA trabalha com firmware?
Sim: regiões, resultados de extração e handoff pra análise nativa
Esse handoff é a parte esperta: extrai o que tem dentro do firmware e passa pros backends de binário nativo
O requisito é Binwalk ou Unblob em Linux
E contratos inteligentes (bytecode EVM)?
Também entra: seletores de dispatch, offsets de bytes, argumentos e mutabilidade inferidos
Repara no "inferidos": sem fonte, é dedução a partir do bytecode, não certeza
Exige carrier raw/hex local em Linux x64
O REA inspeciona pacotes e bundles?
Sim: inventário de arquivos, digests, plists, anatomia de bundles Apple e recursos extraídos
Bom pra quando tu quer entender o que vem dentro de um app antes de partir pro binário em si
Qual grupo resolve o seu problema?
Bora traduzir a lista pra situações reais, sem prometer milagre, beleza?
- Tenho um .exe ou .dylib sem fonte: binários nativos, com Hopper, Ghidra ou IDA
- App Electron fazendo chamadas estranhas: JS/Electron pra ver IPC e rotas, mais capturas de rede pra ligar o tráfego ao código
- App Android: APK se tu tem o arquivo, dispositivo Android se quer ver o app rodando
- Crash em produção no Linux: crashes Linux gravados
- Contrato inteligente só com bytecode: bytecode EVM
- Dump de firmware: firmware, com handoff pros binários nativos
- Executável Go ou assembly .NET: os grupos de Go e .NET, que dispensam ferramenta extra
Se liga nisso: quem decide se o alvo funciona na TUA máquina não é o REA, é a dependência externa
Ghidra, JADX, adb, WABT, Binwalk, navegador da família Chrome… se a peça não está lá, o alvo não roda
É a mesma lógica de checar o que o NotebookLM aceita como fonte antes de subir um arquivo: primeiro confirma a compatibilidade, depois perde tempo 😛
E de novo, porque é sério: só alvos autorizados
Engenharia reversa em software que tu não tem permissão pra analisar não vira legítima só porque foi um agente que fez
Próximo passo: instalar o REA no seu agente:
Recapitulando o caminho:
- Identifique em qual grupo o teu alvo cai (binários, mobile, web e rede ou dados/crashes/firmware/contratos/pacotes)
- Garanta a ferramenta que esse alvo exige, conforme a tabela lá de cima
- Rode o setup no terminal:
npx rea-agents@latest setup
Esse comando registra o REA no teu agente e instala as instruções de workflow correspondentes
O erro comum aqui é rodar o setup achando que ele resolve tudo e esquecer o passo 2: o REA fica registrado, mas o alvo que depende de JADX ou WABT, por exemplo, não vai funcionar sem eles
Os agentes suportados no setup são Claude Code, Codex, Cursor, Gemini CLI, Grok Build e outros
O repositório oficial é o morluto/rea no GitHub, com a documentação em morluto.github.io/rea
Cuidado com repositórios de nome parecido prometendo download de zip: confira se tu está mesmo no morluto/rea antes de instalar qualquer coisa
No fim, o "Anything" do nome é menos sobre fazer tudo e mais sobre cobrir MUITO terreno, desde que tu traga a ferramenta certa pra cada alvo
Até o próximo post! 🙂
Perguntas frequentes
O REA consegue analisar bytecode EVM de contratos inteligentes sem o código-fonte?
Sim, ele retorna seletores de dispatch, offsets de bytes, argumentos e mutabilidade inferidos direto do bytecode. Pra isso exige um carrier raw/hex local, rodando em Linux x64. É útil quando tu só tem o contrato deployado e nenhum fonte pra conferir.
Dá pra investigar um site com o REA, incluindo scripts e tráfego de rede?
Dá sim, o REA retorna estrutura da página, scripts, observações de rede e screenshots quando solicitados. O requisito aqui é ter um navegador da família Chrome disponível. Se tu já salvou uma captura de rede antes, ele também lê requests, responses e payloads expostos dessa captura.
O REA analisa banco de dados SQLite extraído de um app?
Sim, esse é um dos alvos da lista: ele retorna tabelas, colunas, índices, views, triggers e linhas selecionadas de tabelas comuns. É bem direto pra entender o schema sem abrir o arquivo manualmente.
O REA consegue extrair dados de firmware de dispositivo embarcado?
Consegue, o retorno inclui regiões, resultados de extração e handoff pra análise nativa depois. O requisito é ter Binwalk ou Unblob instalado, e isso roda em Linux.
Como instalar o REA e quais agentes de código ele suporta?
A instalação é feita rodando npx rea-agents@latest setup no terminal, comando que registra o REA no agente e instala as instruções de workflow correspondentes. Ele suporta Claude Code, Codex, Cursor, Gemini CLI, Grok Build e outros agentes.
O REA pode ser usado pra analisar qualquer software, mesmo sem autorização?
Não é essa a proposta: o projeto é voltado à investigação de alvos de software autorizados, com análise e evidência locais. Ou seja, a lista de alvos suportados pressupõe que tu tem permissão pra inspecionar aquele binário, app ou site.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares

Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
O que significa “ChatGPT network error” e como resolver
Network error indica falha de comunicação, mas não identifica sozinho a causa. Confira o status do ChatGPT, teste uma nova conversa e uma janela sem […]

Como usar o Antigravity do Google: guia completo do zero ao primeiro app
Aprenda neste guia prático como usar o Antigravity do Google: descubra a instalação, configuração, criação de projetos com o Agent Manager e o primeiro deploy, […]
