ferramentas .NET ofuscação / estratégia

votos
146

Meu produto tem vários componentes: ASP.NET, Windows Forms App e Windows Service. 95% ou menos do que o código é escrito no VB.NET.

Por razões de Propriedade Intelectual, que eu preciso para ofuscar o código, e até agora tenho vindo a utilizar uma versão do Dotfuscator que está agora mais de 5 anos de idade. Eu estou pensando que é hora de passar para uma ferramenta de nova geração. O que eu estou procurando é uma lista de requisitos que devo considerar quando procura de um novo obfuscator.

O que eu sei que eu deveria procurar até agora:

  • Serialização / De-serialização . Na minha solução atual, eu simplesmente dizer a ferramenta não para ofuscar quaisquer membros de dados de classe porque a dor de não ser capaz de carregar dados que foi serializado anteriormente é simplesmente muito grande.
  • A integração com o processo de construção da
  • Trabalhar com ASP.NET . No passado, eu descobri esta problemática devido à mudança de .dll nomes (muitas vezes você tem um por página) - que nem todas as ferramentas de segurar bem.
Publicado 05/08/2008 em 17:20
fonte usuário
Em outras línguas...                            


31 respostas

votos
49

Nós tentamos um número de obfuscators. Nenhum deles funciona em um aplicativo cliente / servidor grande que usa comunicação remota. O problema é que a participação do cliente e servidor algumas DLLs, e nós não encontramos qualquer obfuscator que pode lidar com isso.

Nós tentamos Dotfuscator Pro, smartassembly, Xenocode, Salamander, e vários pequenos aplicativos de tempo cujos nomes me escapam.

Francamente, estou convencido de ofuscação é um grande hack.

Mesmo os problemas que aborda não é inteiramente um problema real. A única coisa que você realmente precisa para proteger é seqüências de conexão, códigos de ativação, coisas sensíveis à segurança desse tipo. Este absurdo que uma outra empresa vai fazer engenharia reversa toda a sua base de código e criar um produto concorrente dele é algo de pesadelo de um gerente de paranóico, não realidade.

Respondeu 07/08/2008 em 19:15
fonte usuário

votos
39

Eu sou 'Knee Deep' neste momento, tentando encontrar uma boa solução. Aqui estão as minhas impressões até agora.

Xenocode - Eu tenho uma licença antiga para Xenocode2005 que eu costumava usar para ofuscar o meu .net montagens 2.0. Funcionou muito bem em XP e era uma solução decente. Meu projeto atual é NET 3.5 e eu estou no Vista, suporte disse-me para dar uma chance, mas a versão 2005 não mesmo trabalhar no Vista (falha) para que eu e agora eu tenho que comprar 'PostBuild2008' a um preço gobsmacking de US $ 1900. Esta pode ser uma boa ferramenta, mas eu não vou descobrir. Muito caro.

Reactor.Net - Este é um ponto de preço muito mais atraente e funcionou muito bem no meu Standalone executeable. O módulo de licenciamento também foi bom e teria me salvou um monte de esforço. Infelizmente, está faltando uma característica fundamental e que é a capacidade de excluir coisas do ofuscamento. Isso torna impossível para alcançar o resultado que eu precisava (Mesclar vários conjuntos juntos, ofuscar alguns, não-Ofuscação outros).

Smartassembly - Eu baixei o Eval para isso e ele funcionou perfeitamente. Eu era capaz de conseguir tudo o que eu queria e a interface foi de primeira classe. O ponto de preço ainda é um pouco pesado.

Dotfuscator Pro - não foi possível encontrar o preço no site. Atualmente em discussões para obter uma cotação. Soa ameaçador.

A confunde - um projeto de código aberto que funciona muito bem (para confundir ppl, tal como o nome indica). https://confuser.codeplex.com/
(adicionado por jgauffin)

Nota: ConfuserEx é declaradamente "quebrado" de acordo com o Problema nº 498 sobre a sua repo GitHub.

