none
Problema ao Ofuscar código fonte de Aplicação .net (Compact Framework)

    Question

  • Oi;

    Estou com um sério problema de percurso no desenvolvimento de um sistema para Windows Mobile (compact Framework),  após terminar minha aplicação (sistema para venda externa com palm ou smartphone) constatei que não posso ofuscar meu código fonte utilizando o software Eazfuscator.NET ou Dotfuscator (isso para proteger meu código fonte) pois umas das classes do sistema que serve para montar os scripts do banco Compact sqlServer (classe de persistência), utiliza-se de Reflection para pegar a estrutura das classes que representam as tabelas do banco no sistema e gerar o script dinamicamente. O recurso de reflection simplesmente não funciona após ofuscar o executável, porem andei pesquisando e me parece que tem uma forma de acertar isso. Alguém pode me ajudar? Socorro!!!

    Link da aplicação de exemplo: http://video.devmedia.com.br/discovirtual/173559/Chamados/Chamado1/TesteOfuscamento.zip

    O exemplo mostra uma classe de nome rota que é interpretada pela classe persistente e é gerado uma string contendo o script (select ). Assim se vc testar esta aplicação vc vera que funcionará perfeitamente, porem se vc ofuscar o executável e tentar rodar a aplicação novamente o sistema vai deixar de funcionar.

    Espero que alguém possam me ajudar, pois tenho que entregar esta aplicação para meu cliente + não queria entregar a aplicação sem ofuscar o código fonte para evitar pirataria.

    Obrigado

     



    • Edited by Alan Lazaro Thursday, January 21, 2010 4:03 PM Fonte modificada
    Thursday, January 21, 2010 3:48 PM

Answers

  • Depois de muito tempo na frente do computador consegui resolver o problema com louvor.

    Sou muito grato a Deus por isso.  Deus seja Louvado!!!

     

    Bom, para quem passar pela mesma situação la vai a solução:

    Para aplicações móbile em c# vc tem que incluir a referencia a um arquivo de nome ObfuscationAttributes.cs    (este arquivo esta disponível na instalação do software Eazfuscator.NET ). Também na classe program.cs inclua após declaração do uses a linha abaixo:

    [assembly : ObfuscateAssemblyAttribute (true , StripAfterObfuscation = false )]

     

    Ex:

    using System.Reflection;

    using System.IO;

    using Global;

    using Modelo;

     

    [assembly : ObfuscateAssemblyAttribute (true , StripAfterObfuscation = false )]

     

    namespace Mobile_Empresarial

    {

        static class Program

        {

     

    Tambem será necessário incluir nas classes que não devem ser ofuscadas (as classes que representam as tabelas do banco de dados ) a linha de código abaixo:

    [System.Reflection.ObfuscationAttribute (Feature = "renaming" , ApplyToMembers = true )]

     

    Ex:

     

    namespace Modelo

    {

        [System.Reflection.ObfuscationAttribute (Feature = "renaming" , ApplyToMembers = true )]

        [Table ("ROTAS )]

        public class Rota

        {

            private int ? _iD = null ;

            [Key ("ID" )]

            public int ? ID

            {

                get { return _iD; }

                set { _iD = value ; }

            }

     

            private int ? _ordem = null ;

            [Column ("ORDEM" , ColumnType .Int32, 11, false )]

            public int ? Ordem

            {

                get { return _ordem; }

                set { _ordem = value ; }

            }  

     

    Pronto, mesmo depois de ofuscar o executável o script sql continua sendo montado dinamicamente

    • Edited by Alan Lazaro Friday, January 22, 2010 3:55 PM html
    • Marked as answer by Alan Lazaro Friday, January 22, 2010 3:57 PM
    Friday, January 22, 2010 3:54 PM