Em 8 de outubro de 2026, um repositório do qual ninguém tinha ouvido falar três meses antes chegou ao primeiro lugar nos trending do GitHub.
Ele se chama REA, Reverse Engineer Anything (Faça Engenharia Reversa de Qualquer Coisa), e entrega ao seu agente um desmontador real.
**Salve este link — se você quiser a versão longa, o curso completo de 20 aulas sobre isso está disponível em**
Ele te leva de um terminal em branco até uma reconstrução que passa nos próprios testes de paridade, com cada comando e prompt escritos por extenso. COMECE POR AQUI.
A reação foi a mesma em todos os lugares naquela semana.
Matthew Berman resumiu tudo em três palavras, e 3,6 milhões de pessoas viram.
https://x.com/MatthewBerman/status/2108245653843509415
O REA é um servidor MCP open-source com uma CLI que se conecta ao Claude Code, Codex, Cursor e Gemini CLI.
Licença MIT, criado por morluto, primeira versão lançada em 12 de julho de 2026 e, três meses depois, mais de 100.000 estrelas no GitHub.
Tudo roda localmente, e cada conclusão vem etiquetada como observação, inferência ou incógnita, acompanhada do endereço ou ponto de chamada correspondente.
Este é o caminho completo de um binário lacrado até uma reconstrução que é sua, em oito passos.

Antes dos passos: o que as pessoas já entregaram com isso
A ferramenta não é a história, mas sim o que foi entregue em quatro semanas.
A ArtCraft reconstruiu sete aplicativos da Adobe como alternativas gratuitas e open-source, e depois partiu para cima do Office com WordCraft, GridCraft e DeckCraft.
Doze aplicativos até agora, todos escritos do zero em Rust, nativos em três plataformas e, com exceção de um, todos também rodam em uma aba do navegador via WebAssembly.
No lado dos games, os comprovantes são ainda mais específicos:
- Super Mario Sunshine ganhou uma portagem nativa para PC: cerca de 365 horas de agente e 17,3 bilhões de tokens, usando Claude e Codex juntos
- Um jogo Touhou reconstruído com agentes no blog oficial do REA: 697 funções, 696 correspondências exatas, jogável em cerca de 12 dias
- O autenticador Aegis (3.077 classes) desmontado e reconstruído, com todos os 133 casos de teste passando
- A função de pan de som do DX-Ball reconstruída em C, passando em 3.205 casos de teste originais x86 e reproduzindo todos os 63 bytes compilados
Repare no que essa lista não é.
Ninguém quebrou uma verificação de licença, ninguém publicou o código-fonte de outra pessoa.
Cada um desses itens é um comportamento recuperado, documentado e reconstruído em código novo.
01. Mapeie o alvo antes de abrir qualquer coisa
O motivo pelo qual isso se espalhou não é ler bem uma única coisa. Ele lê quase tudo e mostra as evidências de cada afirmação que faz.
https://x.com/RoundtableSpace/status/2109165852578992582
Essa lista também é a primeira decisão que você toma. A forma mais comum de perder uma tarde é pegar um desmontador quando o alvo é um app Electron cujo JavaScript está ali, escancarado.
Aponte o REA para um Electron e você obtém módulos, imports e limites de IPC em segundos, sem motor nenhum; já um Mach-O ou ELF nativo abre um banco de dados do Hopper, que é o caminho mais profundo e mais lento.
Saber em qual deles você está economiza horas, então faça disso a tarefa do seu primeiro prompt.
1Quero entender como [FUNCIONALIDADE] funciona no [APP], que está em [CAMINHO ABSOLUTO].2 Primeiro, me diga que tipo de alvo é esse (nativo, Electron/JS, .NET, Go, APK, WASM)3 e escolha a ferramenta REA certa para abri-lo. Não comece a análise profunda ainda.4 Depois, mapeie-o em um parágrafo: com o que foi construído, qual o tamanho, onde você5 procuraria primeiro por [FUNCIONALIDADE]. Mantenha observações, inferências e incógnitas separadas.