Respondeu 11/05/2009 em 07:04
fonte usuário

votos
39

Voltar com .Net 1.1 ofuscação era essencial: Código decompiling foi fácil, e você poderia ir de montagem, a IL, para o código C # e tê-lo compilado novamente com muito pouco esforço.

Agora, com Net 3.5 Não estou de todo certo. Tente decompiling uma montagem de 3,5; o que você recebe é um longo caminho a partir de compilar.

Adicione as otimizações de 3,5 (muito melhor do que 1.1) e o caminho tipos anônimos, delegados e assim por diante são manipulados por reflexão (eles são um pesadelo para recompilar). Adicionar expressões lambda, compilador 'mágica' como Linq-sintaxe e var, e C # 2 funções como yield(o que resulta em novas classes com nomes ilegíveis). Seu código compilado termina um longo caminho a partir compilable.

A equipe de profissionais com muito tempo ainda pode fazer engenharia reversa de volta, mas, em seguida, o mesmo é verdade para qualquer código ofuscado. Qual o código que saiu do que seria insustentável e altamente provável que seja muito buggy.

Eu recomendaria-chave assinando seus conjuntos (ou seja, se os hackers podem recompilar que eles têm de recompilar todos), mas eu não acho que de ofuscação vale a pena.

Respondeu 12/08/2008 em 13:19
fonte usuário

votos
21

Se você está procurando um livre que você poderia tentar DotObfuscator Community Edition que vem com Visual Studio ou Eazfuscator.NET .


Desde 29 de junho de 2012 , Eazfuscator.NET agora é comercial. A última versão gratuita disponível é de 3,3.

Respondeu 05/08/2008 em 17:30
fonte usuário

votos
18

Tenho vindo a utilizar smartassembly. Basicamente, você escolhe uma DLL e retorna-lo ofuscado. Parece que funciona bem e eu não tive nenhum problema até agora. Muito, muito fácil de usar.

Respondeu 05/08/2008 em 17:21
fonte usuário

votos
10

Eu tentei quase todos os obfuscator no mercado e smartassembly é o melhor na minha opinião.

Respondeu 07/08/2008 em 11:44
fonte usuário

votos
8

Eu tenho também usando smartassembly. Descobri que Ezrinz .Net Reactor muito melhor para mim em aplicativos .NET. Ele ofusca, apoiar Mono, funde montagens e também também tem um módulo de licenciamento muito agradável para criar versão de teste ou vincular a licença para uma determinada máquina (muito fácil de implementar). O preço também é muito competitivo e quando eu precisava de apoio eles onde rápido. Eziriz

Só para ficar claro que eu sou apenas um custumer que gosta do produto e não de alguma forma relacionados com a empresa.

Respondeu 22/08/2008 em 18:41
fonte usuário

votos
7

A resposta curta é que você não pode.

Existem várias ferramentas em torno de que vai tornar mais difícil para alguém ler o seu código - alguns dos quais têm sido apontados por outras respostas.

No entanto, todos estes fazer é torná-lo mais difícil de ler - eles aumentam a quantidade de esforço necessário, isso é tudo. Muitas vezes isso é suficiente para dissuadir os leitores casuais, mas alguém que está determinado a cavar o seu código será sempre capaz de fazê-lo.

Respondeu 16/07/2009 em 22:45
fonte usuário

votos
6

Nós temos um aplicativo de multi camadas com uma interface winform asp.net e que também suporta comunicação remota. Eu não tive nenhum problema com o uso de qualquer obfuscator com exceção do tipo de criptografia que gera um carregador que pode ser problemático em todos os tipos de formas inesperadas e não vale a pena em minha opinião. Na verdade, o meu conselho seria mais ao longo das linhas de "Evite criptografar obfuscators tipo loader como a peste". :)

