20 pontos por iolothebard 2025-02-28 | 9 comentários | Compartilhar no WhatsApp

A partir de um binário parcial, não do código-fonte (faltavam DLLs de runtime),
ele descobriu o propósito do programa original e o reescreveu em Python…
Para o bem ou para o mal, isso com certeza é inteligência “artificial”.

Tradução:

Depois de anos de decepções com IA, eu realmente levei um grande choque. Este não é aquele tipo de texto genérico de “IA é incrível”. Até hoje eu era cético.

Contexto : como muita gente, eu também tentei usar ChatGPT e outras ferramentas de IA para ajudar a programar. O resultado? Consistentemente decepcionante. Eram mecanismos de busca enfeitados que cuspiam código errado, embalado em explicações cheias de confiança.

O desafio : minha neta de 2 anos veio me visitar hoje. Aí me lembrei de um app simples que eu tinha feito em 1997 com Visual Basic 4. Mas rodar um executável de 27 anos? Sem DLLs antigas e sem camadas de compatibilidade? Pois é.

The Hail Mary : por curiosidade, enviei o arquivo EXE real para o Claude 3.7 e fiz uma pergunta simples: "Você pode me dizer como executar este arquivo? Parece que ele foi feito em Visual Basic 4. Acho que seria bom convertê-lo para Python."

O que eu esperava : uma resposta genérica do tipo “é um arquivo antigo, há riscos de segurança, blá blá blá...”.

O que realmente aconteceu: o Claude 3.7 começou com os avisos que eu esperava, mas depois a coisa ficou interessante. De algum jeito, ele analisou o binário e identificou componentes específicos:

  • "Form1"
  • "cntTimer"
  • "btnExit"
  • E até detectou um arquivo de som embutido!

Depois disso, ele fez algo que nenhuma outra IA tinha conseguido: escreveu uma conversão completa para Python usando Pygame:

  1. Reproduziu a funcionalidade perfeitamente.
  2. Trazia instruções claras de instalação.
  3. Funcionou de primeira

Tempo gasto: menos de 5 minutos. Sem exagero.

Quando pedi ajustes, como associar um som à barra de espaço e adicionar fontes coloridas, ele imediatamente forneceu atualizações perfeitas no código.

Foi a primeira vez desde que comecei a usar IA que eu fiquei realmente impressionado. Não foi só um truque de festa, mas uma solução prática que poupou meu tempo.

No fim, eu disse ao Claude que tinha ficado impressionado e mandei um resumo meio desajeitado explicando por que achei aquilo tão legal.... depois ele reescreveu a postagem do Reddit. Na verdade, soa "quase" normal. (Esta parte eu escrevi).

<mesmo dia, 5 horas depois> atualização

Publiquei uma atualização/resumo sobre este post (escrita por mim). Não sei se esse é o jeito certo de fazer isso, mas pelo menos uma pessoa na internet disse que sim, então deve ser verdade.

https://www.reddit.com/r/ClaudeAI/comments/1iz1i61/update_i_uploaded_a_27yearold_exe_file_to_claude/

<atualização - 11 horas depois>

Acho que virei o 'avô do Reddit'. Engraçado.

Só para esclarecer algumas coisas:

- Sim, o Claude permitiu enviar o EXE.
- O EXE compilado tem algumas strings reconhecíveis, mas não muitas.
- O Claude escreveu este texto e o título. Além disso, a melhor parte é que foi one-shot.
- Minha filha, agora com 29 anos, apertava o teclado e isso reproduzia um arquivo wav e mostrava texto.

Estou acrescentando o link do chat porque algumas pessoas disseram que não conseguiam vê-lo nos comentários:

https://claude.ai/share/3eecebc5-ff9a-4363-a1e6-e5c245b81a16

<atualização - 1 dia depois>

A republicação deste post no Twitter/X passou de 1 milhão de visualizações. Post completo aqui. Enviei ao Claude o post junto com todos os comentários, dentro do mesmo contexto em que eu tinha escrito o script e a publicação. Em especial, pedi que ele resumisse as críticas. Aqui está o resumo que o Claude fez:

