Decompilando seu projeto VB.NET
Bem , acho que acabei fazendo uma propaganda enganosa pois o conteúdo do artigo não é bem o que diz a chamada do título. Vou explicar...
Nota: É decompilar ou descompilar ? Não achei nenhuma das duas palavras em dois dicionários de português que tenho em casa. Creio que seja decompilar. Alguém me corrija... se for o caso...
Neste artigo eu vou falar sobre uma ferramenta chamada AnaKrino desenvolvida por Jay Freeman (Saurik) que decompila código MSIL para C#. Ela é muito útil para você compreender e aprender como o processo de engenharia reversa funciona e como você pode abrir seu código.
Para não parecer que estou falando grego vou explicar alguns conceitos básicos.
Quando você compila seu código-fonte C# ou VB.NET o compilador vai convertê-lo para uma linguagem intermediária chamada - MSIL - Microsoft Intermediate Language - que é um conjunto de instruções em um tipo de assembly independente da CPU.
Nota: Se você conhece Java já sacou o conceito. Afinal em java o código compilado gera um bytecode que pode ser executado em qualquer plataforma que possua uma máquina virtual - JVM .
Abaixo temos um esquema representando esta operação , a compilação e geração de código MSIL e a descompilação e geração de código C# :
A MSIL possui uma vasta gama de instruções para carregar , armazenar , inicializar , chamar métodos em objetos , operações lógicas , controles de fluxo , acesso direto a memória e manipulação de exceções. Antes do código poder ser executado a MSIL precisa ser convertida para o código da CPU do ambiente em que vai rodar ; isto é feito por compiladores Just in time (JIT) que converte o código para assembly nativo.
Como usar a ferramenta Anakrino
Quando você executar o Anakrino pela primeira vez , você verá que ele inclui assemblies .NET. No painel do lado esquerdo você verá uma árvore hierárquica de classes e assemblies . Ao clicar no sinal de mais (+) para expandir a árvore você poderá navegar até encontrar uma assinatura de um método. Ao clicar na assinatura do método você verá o código decompilado no painel da direita.
Para abrir uma de suas próprias assemblies , selecione a opção Open do menu File , e encontre a sua dll , selecionando-a e clicando em OK . Pronto ! sua assembly será incluída no fim da árvore no painel da esquerda.
Para fazer um teste vamos criar um projeto do tipo - C# Class Library - no Visual Studio com uma única classe - chamada : ValidaChave.
using System;namespace TesteDecompila{ /// <summary> /// Summary description for Class1. /// </summary>public class ValidaChave { public bool IsChaveValida(string strChave) { string strChaveCorreta = "JCM2003"; if (strChave == strChaveCorreta) { return true; } else { return false; } } } } |
- Temos um único método
IsChaveValida que recebe como argumento uma string , faz a comparação e
retorna false ou True conforme o resultado. - Agora compile o esta assembly com o nome TesteDecompila.dll |
Agora abra o Anakrino e no menu File selecione Open e procure pelo arquivo TesteDecompila.dll abrindo em seguida. Você irá obter:
Voilá !!! Ai esta o seu código decompilado e exibido no painel da direita. Se você comparar os dois códigos , o gerado pelo anaKrino e o seu código original vai perceber que o AnaKrino não retorna o nome das variáveis locais e usa os seguintes nomes: local1 , local2, local3 , etc.
Você pode então usar o Anakrino para aprender como seus assemblies serão expostos e também para espiar os assemblies de outras fontes. É claro que existe uma forma de impedir a decompilação e muitas empresas vão querer proteger sua propriedade intelectual.
Minha missão foi então mostrar a você que existe uma ferramenta que você pode usar para decompilar assemblies em C#. Fica por sua conta e risco sua utilização. (O Anakrino esta completo no Super CD.NET )
Ah !!! existe outro descompilador para a plataforma .NET - Salamander .NET Decompile - que converte arquivos EXE ou DLL de linguagem intermediária (IL , MSIL , CIL) no formato binário para um código fonte em linguagem de alto nível como C# , VB .NET , etc. Não é gratuito e eles também vendem um ofuscador de código.
Até mais ...
oão 5:24 Em verdade, em verdade vos digo que quem ouve a minha palavra, e crê naquele que me enviou, tem a vida eterna e não entra em juízo, mas já passou da morte para a vida.
João 5:25 Em verdade, em verdade vos digo que vem a hora, e agora é, em que os mortos ouvirão a voz do Filho de Deus, e os que a ouvirem viverão.
João 5:26 Pois assim como o Pai tem vida em si mesmo, assim também deu ao Filho ter vida em si mesmos;
João 5:27 e deu-lhe autoridade para julgar, porque é o Filho do homem.
Veja os
Destaques e novidades do
SUPER DVD VB (sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#. |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB6 - Express-Test - Gerador de testes de avaliacao para estudantes