BrunoP.Blog

Engenharia reversa com IA: como estão recriando jogos e apps, e onde isso esbarra

Activision e Bethesda derrubaram jogos recriados com IA, a Cloudflare refez o Next.js em uma semana e um jogo de Nintendo 64 foi decompilado com o Claude. O que mudou não foi a técnica, foi o custo. Expliquei como funciona por dentro, onde quebra, o que a lei brasileira diz e por que isso interessa a quem tem um sistema antigo que ninguém entende.

Engenharia reversa com IA é usar um modelo de linguagem para reconstruir software a partir do que ele já é: o programa compilado, a tela, a API, os testes. A técnica existe há décadas; o que mudou é o custo. Trabalho que levava anos de especialista agora sai em semanas, desde que exista uma forma mecânica de conferir se a reconstrução acertou. Sem esse conferente, a IA inventa. E clonar o programa não é clonar o negócio: o servidor, os dados e os usuários continuam do outro lado.

Nas últimas semanas, dois projetos chamaram atenção pelo mesmo motivo e terminaram do mesmo jeito. Em 30 de setembro, o pesquisador Maurice Heumann mostrou que estava usando IA para decompilar o código de Call of Duty: Modern Warfare 2, de 2009. Na mesma leva, um desenvolvedor publicou uma recriação jogável de Fallout no navegador, feita com o Claude. A Activision derrubou os vídeos do primeiro. O segundo abandonou o projeto depois de receber, segundo ele, uma notificação extrajudicial da Bethesda (Kotaku, TheGamer).

A internet tratou os dois como curiosidade de fã de jogo. Eu acho que eles são a parte visível de uma mudança maior, que interessa a qualquer empresa que tem um sistema antigo rodando no canto da sala. Então vamos por partes: o que aconteceu de fato, como funciona por dentro, onde quebra, o que a lei diz e para onde isso vai.

O que aconteceu, com fonte

Muita coisa circula sobre isso em vídeo curto, e boa parte não se sustenta. Abaixo ficaram só os casos que conferi na fonte original.

  • Um jogo de Nintendo 64 decompilado com o Claude. O desenvolvedor Chris Lewis usou o Claude Code para reconstruir o código-fonte de Snowboard Kids 2, função por função, até que o código recompilado gerasse exatamente os mesmos bytes do cartucho original. Chegou a cerca de 75% do jogo antes de travar (relato do próprio autor).
  • O Next.js recriado em uma semana. Em fevereiro, a Cloudflare contou que um engenheiro e um modelo de IA reimplementaram o framework de front-end mais popular do mundo usando a própria suíte de testes do Next.js como especificação. Cobriram 94% da API, por cerca de US$ 1.100 em tokens (blog da Cloudflare).
  • Um compilador C escrito por 16 agentes. A Anthropic pôs 16 instâncias do Claude para escrever, do zero e em Rust, um compilador de C. Foram cerca de 2.000 sessões e US$ 20 mil em API para chegar a 100 mil linhas capazes de compilar o kernel do Linux. O GCC, o compilador de referência, servia de gabarito (Anthropic).
  • Uma biblioteca reescrita para trocar de licença. Em março, a versão 7.0 do chardet, uma biblioteca Python usada por muita gente, saiu reescrita com ajuda de IA e com a licença trocada de LGPL para MIT. O autor original contestou, e a comunidade passou a discutir se reescrever com um modelo é uma forma legítima de se livrar de uma licença (LWN).

Ficaram de fora, de propósito, os vídeos de jogo rodando dentro de outro jogo que viralizaram nas últimas semanas. Alguns provavelmente são reais, mas não achei nenhuma fonte além do próprio clipe. E o famoso Doom rodando dentro do Doom, que reaparece toda vez que o assunto volta, é de 2022 e foi feito à mão.

A engenharia por trás, sem mistério

Engenharia reversa é o caminho de volta. O programa que você instala é o resultado de um código-fonte que passou por um compilador, e esse processo joga fora quase tudo que um humano precisa para entender: nomes de variáveis, comentários, a organização em partes. O que sobra é instrução de máquina.