A parte que quase ninguém menciona: muitos jogos Unity entregam sua lógica em .NET, e o REA lê .NET sem precisar de um motor extra.
Esse é o único motivo pelo qual um jogo comprado na Steam vai de binário para C# editável em menos de meia hora.
E todo app Electron na sua máquina pode ser lido agora mesmo, sem nem executá-lo:
1# onde o JavaScript fica2macOS: /Applications/<App>.app/Contents/Resources/app.asar3Windows: C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar4 npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json
02. Instale em cinco minutos e adicione um motor
O que faz isso funcionar não é um prompt genial. É um motor de desmontagem real conectado ao agente, que é exatamente como um desenvolvedor descreveu.
https://x.com/techNmak/status/2108431092462338178
A instalação registra o servidor MCP no seu agente e instala a skill de workflow correspondente.
Ela mostra cada alteração antes de gravar qualquer coisa e faz backup do que toca.
node -v # Node 22.19+, 24.11+ ou 26+. As versões 23 e 25 não são suportadas
1npx rea-agents@latest setup # registra o servidor MCP, pergunta antes de gravar2npm install --global rea-agents # o comando curto rea, para sempre3rea --help4# reinicie o agente e depois verifique. o doctor apenas checa, nunca altera nada5npx -y rea-agents@latest doctor --client claude_code --json
A reinicialização importa mais do que parece: uma sessão de terminal precisa ser iniciada do zero, e apps desktop exigem encerramento total, porque só fechar a janela não basta.
Depois, adicione um motor apenas para o que você realmente quer ler:
Vale a pena escrever um arquivo antes do seu primeiro alvo real: as regras da casa no claude-md.
Analise apenas o que é seu, marque cada afirmação como observação, inferência ou incógnita, cite o endereço por trás dela e nunca considere um comportamento recuperado como concluído sem um teste passando.
1# programas e jogos nativos: Ghidra 12.1.x e JDK 21 ou mais recente2 export GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.1.4_PUBLIC3 export JAVA_HOME=/absolute/path/to/jdk-214 npx -y rea-agents@latest doctor --provider ghidra --json56 # apps Android: JDK 17+ e jadx-headless-mcp 0.7.17 export REA_JADX_MCP_JAR=/absolute/path/jadx-headless-mcp-0.7.1-all.jar8 rea inspect-android-package /path/App.apk910 # bytecode de smart contracts, Linux x64 por enquanto11 rea inspect-evm-interface ./runtime.hex hex --json
03. Reconhecimento: o mapa vem antes do código
Não abra nenhuma função ainda.
Um único comando diz em qual máquina o binário roda, quantas funções existem dentro dele e todo o texto legível enterrado lá.
Esse texto é a pista mais rápida que você vai ter o dia inteiro: endpoints, strings de erro e nomes de funcionalidades descrevem o app antes de você ler qualquer lógica.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1.284 identificadas5 entry: _main @ 0x1000051c067rea.search { query: "http" }8 0x10004a2c0 "https://api.target.app/v3/sync"9 0x10004a300 "Authorization: Bearer "1011rea.xrefs { address: "0x100012ab0" }12 147 referências -> carregador de configuração principal, chamado em todo lugar

O REA conta quantas vezes cada função é chamada, e essa contagem é o número de referências cruzadas.
Uma função chamada 147 vezes é a arquitetura do app; uma chamada duas vezes é um auxiliar que pode esperar.
Ordene por esse número e vá descendo, nunca pela ordem do arquivo, porque a ordem do arquivo é como as pessoas perdem um fim de semana dentro de um binário que tinha quatro funções interessantes.
04. Descompile uma função e peça para o Opus nomear tudo nela
Um descompilador transforma instruções brutas de máquina em algo próximo de C.
O resultado sai rústico: nomes como var_28, casts por toda parte, ramificações embaralhadas. E rústico está ótimo, porque legível é tudo o que o modelo precisa.
1# uma função por endereço, como JSON que você pode salvar e reutilizar2rea decompile /path/to/Target 0x100012ab0 --provider hopper --json > fn_config.json34# ou encontre-a pelo nome e siga suas referências5rea function /path/to/Target parseConfig --provider hopper --json6rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json
Então passe esse resultado para o Opus 5.5 e faça ele executar a parte que o desmontador não consegue:
1Aqui está o pseudocódigo descompilado de uma função com 147 referências cruzadas.231. Renomeie cada variável com base em como ela é usada e explique o propósito em uma frase.42. Liste as estruturas de dados que ela lê e escreve e dê um nome ao padrão que segue.53. Reescreva como código limpo e idiomático na linguagem que as convenções de chamada sugerem.64. Sinalize qualquer tratamento de erro, validação de entrada ou verificação de segurança ausente.78Pense no nível de esforço xhigh antes de responder. Marque qualquer coisa de que não tiver certeza.