Contexto técnico válido

Algumas pessoas apontaram corretamente que executáveis VB4 são compilados em p-code, e não em código de máquina, então são mais fáceis de analisar do que executáveis totalmente compilados. Essa observação está correta. O VB anterior ao .NET armazenava um formato de bytecode interpretável, o que tornava a extração de informações mais fácil do que em binários completamente compilados.

Ceticismo quanto à complexidade

Outras pessoas observaram que o código Python resultante era relativamente simples (cerca de 100 linhas). Isso porque o próprio app não era uma aplicação complexa, mas um programa simples com funcionalidade básica. A parte impressionante não foi a complexidade do código gerado, e sim o fato de que passar do binário para um código funcional exigiu esforço praticamente zero.

Mal-entendidos sobre o processo

Alguns críticos pareciam achar que eu estava dizendo que o Claude tinha "descompilado" o executável no sentido tradicional. Na prática, como expliquei na conversa, ele analisou strings visíveis e inferiu a funcionalidade a partir delas, o que ainda é impressionante, mas não é uma descompilação real.

Ceticismo geral em relação à IA

No setor de tecnologia, existe naturalmente uma visão cética sobre capacidades de IA, e alguns comentaristas tendem a descartar reflexivamente demos impressionantes como falsas, exageradas ou “apenas correspondência de padrões”. Esse é um padrão comum de reação ao avanço da IA. A crítica que considero mais válida é que esse resultado precisa ser interpretado dentro do contexto. O Claude não realizou uma análise binária real de código compilado arbitrário; ele fez uma inferência inteligente a partir de strings de texto presentes em um executável VB.

9 comentários

 
ndrgrd 2025-03-04

Na verdade, não é tão diferente de ler e analisar um documento de texto mesmo...

 
kandk 2025-02-28

Uau, será que até materiais antigos e esquecidos também podem ser recuperados? kkk
Tipo, se eu subir um vídeo antigo de jogo de DOS, será que aparece o arquivo .exe...

 
hi098123 2025-02-28

Como diz o comentário no texto, um executável VB permite verificar o código praticamente como foi escrito, mas se fosse um exe em C++ e estivesse em assembly, isso provavelmente ainda não seria possível.
Uma das forças da IA é entender instruções e conseguir aplicá-las, então ela acaba sendo discretamente boa em trabalhos de migração para outras linguagens.

 
iolothebard 2025-02-28

Acho que talvez houvesse, entre os dados em que o Claude foi treinado, documentação relacionada ao p-code do VB 4.0.

Se não foi isso (ou seja, se não havia nada pré-treinado sobre isso), do ponto de vista da IA haveria tanta diferença assim entre o p-code do VB 4.0 e código de máquina x86 (ou arm ou...)? No fim, ambos são apenas sequências de números com certas regras. Se ela leu padrões a partir de uma amostra curta, isso por si só também é assustador.

 
hi098123 2025-03-01

Em linguagens como VB ou Python, quando você cria um .exe, ele não é compilado diretamente para código de máquina, então, se você tiver só o executável, dá para extrair o código-fonte com nomes de funções e variáveis intactos.
Ver que isso pode ser aprendido como regra e aplicado assim... no futuro, vai ser difícil continuar sobrevivendo como desenvolvedor.

 
kandk 2025-02-28

Mas, de qualquer forma, como assembly também tem uma especificação, acho que se derem a especificação junto ele vai traduzir rapidinho.

 
hi098123 2025-03-01

Sair de assembly para um código em linguagem natural legível entra no campo de recriação, depois que o desnecessário é removido, como nomes de variáveis e de funções; então imagino que ainda vá levar um tempo para sair algo realmente bom.

 
kandk 2025-03-01

Pode até ser fácil kkk
Eu escrevi um artigo sobre algo parecido há mais de 10 anos

 
unsure4000 2025-02-28

Uau, isso é bem surpreendente mesmo.