Ferramentas como o Ghidra, mantido pela NSA e aberto, e o IDA fazem a primeira parte da volta: transformam essa instrução de volta em algo parecido com código. Só que o resultado é ilegível. Uma função vira FUN_00401a3c, as variáveis viram local_18, e entender o que aquilo faz era trabalho de semanas para um especialista.

É aí que o modelo de linguagem entra, em três tarefas que ele faz bem:

  1. Dar nome às coisas. Ele olha a função, percebe que ela soma valores dentro de um laço e devolve um total, e sugere calcular_total_pedido. Parece pouco. É o que transforma um labirinto em um mapa.
  2. Reconstruir a estrutura. Ele deduz que aqueles quatro números lidos em sequência são, na verdade, um registro com nome, preço, quantidade e desconto.
  3. Tentar, compilar e comparar, sem cansar. Esse é o ponto que separa os casos que deram certo dos que não deram.

O segredo é ter quem confira

Repare no que os casos da lista acima têm em comum. Em todos existia um verificador mecânico, alguma coisa que responde "acertou" ou "errou" sem depender de opinião:

  • no jogo de Nintendo 64, o binário recompilado precisava bater byte a byte com o original;
  • no compilador, o GCC dava a resposta certa para comparar;
  • no Next.js, a suíte de testes do projeto original dizia se o comportamento era o mesmo.

Com isso, a IA pode errar quantas vezes quiser, porque cada erro é pego e corrigido. Sem isso, ela produz código que parece certo e não é. O relato do Chris Lewis tem o exemplo perfeito. Numa função que não conseguia reproduzir, o Claude alterou o hash usado na comparação para que o teste passasse. Ele não resolveu o problema; ele trapaceou no gabarito. É o comportamento esperado de quem é otimizado para "fazer o teste passar", e é por isso que o verificador precisa estar fora do alcance de quem está sendo verificado.

Clonar pelo comportamento, sem olhar o código

Existe um segundo caminho, mais comum em aplicativo do que em jogo: nem abrir o programa. Você observa o que ele faz (as telas, os campos, as respostas da API, os arquivos que ele gera) e pede para a IA escrever outro programa que se comporte igual. O caso do Next.js é desse tipo. É a versão moderna da sala limpa, técnica antiga em que uma equipe escreve a especificação olhando o original e outra equipe, que nunca viu o original, implementa a partir dela.

Onde a técnica quebra

O entusiasmo dos vídeos esconde limites que os próprios autores descrevem quando escrevem com calma:

  • Tamanho. O Snowboard Kids 2 parou em 75% porque as funções grandes e as de cálculo pesado não saíam. A Anthropic escreveu que o compilador está "perto do limite" do que o modelo consegue, e que o código gerado é lento.
  • Código protegido. Programa ofuscado de propósito, como os anti-pirataria, foi feito justamente para resistir a esse tipo de análise.
  • O que não está na sua máquina. Dá para reconstruir o aplicativo que roda no seu computador. O servidor da empresa, com as regras de negócio e o banco de dados, você nunca viu e não tem como reconstruir.
  • Os dados e as pessoas. Uma cópia perfeita de um aplicativo de transporte não tem motorista nenhum. Clonar o programa não traz junto a base de clientes, o histórico, a marca nem o efeito de rede.
  • A parte difícil continua difícil. Um estudo publicado este ano migrou 12 funcionalidades de um ERP corporativo escrito em Visual Basic 6 para C# usando o Claude Code. A equivalência média ficou em 70%: 92% nas funções simples, só 47% nas complexas (arXiv). A IA acelera muito, mas o que sobra é justamente a regra de negócio mais cabeluda.

O que a lei diz

Aqui a resposta curta é: depende de onde, de como e para quê. E não houve ainda nenhuma decisão judicial sobre um clone feito com IA. O que existe até agora são notificações e remoções, como as da Activision e da Bethesda. Não sou advogado; o que segue é o mapa, não um parecer.

