Pergunta

Tenho certeza que muitos leitores do SO usaram Lutz Roederde Refletor .NET para descompilar seu código .NET.Fiquei surpreso com a precisão com que nosso código-fonte pôde ser reconstruído a partir de nossos assemblies compilados.

Eu estaria interessado em saber quantos de vocês usam ofuscação e para que tipo de produtos?

Tenho certeza de que esta é uma questão muito mais importante para, digamos, um aplicativo .NET que você oferece para download pela Internet, em oposição a algo que é criado sob medida para um cliente específico.

Foi útil?

Solução

Eu não me preocuparia muito sobre isso. Eu prefiro concentrar em lançar um produto impressionante, recebendo uma boa base de usuários, e tratar seus clientes direito do que se preocupar com a percentagem mínima dos usuários preocupados com roubo de seu código ou olhando para a fonte.

Outras dicas

Lembre-se, ofuscamento não é criptografia. IMHO, se o valor percebe alguém na ordem inversa-engenharia seu código, eles vão fazer isso. Isso é verdade para código gerenciado ou código nativo, ofuscado ou não. Claro, ofuscação impede o observador casual, mas é o seu negócio realmente ameaçada por essas pessoas? Cada método .NET ofuscação Eu vi torna a sua vida como um desenvolvedor mais difícil.

Há serviços que oferecem criptografia verdade, como SLPS da Microsoft. Consulte http://www.microsoft.com/slps/default.aspx

No momento não ofuscar toda a nossa saída, apesar de sermos uma pequena empresa que vende software especialista para um pequeno número de clientes.

Tomamos essa decisão por uma simples razão - descobrimos um ex-empregado descontente estava se aproximando ativamente nossos clientes solicitando binários -. Havia alguma alguma preocupação que ele tinha a intenção de engenharia reversa de recursos mais recentes, a fim de funcionalidade competindo oferta

É claro que ele ainda é capaz de fazer isso se ele usa o software, mas não há razão para torná-lo fácil para ele.

No novo ofuscação, mas muitos truques compilador desde 1,1

Por exemplo cada vez que você usar um tipo anônimo que você começa IL que compila trás com um nome bastante obscura. Toda vez que você usar render-lhe obter uma classe totalmente nova que implementa tanto IEnumerable e IEnumerator (otimização inteligente, código ilegível). Toda vez que você usar um delegado anônimo que você começa um novo método com um nome que é inválida em cada linguagem .NET que eu conheço, mas que está bem no IL.

@ Rob Cooper

Tendo tido algumas discussões com o meu Gerente no trabalho, ele disse que não faz Ofuscação, mas não NGEN em instalar, aparentemente, que deve ser suficiente para parada refletor trabalhando em seu assembléias, mas não tenho idéia se isso é verdade e em que medida, por isso, não tomá-lo como um evangelho:)

Esta não oferece qualquer tipo de protecção contra desmontagem. Primeiro eu imaginar a sua perfeitamente possível extrair arquivos raw de qualquer pacote de instalação como um arquivo CAB MSI ou.

Mas o mais importante, Ngen é executado na máquina do cliente após a montagem foi instalado. Ngen apenas obriga a montagem para compilar agora em vez de mais tarde usando o JIT. Os restos e montagem original não foi modificado e deve permanecer, porque Ngen pode não ser capaz de compilar todo o conjunto.

Ngen é para o desempenho, não a segurança, e não faz nada para impedir a desmontagem ou torná-lo ainda um pouco mais difícil.

fácil para mim - se você precisa para proteger a propriedade intelectual - Ofuscação -. Se não o fazem não

Fácil de fazer com as ferramentas adequadas.

Eu acho que até certo ponto todos nós devemos ser preocupar com o nosso IP:)

Boa pergunta embora como é algo que eu estou interessado em saber mais sobre (I fazer atualmente não Ofuscação).

Tendo tido algumas discussões com o meu gerente no trabalho, ele disse que não faz Ofuscação, mas faz NGEN em instalar, aparentemente isso deve ser suficiente para parar refletor trabalhando em suas assembleias, mas eu não tenho idéia se isso é verdade e em que medida, por isso, não tomá-lo como um evangelho:)

Boa pergunta :) +1

Não usar ofuscação para aplicações "não públicos", mas podemos usá-lo para aplicações públicas disponíveis. O aplicativo ofuscado contém uma abundância de código altamente sofisticado que nos levou uma quantia exorbitante de tempo para escrever e essa é a razão que me fez pensar que ofuscação é uma obrigação - pelo menos nesse caso.

Obsfucation é limitado em sua eficácia, pode manter o indivíduo ocasional de distância. O obsfucation mais eficaz é fazer apenas a menor quantidade de código disponível para o usuário. Se você puder, fazer sua corrida aplicativo dependem fortemente de um servidor de gordura.

Concordo, a maioria das pessoas que sabem como código até um pouco não precisa roubar seu código!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top