O Opus 5.5 vem com cinco níveis de esforço: low, medium, high, xhigh e max.
Medium inspeciona e navega, high anota funções comuns, max serve para código ofuscado e aritmética pesada de ponteiros.
O esforço é o ajuste de qualidade mais importante nesse pipeline, e a maioria das pessoas deixa no padrão e depois culpa o modelo.
A descompilação te dá o que o código faz; o modelo te dá o porquê e os nomes para reconstruí-lo.
05. Ofuscação: quebre o que vale a pena quebrar, orçe o resto
Alguns apps são feitos para resistir exatamente ao que você está fazendo: lógica embaralhada, strings criptografadas, ramificações falsas adicionadas puramente para desperdiçar sua atenção.
Este é o único ponto em que até o melhor modelo sofre, e existem números medidos para isso.
A Elastic Security Labs apontou o Claude Opus para o embaralhador Tigress em 20 tarefas, e duas lições saltam direto daí.
Uma tentativa falha custa aproximadamente o dobro de uma bem-sucedida, porque o modelo continua insistindo antes de desistir; e a ofuscação multicamadas voltou com zero, então insistir nela é a maneira mais cara de não aprender nada.

A regra prática é um orçamento por função, não por sessão.
Remova o lixo primeiro, porque uma ferramenta gratuita chamada Caveman elimina cerca de 75% do entulho descompilado, e assim o modelo gasta atenção na lógica real.
1Esta função parece ofuscada. Trabalhe no esforço máximo (max).231. Identifique as técnicas presentes (achatamento de fluxo de controle, predicados opacos,4 código morto, criptografia de strings, divisão de funções) e aponte cada uma aqui.52. Resolva-as: remova ramificações mortas, avalie predicados opacos, desachate o6 dispatch, descriptografe strings inline se a chave for recuperável. Mostre o que sobrou.73. Avalie a confiança de 1 a 10. Abaixo de 6, nomeie as partes incertas e qual contexto8 as resolveria. Não chute em silêncio.
06. O enxame: um controlador, vários trabalhadores
Um único chat não consegue ler 500 funções direito.
Ele esquece o que viu quarenta funções atrás, nomeia a mesma struct de três formas diferentes e começa a se contradizer silenciosamente.
A solução não é mais contexto, é dividir papéis: um controlador que distribui o trabalho e trabalhadores que pegam uma função cada e param.

1Você é um controlador de engenharia reversa. O mapa de funções está em functions.json2(endereço, nome, tamanho, xref_count).341. Agrupe funções por proximidade no grafo de chamadas; ordene os clusters pela contagem de xrefs.52. Distribua cada cluster para um trabalhador. Nunca analise uma função você mesmo.63. Injete structs já resolvidas em cada briefing para que os nomes permaneçam consistentes.74. Confiança abaixo de 6 ganha uma segunda passada com contexto dos vizinhos resolvidos.85. Acompanhe o gasto acumulado de tokens e relate após cada cluster.910Você é um trabalhador. Você recebe uma função descompilada e as structs resolvidas até agora.11Retorne exatamente: endereço, propósito, confiança (1-10), structs_used, structs_new,12clean_source, flags. Reutilize nomes de structs existentes, nunca invente um segundo nome para13uma struct que o controlador já te deu. Apenas uma função. Pare quando terminar.
O REA também traz workflows guiados embutidos no servidor MCP que a maioria das pessoas nunca abre:
- - investigate_feature - rastreie uma funcionalidade da descoberta até as funções exatas
- - compare_application_versions - compare duas versões e veja o que realmente mudou
- - verify_reconstruction - confira sua reconstrução contra as evidências salvas
- - audit_residual_unknowns - liste o que ainda não foi provado
07. Sala limpa: a parede entre dois contextos é o produto
Uma reconstrução em sala limpa significa que você copia o que o app faz, e nunca o código dentro dele.
Faça certo e o que você entregar será totalmente seu; erre e você estará carregando os direitos autorais de outra pessoa dentro do seu próprio repositório.
Este é um método de 40 anos, não uma invenção de 2026.
No início dos anos 80, a Compaq reconstruiu a BIOS da IBM dessa forma por cerca de US$ 1 milhão, o que é o único motivo pelo qual PCs de outras marcas existem.
Em 1992, o tribunal em Sega vs. Accolade disse que desmontar código pode ser uso justo quando é a única maneira de entender como ele funciona, e em 2000 a Sony perdeu Sony vs. Connectix por 3 a 0 porque o emulador finalizado não continha nenhum código da Sony.
O outro lado da linha é igualmente claro: em 2011, George Hotz fez um acordo com a Sony e concordou em parar depois que a chave root do PS3 veio a público.