Na minha experiência de qualquer obfuscator irá funcionar bem com qualquer aspecto de .net incluindo asp.net e comunicação remota, você só tem que se tornar íntimo com as configurações e aprender o quão longe você pode empurrá-lo em quais áreas do seu código. E tomar o tempo para tentar engenharia reversa no que chegar e ver como ele trabalha com as várias configurações.

Usamos vários ao longo dos anos em nossos aplicativos comerciais e liquidada em Spices obfuscator de 9rays.net porque o preço é justo, ele faz o trabalho e eles têm um bom suporte embora realmente não precisava do apoio em anos mais, mas para ser honesto Eu não acho que realmente importa qual Obfuscator você usa, os problemas e curva de aprendizagem são tudo a mesma coisa se você quiser tê-lo funcionar corretamente com comunicação remota e asp.net.

Como já foi mencionado tudo o que você está fazendo realmente é o equivalente de um cadeado, mantendo as pessoas de outra forma honesta e ou tornando mais difícil simplesmente recompilar um aplicativo.

Licenciamento é geralmente a área-chave para a maioria das pessoas e você deve definitivamente estar usando algum tipo de sistema certificado assinado digitalmente para o licenciamento de qualquer maneira. Seu maior perda virá de partilha informal de licenças se você não tem um sistema inteligente no lugar, as pessoas que quebram o sistema de licenciamento foram nunca vai comprar no primeiro lugar.

É realmente fácil de levar isso longe demais e têm um impacto negativo sobre os seus clientes e sua empresa, fazer o que é simples e razoável e, em seguida, não se preocupe com isso.

Respondeu 16/11/2008 em 20:57
fonte usuário

votos
5

Crypto Obfuscator resolver todas as suas preocupações e cenários. Isto :

  1. exclui automaticamente os tipos / membros de ofuscação com base em regras. tipos serializados / campos são um deles.
  2. Ele pode ser integrado ao processo de compilação usando MSBuild.
  3. Apoia projetos ASP.NET.
Respondeu 09/10/2009 em 10:42
fonte usuário

votos
5

Nos últimos dois dias tenho vindo a experimentar com Dotfuscator Community Edition avançado (download gratuito após o registro da CE básica que vem com o Visual Studio).

Penso que a razão mais pessoas não usam ofuscação como uma opção padrão é que é um aborrecimento grave em comparação com o risco. Em projetos menores do teste eu poderia obter o código ofuscado correr com muito esforço. A implantação de um projeto simples via ClickOnce era problemático, mas realizáveis ​​após a assinatura manualmente os manifestos com mago. O único problema foi que, em erro o rastreamento de pilha voltou ofuscado ea CE não tem um Deobfuscator ou clarificador embalados.

Tentei ofuscar um projeto real que é VSTO baseado em Excel, com a integração do Virtual Earth, os lotes de chamadas de serviço Web e um recipiente do COI e do lote de reflexão. Era impossível.

Se ofuscação é realmente um requisito crítico, você deve criar seu aplicativo com isso em mente desde o início, testando a ofuscado constrói à medida que avança. Caso contrário, se é um projeto bastante complexo, você vai acabar com uma séria quantidade de dor.

Respondeu 04/02/2009 em 23:40
fonte usuário

votos
3

Achei o Agile.Net fornecer boa proteção para o seu assembly .NET porque oferecem não só ofuscação mas também de criptografia. Baixar uma pista livre.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx

Respondeu 03/09/2013 em 16:26
fonte usuário

votos
3

Evite Reactor. É completamente inútil (e sim, eu pago por uma licença). Xenocode foi o melhor que eu encontrei e comprei uma licença para também. O apoio foi muito bom, mas eu não precisava dele tanto como ele só trabalhou. Eu testei todos os obfuscator que eu poderia encontrar e minha conclusão é que Xenocode foi, de longe, o mais robusto e fez o melhor trabalho (também possibilidade de processar o seu exe .NET para um exe nativo que eu não vi em nenhum outro lugar postar.).

