Visual Basic  - Decompilação ???


Será que é possível decompilar um programa EXE compilado no Visual Basic ? Neste artigo vou tratar deste assunto relacionado ao Visual Basic.

As vezes recebo emails de pessoas que procuram por um decompilador para o Visual Basic. Os motivos alegados geralmente são :

Nota : Fazer uma cópia de segurança evita muitas dores de cabeça.

Decompilar um programa significa fazer o caminho inverso da compilação , ou seja , a partir do executável recuperar os arquivos , no caso do Visual Basic , formulários e o código , e assim obter os fontes originais que geraram o arquivo EXE.

No caso do Visual Basic decompilar um programa é algo quase impossível de se obter.  Isto mesmo , você nunca  , nunca vai obter os fontes originais como eles foram escritos pelo programador. Quer saber por que ? Vamos lá...

Quando um projeto Visual Basic é compilado e linkado para produzir um arquivo executável  a maioria dos nomes usados no programa é convertido em endereços; os nomes da constantes , variáveis e procedimentos são trocados.

Os compiladores atuam sobre um código fonte que nos humanos podemos ler e compreender e o convertem em código de máquina que é uma seqüência de zeros e uns ; este é o formato no qual a CPU vai reconhecer e saber como processar as instruções. Para esta seqüência de zeros e uns gerada existe um código equivalente que pode ser compreendido por um ser humano : é a linguagem Assembly.

O relacionamento do código de máquina gerado com o código fonte original pode variar muito ; no Visual Basic algumas linhas do código fonte original podem resultar em poucas linhas de instruções em linguagem de máquina enquanto que outras linhas de código fonte podem originar centenas ou milhares de instruções.

Outro agravante nessa história é saber como identificar em uma longa seqüência de instruções em linguagem de máquina a quebra de linha , ou seja , onde começa uma seqüência de instruções e onde ela termina e começa outra seqüência. Para complicar ainda mais a situação , particularmente no caso do Visual Basic , o linkeditor irá agregar ao executável gerado milhares de linhas de códigos que não foram escritas pelo programador.

Nas versões mais antigas do Visual Basic ( Versão 3 e anteriores) o processo de compilação tinha a opção de produzir um pseudo código intermediário (aka pcode) o qual podia ser convertido novamente nos fontes originais. Isto levou muitas pessoas a pensarem que poderia existir também um decompilador para o VB5 ou VB6 como havia um para o VB3. Embora o VB6 tenha um opção de compilação para gerar um pcode ela não ira gerar um código com as mesmas características da gerada pelas versões mais antigas.

Vamos então encarar a realidade , se você esta pensando que vai achar um programa para decompilar um programa feito no VB5 ou no VB6 de forma a obter os fontes originais , sinto muito você NÃO VAI ENCONTRAR.

Se você tem uma aplicação feita na versão 3.0 ou anterior , então existe um decompilador escrito por um tal de Dodi. Procure no google por VB Decompilers . Abaixo alguns dos links onde existe a possibilidade de encontrá-lo: (o programa está no Super CD Visual Basic para que você possa usá-lo com fins didáticos)

Dodi's Decompiler
http://www.fys.ruu.nl/~beljaars/Download.html

Dodi's Website
http://members.aol.com/vbdis/

E a questão da legalidade ? É legal decompilar um programa ?

Bem dependendo das circunstâncias e se você tiver motivos fortes e suficientes para fazê-lo , sim , chamamos isto de engenharia reversa e engenharia reversa não é craking.

Quando eu posso usar a engenharia reversa ? Alguns motivos podem ser:

  1. Você tem a suspeita da existência de um vírus ou código malicioso no seu programa.
  2. Você precisa corrigir erros e o programador morreu ou não pode ser encontrado.
  3. O programador se recusar a realizar as alterações e correções previstas em um contrato de prestação de serviços.

De qualquer forma é sempre bom consultar um advogado especializado e estar legalmente amparado para não ser processado depois.

É claro que sempre existirão pessoas mal intencionadas que usarão seu conhecimento e com o auxílio de ferramentas podem obter parte do seu código fonte. Por isto proteja o seu código e sua propriedade intelectual , afinal ela é o seu ganha pão...

Para terminar vou colocar um link para você baixar um programa que diz que faz decompilação de programas em VB6. Pegue e teste ; se ele realmente funcionar você me diz , OK. Vou colocar também o link para um programa que você pode usar para proteger seu código contra a decompilação. Bom proveito...

Decompilador (???) para programas VB6 - VB6Decompile.zip - 217 Kb

Proteja seu programa contra a decompilação - AntiDecompile.zip - 119 Kb

Os programas não são de minha , eu não utilizo os programas , não dou suporte a eles nem me responsabilizo por sua utilização ou qualquer dano que eles possam causar. Entendeu... fica por sua conta e risco...

Até mais ver .


José Carlos Macoratti