Quatro regras mantêm você do lado certo, e a equipe da ArtCraft verifica todas as quatro automaticamente em cada build:
- - Observe, nunca copie. Rode o alvo em caixa preta, tire print apenas da própria janela dele, nunca cole o código dele no seu projeto
- - Especificações, não fontes. Formatos de arquivo vêm de padrões públicos (OOXML é ECMA-376 / ISO 29500, além das especificações publicadas de RTF e ODF), nunca da leitura do parser de um concorrente
- - Apenas assets originais. Cada ícone, fonte, template e som é desenhado em código, de domínio público ou com licença aberta, com uma linha em um arquivo de atribuição
- - Separe os dois trabalhos. Um agente recupera o comportamento e escreve a especificação; um contexto diferente implementa apenas a partir dessa especificação
Essa última regra é a que as pessoas pulam, e ela é a verdadeira fronteira.
Seu agente investigador está contaminado por definição, porque leu a descompilação, e seu agente construtor não pode estar.
1A partir da análise concluída, escreva uma especificação de sala limpa para uma reimplementação.23Descreva APENAS o COMPORTAMENTO: cada interface pública, o modelo de dados, cada recurso visível ao usuário4como um requisito testável, os formatos de arquivo lidos e gravados, o tratamento de erros.56NÃO inclua endereços, offsets, nomes de variáveis descompiladas, assembly ou qualquer coisa7copiada do original. Um desenvolvedor que nunca viu o binário deve ser capaz de8implementar uma versão compatível apenas com este documento.910Seções: Arquitetura, Modelo de Dados, API Pública, Formatos de Arquivo, Casos de Teste.
Trabalhar a partir de uma descrição não é apenas proteção legal.
Isso permite que você tome a decisão certa para a sua própria linguagem em vez de herdar escolhas que alguém fez há duas décadas, e é por isso que o WordCraft é mais rápido que o Word em alguns pontos.
08. Verifique a paridade e depois entregue via MCP
Você nunca teve o código-fonte original, então não pode comparar linha por linha.
Você compara comportamento: as mesmas entradas nas duas builds, as mesmas saídas de volta.
1Crie um harness de testes comportamentais comparando o binário original e minha reconstrução.23Gere 50 entradas: 30 normais, 10 extremas (vazio, tamanho máximo, unicode), 10 de erro4(malformado, corrompido). Rode cada uma em ambos, compare byte a byte onde possível5e semanticamente no restante. Relate a taxa de correspondência, divergências e uma severidade para cada6(cosmético / comportamental / crítico). Salve em report.md.
"Acho que bate" não é evidência; uma taxa de correspondência é, e esse relatório é a coisa mais convincente que você pode colocar no topo de um post de lançamento.
Depois, lance a reconstrução da mesma forma que o REA e os apps Craft fizeram: como um servidor MCP, para que o agente da próxima pessoa possa pilotar sua ferramenta do mesmo jeito que você pilotou o REA.
Dê a cada função um nome claro e uma instalação de uma linha, e cada ação vira um comando nomeado que um clique, um atalho e um agente disparam de forma idêntica.
1claude mcp add wordcraft -- wordcraft-cli mcp23> Abra report.docx, coloque todos os títulos em negrito 14pt, exporte para PDF4 ok select.all-headings -> 12 selecionados5 ok format.font-size 14 . format.bold6 ok export report.pdf (texto selecionável, marcadores mantidos)
Os limites e os cinco erros que desperdiçam um fim de semana
O REA não consegue tocar no servidor, porque ele lê o que está na sua máquina, e o código rodando nos servidores de uma empresa nunca foi entregue a você.
Código descompilado é uma reconstrução, não o fonte original, e esse é o motivo pelo qual o passo 08 existe.
Binários C++ sem símbolos continuam muito mais difíceis que jogos Unity em .NET, e engines comerciais ainda exigem licenças reais.
- - Abrir um desmontador em um app Electron quando o JavaScript está ali na sua frente
- - Despejar o binário inteiro antes de ler um resumo, o que soterra a lógica e infla a conta
- - Ler funções na ordem do arquivo em vez de pela contagem de referências cruzadas
- - Deixar o modelo copiar código para a sua reconstrução, o que quebra a sala limpa em um único colar
- - Entregar sem um relatório de paridade
A verdade nua e crua sobre o lado legal, já que metade do X passou uma semana gritando sobre pirataria: ler um app no seu próprio computador é aprendizado; reconstruir uma funcionalidade a partir do seu comportamento é como a indústria funciona desde os anos 80; e copiar código ou quebrar recursos pagos é a parte que te processa.
Estude o original, entregue o seu.
Cada um desses oito passos tem uma aula por trás em
reacourse.xyz , com os prompts exatos, os modos de falha e as partes onde isso para de funcionar.
Código fechado costumava significar que você nunca saberia.
Agora significa: mostre-me as evidências.
A maioria das pessoas vai continuar pagando mensalidade por um recurso que poderiam entender em uma tarde e reconstruir em um fim de semana.
Os poucos que aprenderem a ler software vão construir o que quiserem.
Siga-me e inscreva-se no meu canal do Telegram:





