Um Guia Prático e Cauteloso
Como Fazer Engenharia Reversa em um Aplicativo com o Claude Code
O Claude Code da Anthropic e a ferramenta open source REA são citados aqui apenas para descrevê-los com precisão. A Nightschool AI é independente, sem afiliação com a Anthropic ou com os criadores do REA, nem endosso de nenhum dos dois.
Fazer engenharia reversa de um software significa estudar como ele se comporta sem ter seu código-fonte original, geralmente para entendê-lo, fazer outra coisa funcionar junto com ele, mantê-lo utilizável, ou encontrar um problema de segurança.
Ler a resposta completa
O REA é um servidor MCP e uma CLI open source que permite que um agente como o Claude Code leia a estrutura de um programa e devolva evidências concretas, um arquivo, uma função, uma chamada, em vez de um palpite. Instale-o apenas a partir do seu repositório oficial, use-o apenas em software que você possui ou está autorizado a examinar, mantenha uma sessão de build separada da que estudou o original, e converse com um advogado antes de lançar qualquer coisa construída dessa forma.
Publicado em
Principais pontos
- Engenharia reversa significa estudar um software já pronto para entender como ele funciona, geralmente sem ter seu código-fonte, por motivos como pesquisa de segurança, interoperabilidade, preservação, ou simplesmente entender algo que não tem documentação.
- O REA é um servidor MCP e uma CLI open source, publicado em github.com/morluto/rea sob a licença MIT, que permite que um agente como o Claude Code inspecione binários e aplicativos e devolva evidências: um arquivo, uma função, uma chamada.
- Estudar como um software funciona é tratado de forma diferente, legalmente, de copiar seu código ou ativos protegidos. Duas decisões do Nono Circuito dos EUA, Sega v. Accolade e Sony v. Connectix, são frequentemente citadas sobre esse ponto, mas nenhuma delas é uma regra geral.
- O próprio aviso legal do REA descarta ajudar a contornar DRM, verificações de licença ou sistemas anti-cheat, e afirma que seu resultado não concede nenhum direito sobre o programa original. Examine apenas software que você possui, escreveu, ou está autorizado a estudar.
- Um fluxo de trabalho clean-room em duas sessões, uma sessão de especificação e uma sessão de build separada que lê apenas a especificação resultante, sustenta um argumento de clean-room posterior. É uma prática, não uma garantia legal, e não substitui um advogado.
Copie e cole
Prompts para usar hoje mesmo
Teste de sanidade da configuração em um código que você já conhece
O REA está instalado e configurado com você agora. Abra o pequeno aplicativo que eu mesmo escrevi no caminho que vou te passar e, para cada arquivo, me diga quais funções ele tem, o que cada uma chama, e qualquer coisa que pareça tratar entrada vinda de fora do programa. Relate apenas o que o próprio resultado do REA realmente mostra, e avise se algo parecer incerto.
Rodar isso primeiro no seu próprio app pequeno mostra se a configuração realmente funcionou antes de apontar o REA para algo maior.
Uma primeira sessão só de especificação
Estude este aplicativo usando o REA e escreva uma especificação em linguagem simples do que ele faz: suas interfaces, os formatos de dados que lê e grava, e o comportamento de cada função principal, totalmente com suas próprias palavras. Não cite nem cole o código original, pseudocódigo, ou resultado binário diretamente na especificação. Pare assim que a especificação estiver escrita. Não comece a construir nada ainda.
Esta é a primeira metade do fluxo de trabalho em duas sessões abaixo. Salve o resultado em um arquivo de texto simples antes de encerrar a sessão.
Uma sessão de build que nunca vê o original
Aqui está um documento de especificação escrito durante uma sessão separada de engenharia reversa. Construa uma implementação nova e independente que atenda a tudo nesta especificação. Você não viu o aplicativo original, seu binário, ou seu código-fonte, e não deve pedir para ver. Se algo na especificação for ambíguo, me avise em vez de supor o que o programa original fazia.
Comece isso em uma sessão nova com apenas o arquivo de especificação anexado, não a transcrição da primeira sessão.
Uma checagem de bom senso jurídico antes de continuar
Estou prestes a fazer engenharia reversa de um software usando o REA. Antes de começar, liste o que você gostaria de saber para avaliar se isso é algo que eu realmente estou autorizado a fazer: quem é o dono do software, se uma licença ou termos de serviço já tratam disso, e se há DRM, verificação de licença, ou software anti-cheat envolvido em algum ponto. Sinalize qualquer coisa que pareça precisar de um advogado de verdade em vez do seu melhor palpite.
Trate a resposta como uma lista de perguntas para você ir verificar, não como uma liberação jurídica.
Leia o próprio aviso legal do REA antes de uma sessão real
Abra o DISCLAIMER.md do REA no próprio repositório e resuma, em linguagem simples, com quais tipos de engenharia reversa o projeto diz que não vai ajudar, e o que ele diz sobre os direitos que uma pessoa obtém ao usar o resultado dele. Quero confirmar que não estou prestes a pedir que você faça algo que as próprias regras da ferramenta já descartam.
Vale repetir depois de qualquer atualização; um aviso legal pode mudar junto com o software.
O guia completo
Toque em uma seção para abri-la.
Sobre este guia
Um post sobre uma ferramenta chamada REA, que permite que um agente de IA estude software que não escreveu, tem se espalhado nesta semana, e ele cita especificamente o Claude Code da Anthropic como um dos agentes aos quais se conecta. Este guia é para dois tipos de leitores ao mesmo tempo: pessoas que estão simplesmente curiosas sobre o que é engenharia reversa e por que alguém faz isso, e desenvolvedores que querem testar o REA com segurança usando o Claude Code em algo que realmente possuem. Ele percorre o que significa engenharia reversa, o que é o REA e o que ele consegue ler, o limite legal real entre estudar um software e copiá-lo, uma checklist de segurança que vale a pena seguir antes de instalar qualquer coisa com tanto alcance, os passos de instalação e a versão do Node.js que o próprio README do REA pede atualmente, um fluxo de trabalho clean-room em duas sessões, e os limites honestos de toda a abordagem. Nada disso é aconselhamento jurídico, e ter um processo cuidadoso não é motivo para deixar de verificar você mesmo o resultado.
Uma Área Com Longa HistóriaO Que a Engenharia Reversa Realmente Significa
Engenharia reversa significa estudar um software já pronto para entender como ele funciona, geralmente sem ter seu código-fonte original ou qualquer um dos documentos de design que entraram na sua construção. Você observa o que ele faz, como foi montado, e com o que ele se comunica, e trabalha de trás para frente a partir disso até chegar a um modelo do seu comportamento.
As pessoas fazem isso por motivos que são, na maioria, pouco glamorosos e, na maioria, legítimos. Pesquisadores de segurança fazem engenharia reversa de programas para encontrar uma vulnerabilidade antes que alguém com intenções piores o faça. Desenvolvedores fazem engenharia reversa de formatos de arquivo e protocolos de rede para que um programa novo consiga interoperar com um antigo que ninguém vai documentar para eles. Arquivistas e hobbistas fazem engenharia reversa de software antigo para mantê-lo funcionando depois que o hardware original e a empresa por trás dele já desapareceram. E às vezes o motivo é simplesmente que um programa do qual você depende faz algo sem documentação, e você precisa saber o quê, antes de poder confiar nele ou contorná-lo.
Nada disso é novo. Pesquisadores de segurança e arquivistas de software fazem isso há décadas, com disassemblers e debuggers, muito antes de qualquer agente de IA existir. O que mudou foi a velocidade: um agente consegue ler uma listagem de disassembly ou um método decompilado e resumi-lo em segundos, um trabalho que antes levava horas de uma pessoa qualificada. Esse é um ganho real de capacidade, e é exatamente por isso que o limite legal e ético discutido mais adiante neste guia importa mais agora, não menos, já que o gargalo que antes freava as pessoas entre a curiosidade e a cópia praticamente desapareceu.
O restante deste guia é específico: ele percorre uma ferramenta, chamada REA, que conecta um agente como o Claude Code a esse tipo de análise, e os hábitos que vale a pena ter em prática antes de apontá-la para qualquer coisa.
Uma Nova ChegadaO Que é o REA, e O Que Ele Consegue Ler
O REA se descreve como uma forma de fazer engenharia reversa de software, do comportamento do aplicativo até os binários nativos. O que ele realmente consegue ver depende do tipo de alvo.
Um servidor MCP e uma CLI
O REA é um software open source publicado em github.com/morluto/rea, com o código do próprio REA sob a licença MIT. Ele funciona como um servidor de Model Context Protocol que um agente como o Claude Code pode chamar, e também como um comando simples que você mesmo pode executar em um terminal.
Binários nativos
Segundo o próprio README do REA, ele consegue extrair pseudocódigo, assembly, strings, símbolos, chamadas e referências de um binário compilado, trabalhando através de backends de análise como Hopper, Ghidra, IDA ou Kuna.
Aplicativos JavaScript e Electron
Para alvos em JavaScript e Electron, o README do REA descreve a leitura de módulos, imports, source maps, rotas, canais IPC, e as relações entre um programa e quaisquer add-ons nativos que ele carregue.
Assemblies .NET e APKs Android
Para assemblies .NET, metadados e instruções CIL. Para APKs Android, declarações de manifest, classes, métodos decompilados, e as referências entre eles, novamente segundo o próprio README do projeto.
Além de aplicativos
O mesmo README também lista sites, capturas de pacotes, imagens de firmware, bancos de dados SQLite, binários em Go e Rust, e arquivos de modelo entre os alvos para os quais as ferramentas de análise do REA podem ser apontadas.
Evidência, não um palpite
A intenção de design, segundo o README, é que cada descoberta aponte de volta para algo concreto, um arquivo, uma função, uma chamada, para que você possa verificar você mesmo em vez de aceitar o resumo do agente por fé.
Leia Isso Antes de Instalar Qualquer CoisaO Limite Legal: Estudar Software vs. Copiá-lo
A distinção que mais importa aqui é a que existe entre estudar como algo funciona e copiar sua expressão protegida. Fazer engenharia reversa para aprender uma interface, um formato de arquivo, ou um comportamento é, legalmente, um ato diferente de pegar o código ou os ativos de outra pessoa e colocá-los em um produto seu.
A prática construída em torno dessa distinção é chamada de clean-room design (desenvolvimento em sala limpa). Uma pessoa ou uma sessão estuda o original e escreve uma especificação simples do que ele faz: suas interfaces, seus formatos de dados, seu comportamento, com as próprias palavras, sem nenhum código original copiado para o documento. Uma pessoa ou sessão separada, que nunca viu o original, então constrói uma nova implementação a partir apenas dessa especificação. O ponto é que o resultado final pode ser demonstrado como tendo vindo de uma descrição escrita, não do trabalho original em si.
Duas decisões judiciais mais antigas dos EUA são citadas com frequência sobre esse ponto, e vale a pena conhecê-las, embora nenhuma delas seja uma licença geral para fazer engenharia reversa de qualquer coisa. Sega Enterprises Ltd. v. Accolade, Inc., decidido pelo Nono Circuito em 1992, envolveu uma empresa que fez engenharia reversa do sistema de bloqueio de um console de videogame para que seus próprios jogos funcionassem naquele console. O tribunal entendeu que a cópia intermediária envolvida nessa engenharia reversa, feita para alcançar elementos funcionais não protegidos necessários para que os jogos funcionassem no hardware, era fair use nos fatos específicos daquele caso. Sony Computer Entertainment, Inc. v. Connectix Corp., decidido pelo mesmo tribunal em 2000, chegou a uma conclusão parecida quando uma empresa fez engenharia reversa do software de inicialização de um console para construir um emulador para um tipo diferente de computador, tratando novamente a cópia ao longo do caminho como fair use em função de um produto interoperável escrito de forma independente.
Trate as duas decisões como contexto histórico, não como conselho para a sua situação. São duas decisões específicas de tribunais de apelação sobre fatos específicos, fair use é decidido caso a caso, outros países traçam essas linhas de forma diferente, e leis posteriores voltadas a contornar proteção contra cópia restringem isso bastante para software ligado a DRM. Qualquer pessoa planejando construir algo sobre esse tipo de trabalho, especialmente algo destinado a ser lançado ou vendido, deve conversar com um advogado de verdade antes de confiar em qualquer uma dessas decisões.
O REA traça sua própria linha, independentemente do que um tribunal possa eventualmente decidir sobre qualquer caso específico. Segundo o DISCLAIMER.md do projeto, o REA não apoia e não vai ajudar a contornar DRM, verificações de licença, sistemas anti-cheat, ou outras medidas técnicas de proteção, nem a copiar software proprietário ou seu código e ativos protegidos, e o projeto afirma claramente que o resultado da análise não concede nenhum direito sobre o programa original. A regra prática que resulta disso: analise apenas software que você possui, escreveu você mesmo, ou está de outra forma autorizado a examinar.
Antes de Instalar Qualquer CoisaInstale Com Segurança, Não Só Rapidamente
Uma ferramenta capaz de ler binários e executar backends de análise merece o mesmo cuidado que você daria a qualquer software com tanto alcance dentro do seu sistema.
Instale apenas a partir da fonte oficial
O projeto fica em github.com/morluto/rea e é publicado no npm como o pacote rea-agents. Digite esse nome você mesmo, em vez de seguir um link na descrição de um vídeo, em um post de fórum, ou em uma mensagem de chat.
Fique atento a cópias falsas
Um projeto que ganha atenção tão rápido atrai imitadores. Um repositório ou pacote com um nome parecido com o do REA, hospedado em outro lugar, é motivo para parar e verificar, nunca um atalho.
Execute binários desconhecidos em uma VM
Se você for apontar um backend de análise para um binário que você não escreveu e no qual não confia totalmente, faça esse trabalho dentro de uma máquina virtual ou outro ambiente descartável, não na máquina que você usa para tudo o mais.
Fixe uma versão
Instale uma versão específica em vez de sempre buscar a mais recente, e leia o que mudou antes de passar para uma nova. O registro do npm listava a 6.8.0 como a versão mais recente publicada do rea-agents no momento em que este texto foi escrito.
Leia o aviso legal uma vez, de verdade
O DISCLAIMER.md é curto. Leia tudo antes da sua primeira sessão real com ele, não depois que algo já tiver dado errado.
Colocando Para FuncionarInstalando o REA no Claude Code
A versão do Node.js importa aqui. O próprio README do REA declara seu requisito exatamente como: Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), ou 26.12.1+, além do npm. Confira isso no README em vigor antes de instalar, já que esse tipo de requisito muda entre versões.
O comando de configuração é npx rea-agents setup. Segundo o README, ele guia você na escolha de quais agentes registrar com o REA, mostra as mudanças que propõe fazer antes de você aprová-las, e mantém backups da sua configuração existente. Reinicie seu agente depois disso para que ele capte o novo servidor MCP; as próprias instruções do REA dizem isso claramente.
Para uma instalação de linha de comando persistente, em vez de uma execução única via npx, o README descreve npm install --global rea-agents, seguido de rea --help para ver o que está disponível. A partir de uma instalação global, rea update leva você a uma nova versão no seu próprio ritmo em vez de automaticamente, e executar npx rea-agents@latest setup depois atualiza o registro do agente para corresponder.
Antes de apontar o REA para qualquer coisa que você não possua totalmente, teste primeiro em um aplicativo pequeno que você mesmo escreveu. Com o REA configurado, peça ao Claude Code para abrir esse app pequeno e descrever o que ele vê, função por função, e compare com o que você já sabe que escreveu. Esse único exercício confirma se a configuração realmente funcionou, e dá a você uma noção de como a evidência do REA, um arquivo, uma função, uma chamada, se apresenta na prática antes de você confiar nela para algo que importa.
Um Formato Mais Seguro Para o TrabalhoUm Fluxo de Trabalho Clean-Room em Duas Sessões
Transforme a ideia de clean-room apresentada antes em algo concreto, usando duas sessões separadas do Claude Code. A primeira é uma sessão de especificação: aponte o REA para o software que você está autorizado a estudar, e peça ao agente para escrever uma especificação em linguagem simples de suas interfaces, seus formatos de dados, e o comportamento de suas funções principais, totalmente com suas próprias palavras, sem nenhum código original ou pseudocódigo copiado literalmente no documento.
A segunda é uma sessão de build, iniciada do zero, sem nenhuma memória da primeira. Dê a ela apenas o arquivo de especificação, nada mais: não o binário original, não a transcrição da primeira sessão, não o resultado bruto do REA. Peça que ela construa uma implementação nova e independente que atenda à especificação, e que avise quando algo nessa especificação for ambíguo, em vez de simplesmente supor o que o programa original deve ter feito.
Manter essas sessões genuinamente separadas, não como duas fases de uma mesma conversa longa, é a parte que importa. Uma única sessão que estudou o original e depois escreveu o substituto borrou exatamente a fronteira que o clean-room design existe para manter nítida, já que não há como demonstrar, depois do fato, que a segunda metade não se apoiou na primeira.
Seja realista sobre o que isso garante. Um fluxo de trabalho disciplinado em duas sessões é uma prática que sustenta um argumento de clean-room posterior, caso alguém pergunte como algo foi construído. Não é uma garantia legal por si só, e não substitui ter um advogado de verdade olhando para qualquer coisa que você planeje lançar ou vender.
Defina ExpectativasLimites Honestos Deste Fluxo de Trabalho
O REA e o processo descrito neste guia reduzem o risco; nenhum dos dois o elimina. Tenha esses limites em mente assim que você tiver algo aberto.
Pode deixar coisas passarem em aplicativos grandes
Um aplicativo grande tem uma área de superfície maior do que uma única passagem de análise provavelmente cobre. Trate uma execução limpa como uma amostra do que existe, não como prova de que nada foi deixado passar.
Trate o resultado como pistas, não conclusões
Uma evidência que aponta para um arquivo, uma função, ou uma chamada é um lugar para ir investigar, não um fato definitivo por si só. Verifique qualquer coisa em que você planeje realmente confiar lendo você mesmo o resultado real.
Ele usa bastante contexto
Uma análise detalhada de binário e bytecode produz muito texto rapidamente. Espere que o contexto de uma sessão se esgote rápido em qualquer coisa além de um app pequeno, e planeje um fluxo de trabalho em duas sessões com isso em mente.
Tanto o software quanto a lei continuam mudando
Os comandos do REA, seu requisito de Node.js, e o que ele consegue ler vão todos mudar entre versões, e o cenário legal em torno da engenharia reversa também muda. Reverifique os dois antes de confiar em qualquer coisa que você leia hoje.
Um segundo olhar ainda ajuda
Para qualquer coisa além de um experimento pessoal, um revisor humano que entenda tanto o código quanto o limite legal vale mais do que mais um prompt cuidadoso.
Pratique Prompts Estreitos e Verificáveis Antes de Fazer Isso de Verdade
Antes de apontar qualquer ferramenta de engenharia reversa para algo que você não possua totalmente, ajuda já ter o hábito de dar a um agente uma tarefa estreita e verificar você mesmo o resultado contra a realidade. A primeira aula gratuita da Nightschool AI percorre exatamente esse tipo de prompting cuidadoso com o Claude Code da Anthropic.
Perguntas frequentes
O que a engenharia reversa realmente significa?
Significa estudar um software já pronto para entender como ele funciona, geralmente sem ter seu código-fonte original ou documentos de design. As pessoas fazem isso por pesquisa de segurança, para fazer algo interoperar com software que não controlam, para manter software antigo utilizável, ou simplesmente para entender o que um programa sem documentação está fazendo.
A engenharia reversa é legal?
Depende bastante do que você estuda, de como estuda, de onde você está, e do que você faz com o que aprende. Estudar como algo funciona é tratado de forma diferente de copiar seu código ou ativos protegidos. Este guia não é aconselhamento jurídico; converse com um advogado de verdade antes de confiar em qualquer parte dele para algo real.
O que é o REA, a ferramenta deste guia?
O REA é um servidor MCP e uma ferramenta de linha de comando open source, publicado em github.com/morluto/rea sob a licença MIT, que permite que um agente como o Claude Code da Anthropic inspecione binários, aplicativos, e outros softwares, e devolva evidências, como um arquivo, uma função, ou uma chamada, em vez de um palpite em linguagem comum.
Qual versão do Node.js o REA exige?
Segundo o próprio README do REA, no momento em que este texto foi escrito, ele exige Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), ou 26.12.1+, além do npm. Confira o README em vigor antes de instalar, já que requisitos de versão como esse mudam entre versões.
Como instalo o REA no Claude Code?
Execute npx rea-agents setup, escolha com quais agentes registrá-lo, revise as mudanças que ele propõe antes de aprová-las, e reinicie seu agente depois. Para uma CLI persistente, use npm install --global rea-agents seguido de rea --help, e rea update depois para mudar de versão deliberadamente.
O que é um fluxo de trabalho clean-room, e por que usar duas sessões?
Uma sessão de especificação estuda o software original e escreve uma especificação em linguagem simples do seu comportamento, sem nenhum código original copiado. Uma sessão de build separada, sem memória da primeira e sem acesso ao original, constrói código novo a partir apenas dessa especificação. Manter as duas genuinamente separadas sustenta um argumento de clean-room posterior; uma única sessão misturada não.
Com o que o REA não vai ajudar?
Segundo o próprio DISCLAIMER.md, o REA não apoia e não vai ajudar a contornar DRM, verificações de licença, ou sistemas anti-cheat, nem a copiar software proprietário ou seus ativos protegidos. Ele também diz que seu resultado não concede nenhum direito sobre o programa original, e que deve ser usado apenas em software que você possui, escreveu, ou está autorizado a examinar.
Quais são os limites honestos do REA?
Ele pode deixar coisas passarem em aplicativos grandes, então uma execução limpa é uma amostra, não uma garantia. Seu resultado é uma pista que vale verificar, não uma conclusão definitiva. Uma análise detalhada também produz muito texto, então pode esgotar rapidamente o contexto de uma sessão, especialmente em qualquer coisa além de um app pequeno.
Este guia é afiliado à Anthropic ou aos criadores do REA?
Não. Este é um guia educacional independente da Nightschool AI. Ele cita o Claude Code da Anthropic e o projeto open source REA apenas para descrever como eles realmente funcionam, sem nenhuma afiliação, parceria, ou endosso da Anthropic ou dos criadores do REA, em nenhuma das duas direções.
Pratique os Hábitos Antes de Fazer Engenharia Reversa de Algo Real
Uma tarefa estreita, uma especificação que você realmente pode verificar, e uma desconfiança saudável da sua própria primeira resposta importam mais aqui do que qualquer ferramenta isolada.