Contribuição open source · TypeScript · MCP · AI Agents · Reverse Engineering

morluto/rea

Ferramenta de código aberto que dá a agentes de IA recursos de engenharia reversa para entender como um software funciona, de binários nativos a sites.

  • 5 PRs em revisão
  • 101,4k estrelas no GitHub
  • 11/10/2026 primeiro PR

Ver cada PR Repositório no GitHub

O projeto

O REA (Reverse Engineer Anything) conecta agentes de programação como Claude Code, Codex e Cursor a ferramentas de engenharia reversa, que também funcionam direto no terminal. Com ele, o agente examina aplicativos sem acesso ao código-fonte: executáveis nativos, apps JavaScript e Electron, programas .NET, apps Android e sites.

A análise roda na máquina do usuário, e cada resposta traz as evidências e as limitações por trás da conclusão. O agente usa esses resultados para fazer novas perguntas, explicar o comportamento ou escrever e testar uma implementação equivalente. Os casos publicados incluem rastrear como o Notion lida com a área de transferência e reconstruir cálculos de jogos antigos a partir do binário original.

Como cada PR foi feito

  • Um problema por PR

    Cada PR resolve uma coisa só, com a menor mudança possível. Isso simplifica a revisão, reduz o risco de efeito colateral e permite desfazer uma mudança sem levar outras junto.

  • O problema vira teste

    As correções chegam com testes automatizados que cobrem o caso que falhava, para o problema não voltar sem que ninguém perceba.

  • Os critérios do próprio projeto

    Formatação, análise estática e a suíte completa de testes rodam na integração contínua do projeto, e a mudança só entra depois da revisão do mantenedor.

  • Escrito para quem revisa

    A descrição de cada PR explica o problema, a mudança e como ela foi testada, para o mantenedor decidir com segurança.

Cada PR, em linguagem de negócio

Estes PRs estão em revisão pelos mantenedores e ainda não foram incorporados. Clique em um deles para ver o problema, a proposta e o valor esperado.

  1. #1984aberto em 11/10/2026Em revisão Busca de classes em apps Android sem falhar em pacotes grandes A busca de classes em apps Android do REA falhava por completo quando o descompilador listava a mesma classe mais de uma vez, algo comum em apps grandes; o PR propõe aceitar a repetição e devolver resultados sem duplicatas.
    O problema
    Para examinar um app Android, o REA usa um descompilador que lista as classes do pacote, página por página. Em apps grandes, divididos em vários arquivos de código e que embutem bibliotecas populares, essa lista traz nomes de classe repetidos. O REA tratava qualquer repetição como inventário inconsistente, e a busca de classes respondia com "saída ilegível", inutilizando a descoberta de classes nesses apps.
    O que o PR propõe
    A correção proposta mantém a conferência de que todas as classes carregadas foram lidas, mas deixa de recusar nomes repetidos e remove as duplicatas dos resultados antes de filtrar pela busca. Um teste novo simula um inventário com classe repetida, falha na versão atual e confere que o total e os resultados saem corretos.
    Valor esperado
    Com a mudança, quem investiga apps Android grandes com o REA volta a conseguir buscar classes, e o resultado continua conferindo que nada ficou de fora.
  2. #1983aberto em 11/10/2026Em revisão Instalação do REA no Hermes funciona com arquivo vazio O comando que conecta o REA ao agente Hermes falhava quando o arquivo de configuração do Hermes existia mas estava vazio, situação comum na primeira execução; o PR propõe tratá-lo como um arquivo novo.
    O problema
    O comando de instalação do REA registra a ferramenta na configuração de cada agente de IA suportado. No Hermes, um arquivo de configuração vazio, estado comum logo após a primeira execução, era lido como configuração malformada, e a instalação terminava com falha. A desinstalação, a manutenção de atualizações e a leitura compartilhada da configuração recusavam o mesmo arquivo.
    O que o PR propõe
    A correção proposta aplica a regra de arquivo vazio, que já valia para os agentes configurados em JSON, antes de ler o arquivo do Hermes, e assim ele é configurado como se não existisse. Os demais formatos seguem como antes, e testes novos configuram arquivos vazios e com só uma quebra de linha e conferem o que foi gravado.
    Valor esperado
    Com a mudança, quem instala o REA para usar com o Hermes conclui a configuração na primeira tentativa, como já acontecia quando o arquivo não existia.
  3. #1982aberto em 11/10/2026Em revisão Apps universais do Mac lidos sem falso erro de integridade Ao abrir apps universais do Mac, com versões para Intel e Apple Silicon no mesmo arquivo, o REA podia acusar um erro de integridade inexistente; o PR propõe ler corretamente a parte Intel.
    O problema
    Apps universais do Mac reúnem num só arquivo uma versão para processadores Intel e outra para Apple Silicon. Quando a parte Intel traz uma marcação de capacidade comum nesses executáveis, o REA interpretava errado a descrição impressa pela ferramenta da Apple, não encontrava a parte correspondente no arquivo e relatava uma falha de integridade. O caso foi observado com o Sublime Text no macOS 26.
    O que o PR propõe
    A correção proposta passa a ler a marcação de capacidade que a ferramenta da Apple imprime, com nome ou em hexadecimal, e, quando ela não aparece, compara as partes pelo nome, tipo de processador, posição e tamanho. Testes novos cobrem os formatos da marcação e um arquivo universal cuja leitura falha na versão atual.
    Valor esperado
    Com a mudança, quem analisa apps de Mac com o REA recebe as duas versões do programa listadas, em vez de um alarme falso de arquivo corrompido.
  4. #1981aberto em 11/10/2026Em revisão Módulos WebAssembly válidos analisados em vez de recusados A análise de WebAssembly do REA recusa um módulo válido quando o nome de uma das suas seções tem um caractere nulo; o PR propõe que ele seja analisado normalmente.
    O problema
    O REA usa um conjunto de ferramentas externas para examinar módulos WebAssembly e confere o que uma delas exibe com o que outra decodifica. Quando o nome de uma seção personalizada contém um caractere nulo, que o formato permite, a exibição corta o nome nesse ponto e a comparação falha. O módulo, que é válido, volta como "saída ilegível" em vez de gerar o relatório de evidências.
    O que o PR propõe
    A correção proposta compara a linha exibida com o nome decodificado só até o primeiro caractere nulo, a mesma regra que o projeto já aplica aos nomes de módulo desde o PR #1967. As demais checagens de formato, contagem e posição das seções continuam valendo, e um teste novo cobre o caso e segue recusando nomes que divergem antes do caractere nulo.
    Valor esperado
    Com a mudança, quem analisa um binário WebAssembly com esse tipo de nome recebe o relatório de evidências em vez de um erro, sem abrir brecha: um nome forjado continua sem conseguir se passar por outro.
  5. #1925aberto em 11/10/2026Em revisão Caminhos de arquivo inválidos barrados logo na entrada O PR propõe que as ferramentas de análise de binários recusem logo na entrada, com um erro claro, caminhos de arquivo com um caractere que nenhum sistema operacional aceita.
    O problema
    O REA recebe pedidos de agentes de IA para analisar arquivos. As ferramentas que examinam executáveis do Windows, binários e registros de falha do Linux, módulos WebAssembly e contratos inteligentes do Ethereum aceitam caminhos com um caractere nulo, que nenhum sistema operacional permite em nomes de arquivo. O pedido passa pela checagem de entrada e só falha adiante, no acesso ao disco ou a programas externos, com mensagens genéricas ou que não apontam a causa real.
    O que o PR propõe
    A correção proposta aplica a essas ferramentas a mesma regra de entrada que outras ferramentas do REA já usam: o caminho com caractere nulo é recusado na chegada, com uma mensagem clara que indica o campo com problema. O PR estende os testes das regras de entrada a cada campo alterado, e testes independentes feitos na revisão mostraram respostas idênticas às de antes para caminhos válidos.
    Valor esperado
    Com a mudança, o agente de IA recebe um erro que consegue entender e corrigir, e nenhum acesso ao disco ou programa externo é acionado com um caminho desse tipo. Para quem usa caminhos válidos, nada muda.

Números atualizados em 11/10/2026.

O mesmo cuidado no seu sistema

Os mesmos hábitos destes PRs valem para backends que movimentam dinheiro: reproduzir o problema antes de corrigir, provar a correção com teste e não deixar dado sensível escapar.

Falar com o Vinícius Início