.net instrumentos/estratégia de ofuscação [encerrado]
o meu produto tem vários componentes: ASP.NET, Windows Forms App e Windows Service. 95% ou mais do código está escrito em VB.NET.
Por razões de Propriedade Intelectual, preciso de ofuscar o código, e até agora tenho usado uma versão do dotfuscator que tem agora mais de 5 anos. Acho que está na hora de passar para uma ferramenta de nova geração. O que procuro é uma lista de requisitos que devo considerar ao procurar um novo ofuscador. O que eu sei deve procurar até agora:- serialização/des-serialização. Na minha solução atual, eu simplesmente digo à ferramenta Não para ofuscar qualquer membro de dados de classe porque a dor de não ser capaz de carregar dados que foi previamente serializado é simplesmente muito grande.
- Integração com o Processo de Compilação
- trabalhar com ASP.NET. no passado, achei isso problemático devido à mudança .dll nomes (você frequentemente ter um por página) - que nem todas as ferramentas lidar bem.
30 answers
De volta com. Net 1.1 ofuscação era essencial: o código de descompilação era fácil, e você poderia ir de montagem, para IL, para C# código e tê-lo compilado novamente com muito pouco esforço.
Com a. Net 3.5, Não tenho a certeza. Tente descompilar um conjunto 3.5; o que você tem é um longo caminho longe de compilar.Adicione as optimizações de 3.5 (muito melhor que 1.1) e a forma como os tipos anónimos, os delegados e assim por diante são tratados pela reflexão (são um pesadelo para recompilar). Adicionar lambda expressions, compiler 'magic' like Linq-syntax and var
, and C#2 functions like yield
(which results in new classes with unreadable names). O seu código descompilado acaba muito longe de ser compilado.
Francamente, estou convencido que ofuscar é uma grande invasão.
Mesmo os problemas que aborda não são inteiramente um problema real. A única coisa que precisas de proteger São cordas de ligação, códigos de activação, coisas sensÃveis à segurança. Este absurdo de que outra empresa vai reverter a sua base de código e criar um produto concorrente a partir dele é algo do pesadelo de um gerente paranóico, não a realidade.
Xenocode - tenho uma antiga licença para o Xenocode 2005 que usei para ofuscar os meus conjuntos. NET 2.0. Funcionou bem no XP e foi uma solução decente. O meu projecto actual é o. Net 3.5 e estou no Vista, o support disse - me para tentar, mas a versão de 2005 nem sequer funciona no Vista (crashes), por isso eu e agora tenho de comprar o "Postbuild 2008" a um preço que aumenta o valor do GOB ponto de $ 1900. Pode ser uma boa ferramenta, mas não vou descobrir. Caro.
Reactor.Net este é um ponto de preço muito mais atraente e funcionou bem no meu autómato executável. O módulo de Licencing também foi bom e ter-me-ia poupado um monte de esforço. Infelizmente, falta-lhe uma caracterÃstica fundamental, que é a capacidade de excluir coisas da ofuscação. Isso torna impossÃvel alcançar o resultado que eu precisava (mesclar vários conjuntos juntos, ofuscar alguns, não ofuscar outros).
Fiz o download da avaliação Para isto e funcionou perfeitamente. Consegui tudo o que queria e a Interface era de primeira classe. O ponto de preço ainda é um pouco pesado.
Dotfuscator Pro - não conseguiu encontrar o preço no site. Atualmente em discussões para obter uma cotação. Parece sinistro.
Confuser - um projecto de código aberto que funciona muito bem (para confundir ppl, assim como o nome implicar). https://confuser.codeplex.com/
( added by jgauffin)
Nota: ConfuserEx é alegadamente "quebrado" de acordo com Número #498 no seu repo GitHub.
Desde 29 de junho de 2012, Eazfuscator.NET agora é comercial. A última versão disponÃvel é 3.3.
Nos últimos dois dias eu tenho experimentado com Dotfuscator Community Edition advanced (um download gratuito após registrar o CE básico que vem junto com o Visual Studio).
Acho que a razão pela qual mais pessoas não usam ofuscação como opção padrão é que é um problema grave comparado com o risco. Em projetos de teste menores eu poderia fazer com que o código ofuscado funcionasse com muito esforço. A implantação de um projecto simples via ClickOnce foi problemática, mas possÃvel após a assinar manualmente os manifestos com a mage. O único problema era que no erro o traço da pilha voltou ofuscado e a CE não tem um desobfuscador ou clarifier embalado.Eu tentei ofuscar um projeto real que é VSTO baseado no Excel, com integração virtual da Terra, muitas chamadas webservice e um recipiente de COI e muitas reflexões. Era impossÃvel.
Se a ofuscação é realmente um requisito crÃtico, você deve projetar a sua aplicação com isso em mente a partir do comecem, testem as construções obscuras à medida que progridem. Caso contrário, se for um projeto bastante complexo, você vai acabar com uma grande quantidade de dor.
Crypto Ofuscator trata de todas as tuas preocupações e cenários. It:
- exclui automaticamente os tipos/membros da ofuscação com base em regras. Os tipos/campos serializados são um deles.
- Ele pode ser integrado no processo de construção usando MSBUild.
- suportes ASP.Net projectos.
O que você deve saber sobre a inversão bytecode é que já é prática padrão para os testadores de segurança para rever o código x86 direto e encontrar vulnerabilidades nele. No raw X86, Você não pode necessariamente encontrar funções válidas, muito menos seguir uma variável local através de uma chamada de função. Em quase nenhuma circunstância os inversores de código nativos têm acesso a funções e nomes de variáveis - - - - a menos que eles estejam revisando o código Microsoft, para o qual o MSFT ajuda a fornecer essa informação ao público.
A "Dotfuscação" funciona principalmente através da codificação de funções e nomes de variáveis. É provavelmente melhor fazer isso do que publicar código com informações de nÃvel de depuração, onde o O Reflector está literalmente a revelar o seu código-fonte. Mas tudo o que fizeres para além disto, é provável que chegues a resultados decrescentes.
Você poderia usar "Dotfuscator Community Edition" - ele vem por padrão no Visual Studio 2008 Professional. Você pode ler sobre isso em:
Http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx
Também acrescenta alguns problemas extra. Imprimir os nomes das suas classes em ficheiros de Registo/excepções têm de ser desactualizados. E é claro que não se pode criar uma classe a partir do seu nome. Então é uma boa idéia dar uma olhada em seu cliente e ver que problemas você pode obter por ofuscar.
Tudo depende da linguagem de programação, que você usa. Deve ler-se o artigo: código ofuscado
A maneira livre seria usar o dotfuscator de dentro do estúdio visual, caso contrário você teria que sair e comprar um ofuscador como o Postbuild (http://www.xenocode.com/Landing/Obfuscation.aspx)
Tive de usar um ofuscation/resource protection no meu rpoject mais recente e encontrei cripto Ofuscator como uma ferramenta simples de usar. A questão da serialização é apenas uma questão de Configurações nesta ferramenta.
Você também pode querer olhar para o novo código de tecnologias de proteção, tais como Metaforic e V. eu.Laboratórios e o novo software de cópia de tecnologias de proteção, tais como ByteShield. Disclosure: eu trabalho para ByteShield.
Também uso montagem inteligente. No entanto, não sei como funciona para uma aplicação web. No entanto, gostaria de salientar que se o seu aplicativo usa shareware type protection, certifique-se de que ele não verifica uma licença com um retorno booleano. é demasiado fácil fazer um byte. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx
A montagem inteligente é óptima, fui usada na maioria dos meus projectos
Se tiver um ficheiro Exe. net existe uma solução Muito Melhor.
Eu usoThemida e posso dizer que funciona muito bem.
A única desvantagem da Themida é que não consegue proteger os Dlls. net. (Também protege o código C++ em Exe e DLLs)Themida é muito mais barato do que os aqui mencionados obfuscators e é o melhor em anti pirataria proteção no mercado. Ele creates a virtual machine were critical parts of your code are run and runs several threads that detect manipulation or breakpoints set by a cracker. Ele converte o. NET Exe em algo que o refletor já não reconhece como um conjunto.net.
Por Favor, leia a descrição pormenorizada no seu sÃtio Web: http://www.oreans.com/themida_features.php