Existem duas diferenças principais entre o reactor e Xenocode. A primeira é que Xenocode realmente funciona. A segunda é que a velocidade de execução de seus conjuntos não é diferente. Com reator foi cerca de 6 milhões de vezes mais lento. Eu também tenho a impressão de que reator foi uma operação de um homem.

Respondeu 04/05/2011 em 10:43
fonte usuário

votos
3

Você pode usar "Dotfuscator Community Edition" - vem por padrão no Visual Studio 2008 Professional. Você pode ler sobre ele em:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

A versão "Professional" do produto custa dinheiro, mas é melhor.

Você realmente precisa de seu código ofuscado? Normalmente há muito pouco errado com o seu aplicativo que está sendo compilado, a menos que seja utilizado para fins de segurança. Se você está preocupado com as pessoas "roubar" o seu código, não seja; a grande maioria das pessoas a ver o seu código será para fins de aprendizagem. De qualquer forma, não há nenhuma estratégia de ofuscação totalmente eficaz para .NET - alguém com habilidade suficiente será sempre capaz de descompilar / alterar sua aplicação.

Respondeu 16/07/2009 em 22:47
fonte usuário

votos
3

Eu não tinha problemas com smartassembly.

Respondeu 16/09/2008 em 12:12
fonte usuário

votos
3

Eu recentemente tentou canalizando a saída de um obscurecimento gratuito para o outro obfuscator livre - ou seja Dotfuscator CE eo novo obfuscator Babel no CodePlex. Mais detalhes no meu blog .

Quanto a serialização, eu mudei esse código em uma DLL diferente e incluída que no projeto. Ponderei que não havia segredos em lá que não estão no XML de qualquer maneira, por isso não precisa de ofuscação. Se não houver qualquer código grave dessas classes, utilizando classes parciais no conjunto principal deve cobri-lo.

Respondeu 11/09/2008 em 12:53
fonte usuário

votos
3

Você deve usar o que é mais barato e mais conhecido por sua plataforma e chamá-lo um dia. Ofuscação de linguagens de alto nível é um problema difícil, porque fluxos opcode VM não sofrem os dois maiores problemas correntes opcode nativas fazer: função / identificação método e registrar aliasing.

O que você deve saber sobre bytecode revertendo é que já é prática padrão para testadores de segurança para revisar o código X86 reta e encontrar vulnerabilidades na mesma. Em cru X86, você pode não necessariamente até achar funções válidas, muito menos controlar uma variável local ao longo de uma chamada de função. Em quase nenhuma circunstância reversores código nativo tem acesso a funções e nomes de variáveis ​​--- a menos que está revendo código Microsoft, para o qual MSFT fornece prestativamente que a informação ao público.

"Dotfuscation" trabalha principalmente por lutando função e nomes de variáveis. É provavelmente melhor para fazer isso do que publicar código com informações em nível de depuração, onde o refletor é literalmente desistir de seu código-fonte. Mas qualquer coisa que você faz além disso é propensos a entrar em retornos decrescentes.

Respondeu 10/09/2008 em 22:38
fonte usuário

votos
2

Aqui está um documento do Microsoft si. Espero que ajude ..., é a partir de 2003, mas ainda pode ser relevante.

Respondeu 16/07/2009 em 22:38
fonte usuário

votos
2

Eu tenho ofuscando código no mesmo aplicativo desde .Net 1, e tem sido uma grande dor de cabeça de uma perspectiva de manutenção. Como você mencionou, o problema de serialização pode ser evitada, mas é realmente fácil de cometer um erro e ofuscar algo que você não quer ofuscado. É fácil de quebrar a construir, ou para alterar o padrão de ofuscação e não ser capaz de abrir arquivos antigos. Além disso, ele pode ser difícil de descobrir o que deu errado e onde.

Nossa escolha foi Xenocode, e foram I para fazer a escolha novamente hoje Eu preferiria não ofuscar o código, ou use Dotfuscator.

Respondeu 21/08/2008 em 21:31
fonte usuário

votos
1

Há uma boa versão de código aberto chamado Obfuscar. Parece funcionar bem. Tipos, propriedades, campos, métodos podem ser excluídos. O original está aqui: https://code.google.com/p/obfuscar/ , mas uma vez que parece não ser atualizado mais, alguém bifurcada-lo para aqui: https://obfuscar.codeplex.com/

Respondeu 19/12/2013 em 05:24
fonte usuário

votos
1

Eu tive que usar uma proteção ofuscação / recurso no meu mais recente rpoject e encontrou Crypto Obfuscator como um agradável e simples de usar a ferramenta. A questão de serialização é apenas uma questão de definições nesta ferramenta.

Respondeu 22/04/2011 em 12:18
fonte usuário

votos
1

o caminho livre seria usar Dotfuscator de dentro visual studio, caso contrário, você teria que sair e comprar um ofuscador como Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx )

Respondeu 16/07/2009 em 22:38
fonte usuário

votos
1

Tudo depende da linguagem de programação, que você usa. Leia o artigo: ofuscado código

Respondeu 16/07/2009 em 22:31
fonte usuário

votos
1

Estamos usando smartassembly em nosso cliente Windows. Funciona muito bem.

Será que adicionar alguns problemas extras também. Imprimir seus nomes de classe em arquivos de log / exceções tem que ser de-ofuscado. E, claro, não pode criar uma classe de seu nome. Portanto, é uma boa idéia para dar uma olhada em seu cliente e veja quais problemas você pode começar por ofuscar.

Respondeu 04/04/2009 em 12:28
fonte usuário

votos
0

Smartassembly é grande, eu era usado na maioria dos meus projetos

Respondeu 01/12/2010 em 05:49
fonte usuário

votos
0

Eu também uso smartassembly. No entanto, eu não sei como ele funciona para uma aplicação web. No entanto, eu gostaria de salientar que, se o seu aplicativo usa proteção tipo shareware, certifique-se que não verificar uma licença com um retorno boolean. é muito fácil de crack byte. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

Respondeu 04/04/2009 em 11:53
fonte usuário

votos
0

Você também pode querer olhar para novas tecnologias de proteção de código, como Metaforic e ViLabs e novas tecnologias de proteção contra cópia de software, tais como ByteShield . Divulgação: Eu trabalho para ByteShield.

Respondeu 03/01/2009 em 19:56
fonte usuário

votos
-1

Ofuscando não é uma protecção real.

Se você tem um arquivo .NET Exe há um MUITO melhor solução.

Eu uso Themida e posso dizer que ele funciona muito bem.

O único inconveniente de Themida é que ele não pode proteger .NET DLLs. (Também protege código C ++ no Exe e DLL)

Themida é de longe mais barato do que os obfuscators aqui mencionados e é o melhor anti pirataria de proteção no mercado. Ele cria uma máquina virtual foram partes críticas do seu código são executados e executa vários tópicos que detectam manipulação ou pontos de interrupção definidos por um cracker. Ele converte o .NET Exe em algo que refletor nem sequer reconhece como um assembly .NET mais.

Por favor, leia a descrição detalhada em seu site: http://www.oreans.com/themida_features.php

Respondeu 06/03/2014 em 04:03
fonte usuário

votos
-1

Tentei Eziriz versão demo .... eu gostei. Mas nunca trouxe o software.

Respondeu 04/09/2009 em 04:21
fonte usuário

votos
-2

Tente usar este serviço http://morpher.com/

Usei-o para um projeto.

Respondeu 27/12/2013 em 11:22
fonte usuário

votos
-2

Eu tentei um produto chamado Rummage e ele faz um bom trabalho em dar-lhe algum controle ... Embora ela não tem muitas coisas que Eziriz oferece, mas preço para Rummage é bom demais ...

Respondeu 06/09/2013 em 18:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more