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

lista de tipos de arquivo e alvos que o REA Reverse Engineer Anything consegue inspecionar
Resposta rápida

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
Formação Recomendada

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:

  1. Identifique em qual grupo o teu alvo cai (binários, mobile, web e rede ou dados/crashes/firmware/contratos/pacotes)
  2. Garanta a ferramenta que esse alvo exige, conforme a tabela lá de cima
  3. 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.

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares