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 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#.

      Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti