none
Obfuscator RRS feed

  • Pergunta

  • Olá,
    Tenho uma aplicação desenvolvida em C# .Net 3.5 e preciso ofuscar o código, qual a melhor forma de fazer isso ?
    fiz alguns teste com  Crypto Obfuscator For .Net 2009, Skater .NET Obfuscator Light Edition e DotFuscato, porém o Salamander consegue abrir o código e mostrar sua estrutura mesmo que com alguns nomes diferentes. Se alguém tiver uma solução e que de preferencia seja FREE eu agradeço, pois usarei em uma aplicação comercial.
    Obrigado.
    segunda-feira, 5 de outubro de 2009 12:27

Respostas

  • Olá Carlos,

    Não é só com o Salamander que isso acontece... Existem dezenas de disassemblers disponíveis para .NET, e todos eles permitem descompilar aplicações.

    É impossível bloquear isso, porque todo código que você desenvolve em alguma linguagem do .NET (C#, VB .NET, etc...) é compilado para IL (Intermediate Language), que é uma linguagem com uma estrutura de alto nível, e por isso é razoavelmente simples transformar o código que está em IL de volta para C# ou VB .NET, por exemplo.

    O máximo que você pode fazer é dificultar esse processo... Impedir totalmente não é possível.

    Os obfuscators ajudam a dificultar, mas não impedem a descompilação... Eles apenas alteram os nomes dos métodos e das variáveis, e alteram também a ordem de algumas operações (quando possível), na tentativa de deixar o código confuso a ponto das pessoas desistirem da idéia de tentar descompilar... Tudo depende da "paciência" de quem descompilar...

    Uma estratégia que muitas empresas utilizam (normalmente em conjunto com obfuscators), é criar uma aplicação em Visual C++ (não-gerenciado) que armazena todos os assemblies (DLLs, EXEs, etc...) criptografados dentro dessa aplicação C++. Então, ao iniciar essa aplicação, ela descriptografa os assemblies em tempo de execução, e coloca-os em memória executando diretamente.

    Isso dificulta a vida de algumas pessoas, porque não são criados arquivos físicos no disco, que podem ser descompilados (tudo é feito em memória), mas novamente, isso não impede que você utilize um debugger qualquer para examinar a memória do processo, e extrair os assemblies que estão carregados, para arquivos em disco.

    ---

    Aproveito para sugerir a leitura do tópico abaixo, com mais algumas sugestões de Obfuscators:

    Disassembler .net
    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/b9b5f466-50c3-4bb7-a498-f80dacb6ff12


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com
    segunda-feira, 5 de outubro de 2009 20:28
    Moderador

Todas as Respostas

  • Olá Carlos,

    Não é só com o Salamander que isso acontece... Existem dezenas de disassemblers disponíveis para .NET, e todos eles permitem descompilar aplicações.

    É impossível bloquear isso, porque todo código que você desenvolve em alguma linguagem do .NET (C#, VB .NET, etc...) é compilado para IL (Intermediate Language), que é uma linguagem com uma estrutura de alto nível, e por isso é razoavelmente simples transformar o código que está em IL de volta para C# ou VB .NET, por exemplo.

    O máximo que você pode fazer é dificultar esse processo... Impedir totalmente não é possível.

    Os obfuscators ajudam a dificultar, mas não impedem a descompilação... Eles apenas alteram os nomes dos métodos e das variáveis, e alteram também a ordem de algumas operações (quando possível), na tentativa de deixar o código confuso a ponto das pessoas desistirem da idéia de tentar descompilar... Tudo depende da "paciência" de quem descompilar...

    Uma estratégia que muitas empresas utilizam (normalmente em conjunto com obfuscators), é criar uma aplicação em Visual C++ (não-gerenciado) que armazena todos os assemblies (DLLs, EXEs, etc...) criptografados dentro dessa aplicação C++. Então, ao iniciar essa aplicação, ela descriptografa os assemblies em tempo de execução, e coloca-os em memória executando diretamente.

    Isso dificulta a vida de algumas pessoas, porque não são criados arquivos físicos no disco, que podem ser descompilados (tudo é feito em memória), mas novamente, isso não impede que você utilize um debugger qualquer para examinar a memória do processo, e extrair os assemblies que estão carregados, para arquivos em disco.

    ---

    Aproveito para sugerir a leitura do tópico abaixo, com mais algumas sugestões de Obfuscators:

    Disassembler .net
    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/b9b5f466-50c3-4bb7-a498-f80dacb6ff12


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com
    segunda-feira, 5 de outubro de 2009 20:28
    Moderador
  • Olá Caio, obrigado pela atenção,

    Consegui um programa para criptografar aplicações "Phoenix Protector" e além de tudo é FREE, porém só funciona para o framework até 3.0 e estou trabalhando com 3.5. Mais mesmo assim ainda estou procurando um outro que seja de preferência FREE para framework 3.5, se souber de algum por favor indique. Suas dicas forma de grande valia para o meu conhecimento.

    Obrigado
    Atenciosamente
    Carlos Sulzer
    terça-feira, 6 de outubro de 2009 19:49