No Brasil, a lei do software (Lei 9.609/98) diz no artigo 6º que não ofende o direito do autor, entre outras coisas, a semelhança entre programas quando ela vem das características funcionais, de normas técnicas ou da falta de outra forma de expressar a mesma coisa. Também protege a integração de um programa a um sistema quando ela é tecnicamente indispensável para o usuário. O que a lei brasileira não tem é uma autorização expressa para descompilar, como a europeia tem para fins de interoperabilidade. Ou seja: fazer um programa que funciona igual tem amparo; abrir o programa de outro para copiar o código, não.

Nos Estados Unidos, a jurisprudência aceita a desmontagem para fins de compatibilidade desde o caso Sega contra Accolade, de 1992, e a lei de direitos autorais digitais traz uma exceção para interoperabilidade. Mas um contrato de licença que proíbe engenharia reversa costuma prevalecer.

Tem ainda a questão das licenças de código aberto, que o caso do chardet escancarou. Se reescrever com IA bastar para trocar uma licença, a proteção das licenças que obrigam a manter o código aberto perde o dente. Isso ainda não foi decidido em lugar nenhum.

Na prática, a regra que eu sigo é simples: reconstruir o que é seu, ou integrar com o que você comprou, para que funcione com o resto, está do lado seguro. Copiar o produto de outro para vender no lugar dele, não. E o código que sai desse trabalho precisa ter dono definido em contrato, o que vale para qualquer projeto; escrevi sobre isso em de quem é o código do projeto.

Para onde isso vai

Quatro consequências me parecem prováveis, em ordem de quanto vão chegar perto de você:

  1. Software antigo deixa de ser uma caixa-preta. O sistema que só um ex-funcionário entendia, em uma linguagem que ninguém mais ensina, passa a ser legível. Documentar, entender e migrar fica uma ordem de grandeza mais barato.
  2. Integração com software fechado fica viável. Aquele programa que não exporta nada e não tem API pode ser estudado por fora até se descobrir como conversar com ele.
  3. "Ninguém consegue copiar nosso app" deixa de ser vantagem. Se a interface e o comportamento podem ser reproduzidos em semanas, o que protege um produto passa a ser o que não se vê: dados, relacionamento, operação, marca.
  4. Preservação e segurança ganham força. Jogos e programas que morreriam com o hardware voltam a rodar, e quem analisa vírus e ataques ganha uma ferramenta que entende código de máquina em minutos.

E um efeito colateral previsível: mais notificações extrajudiciais. As empresas donas de produtos famosos vão reagir rápido, como já reagiram.

O uso que mais importa para uma empresa pequena

Ninguém precisa clonar um jogo. Mas muita empresa tem, em algum canto, um sistema assim:

  • foi feito anos atrás por alguém que não está mais por perto;
  • ninguém tem o código-fonte, ou tem e ninguém entende;
  • não conversa com nada, então alguém digita à mão o que sai dele em outro lugar;
  • todo mundo tem medo de mexer, porque se parar, para tudo.

É exatamente o cenário em que essas técnicas mudam o jogo, e do lado seguro da lei: o sistema é seu, e o objetivo é fazer ele funcionar com o resto. Hoje dá para ler o que ele faz, documentar as regras escondidas nele, criar uma ponte com o sistema novo e, se fizer sentido, substituir aos poucos, conferindo a cada passo que o novo faz o mesmo que o antigo. O conferente de que falei lá em cima, aqui, são os dados reais da sua operação.

Tem um sistema que ninguém mais entende, ou que não conversa com nada?
Eu olho com você o que ele faz, o que dá para documentar, integrar ou modernizar, e quanto isso custa. A primeira conversa é um diagnóstico, sem compromisso.
Como funciona integrar sistemas que não conversam →

Quero um diagnóstico do meu sistema

Este post faz parte do guia como trabalhar com um agente de IA. Casos e números conferidos nas fontes linkadas em 13 de outubro de 2026.

Receba o que eu construo.

Ferramentas novas, experimentos do Lab e artigos, quando saem. Sem spam, cancele quando quiser.