| Por Marcio Silva Brasil ml_s_brasil@hotmail.com Marcio S. Brasil é líder do GANI.Net. Atualmente trabalha como analista-desenvolvedor com aplicações .Net em Windows, Web. Está cursando graduação em Sistemas de Informação. |
|
|
|
|
|
Utilizando o Dotfuscator |
|
|
|
|
O Dotfuscator é um ofuscador de código que faz parte do pacote de programas do Visual Studio .Net 2003. A utilização de um ofuscador de código em .Net e torna necessária, pois como sabemos um programa compilado não gera um código nativo, mas sim um código em IL (Intermediate Language) que é entendido pela CLR, então temos o seguinte problema, a partir da IL é possível descompilar o programa, com a possibilidade de que outra pessoa veja o código fonte da sua aplicação, e isto em mentes maldosas pode se tornar um desastre para sua aplicação.
Um exemplo de um programa que faz isso é o Anakrino, que pode ser baixado em http://www.saurik.com/net/exemplar/ , é um programa free e open source que faz uso de reflection para a descompilação. Baixem este programa pois vamos usá-lo em nosso exemplo.
Agora vamos criar uma aplicação para podermos fazer uso do Dotfuscator, por questões de agilidade o exemplo foi criado pelo template Dataform do Visual Studio .Net, que oferece um assistente para criação do form com a ligação dos dados, criação de um Dataset tipado e todas as subs necessárias para as operações básicas com o banco de dados. Então vamos lá:
Peça um novo projeto:

Exclua o form criado pelo Visual Studio, este não nos interessará, peça um New item, DataForm:

Use o assistente de modo que ele mostre alguma tabela, neste exemplo utilizei a tabela Custumers do Northwind:

Vamos compilar a aplicação em modo Release para gerar o arquivo em que vamos trabalhar.
Após baixar e descompactar o Anakrino, execute-o (para o Anakrino ser executado no Framework 1.1 é preciso fazer o download e a substituição do arquivo Anakrino.xml, disponível no mesmo link de download do programa), abra (File... Open...) o executável que você acabou de compilar. Note que ele ele é adcionado a guia "Reflection", como mostra a figura:

Neste ponto é possível vermos todas as propriedades, classes, subs e todo o código fonte de cada sub no painel da direita, note que os nomes das classes, namespaces e variáveis permanecem os mesmos, de fácil entendimento do código a quem vê-lo. No .Net não é possível bloquear essa engenharia reversa, por causa da arquitetura de IL, mas é possível que façamos com que o resultado dessa reversidade seja mais complicado de ser entendido. Vejamos como fazer isto:
Abra o Dotfuscator e peça um novo projeto e dê OK:

Na guia "Trigger" clique em "Browse" e selecione o arquivo a ser ofuscado (*.dll / *.exe). Crie um diretório dentro do diretório "bin" do seu executável chamado "Output" para podermos comparar a descompilação posterior dos executáveis.
Na guia build coloque o Temporary Directory e o Destination Directory para o diretório "Output" que acabamos de criar. Salve o projeto e dê um "File... Build", o arquivo da guia trigger será ofuscado. Execute novamente o Anakrino e abra o arquivo da pasta bin (não ofuscado) e o da pasta output, como podemos ver o Dotfuscator trocou o nome das classes e das variáveis de forma a tornar o código da descompilação menos entendível.

É importante para melhorarmos os próximos artigos ter um feedback, para opinões, sugestões, críticas ou sugestões de assuntos para artigos entre em contato pelo email ml_s_brasil@hotmail.com .