it-swarm-pt.tech

Você deve ofuscar um aplicativo comercial .Net?

Eu estava pensando em ofuscar um aplicativo comercial .Net. Mas vale realmente a pena o esforço para selecionar, comprar e usar tal ferramenta? Os binários ofuscados estão realmente protegidos da engenharia reversa?

37
lowglider

Você pode não ter que comprar uma ferramenta - Visual Studio.NET vem com uma versão da comunidade do Dotfuscator. Outras ferramentas de ofuscação gratuitas estão listadas aqui , e podem atender às suas necessidades.

É possível que os binários ofuscados não estejam protegidos da engenharia reversa, assim como é possível que a fechadura da sua bicicleta seja quebrável/removível. No entanto, é comum que um pequeno inconveniente seja suficiente para dissuadir os ladrões de códigos/bicicletas.

Além disso, se alguma vez chegar a hora de fazer valer seus direitos a um trecho de um código em tribunal, ter sido visto fazendo um esforço para protegê-lo (ofuscando-o) pode lhe dar pontos extras. :-)

No entanto, você deve considerar as desvantagens - pode ser mais difícil usar reflexão com código ofuscado e se você estiver usando algo como log4net para gerar partes de linhas de log com base no nome da classe envolvida, essas mensagens podem se tornar muito mais difícil de interpretar.

39
Blair Conrad

Lembre-se de que a ofuscação é apenas uma barreira para o examinador casual de seu código. Se alguém quer realmente descobrir o que você escreveu, será muito difícil impedi-lo.

Se você tem segredos em seu código (como senhas), você está fazendo isso errado.

Se você está preocupado que alguém possa produzir seu próprio software com suas ideias, terá mais sorte no mercado, fornecendo as novas versões que seus clientes desejam, com suporte técnico e sendo seu parceiro. Vence um bom negócio.

29
Jay Bazuzi

Em nossa empresa, avaliamos várias tecnologias de ofuscação diferentes, mas todas apresentavam problemas. O maior problema é que confiamos muito na reflexão, por ex. para criar grades dinamicamente com base em nomes de propriedades.

Assim, todos os obfuscators renomear as coisas, você pode desativá-lo, é claro, mas então você perde muitos benefícios da ofuscação.

Além disso, em nosso código, temos muitos testes NUnit que dependem muito mais dos métodos e propriedades sendo públicos, o que evitou que alguns dos ofuscadores pudessem ofuscar essas classes.

No final, decidimos por um produto chamado . NET Reactor

Funciona muito bem e não temos nenhum dos problemas associados aos outros produtos.

"Em contraste com os ofuscadores, o .NET Reactor interrompe completamente qualquer descompilação ao misturar qualquer .NET Assembly puro (escrito em C #, VB.NET, Delphi.NET, J #, MSIL ...) com o código de máquina nativo. Em detalhes, .NET Reactor cria uma barreira nativa entre hackers em potencial e seu código .NET. O resultado é um arquivo padrão baseado em Windows, não compatível com MSIL. O código .NET original permanece intacto, bem protegido por código nativo e invisível para olhos curiosos. O .NET original o código não é copiado para o disco rígido em momento algum. Não há nenhuma ferramenta que seja capaz de descompilar assemblies protegidos pelo .NET Reactor. "

12
RickL

O fato de você realmente poder fazer a engenharia reversa não torna a ofuscação inútil. Isso eleva o nível significativamente.

Um .NET Assembly não ofuscado mostrará a você todo o código-fonte, realçado e tudo apenas baixando o . NET Reflector . Adicione ofuscação a isso e você reduzirá significativamente a quantidade de pessoas que serão capazes de modificar o código.

Depende de você estar se protegendo. Se você vai enviá-lo não ofuscado, pode também abrir o código do aplicativo e se beneficiar do marketing. Enviá-lo ofuscado só permitirá que as pessoas gerem binários modificados de forma relativamente fácil por meio de patches, em vez de roubar seu código e criar um concorrente direto. Obter a fonte real do código ofuscado é muito difícil, dependendo do ofuscador, é claro.

7
Vinko Vrsalovic

Coisas que você deve levar em consideração:

  • A ofuscação não protege seu código ou lógica. Apenas torna mais difícil de ler e entender.
  • A ofuscação não impede a engenharia reversa. Ela apenas retarda o processo.
  • Sua propriedade intelectual é protegida por lei na maioria dos países. Portanto, se um concorrente usar seu código ou implementação específica, você pode processá-lo.

O único problema que a ofuscação pode resolver é que alguém cria uma cópia 1: 1 (ou próxima de 1: 1) de sua implementação específica.

Além disso, em um mundo ideal, a engenharia reversa de um aplicativo ofuscado é pouco atraente e econômica.

Mas de volta à realidade:

  • Não existe nenhuma ferramenta neste planeta que impeça alguém de copiar interfaces de usuário, comportamentos ou resultados que qualquer aplicativo forneça ou produza. A ofuscação nessas situações é 100% inútil
  • O melhor ofuscador do mercado não pode impedir alguém de usar algum tipo de desmontador ou editor hexadecimal e para alguns geeks isso é muito bom olhar para o coração de uma aplicação. É apenas mais difícil do que em um código não ofuscado.

Portanto, a realidade é que você pode tornar mais difícil e demorado examinar seu aplicativo, mas não obterá nenhuma proteção confiável. Independentemente de você usar um produto gratuito ou comercial.

Tecnologias avançadas como ofuscação de fluxo de controle ou virtualização de código podem ajudar a tornar o entendimento da lógica às vezes muito difícil, mas também podem causar muitos problemas engraçados e difíceis de depurar ou resolver. Portanto, às vezes são mais um problema adicional do que uma solução.

Do meu ponto de vista, a ofuscação não vale o dinheiro que algumas empresas cobram por seus produtos. Se você quiser importunar desenvolvedores casuais, os ofuscadores de código aberto são bons o suficiente . Se você quiser tornar o mais difícil possível olhar para o coração de seus aplicativos, você precisa usar contêineres criptográficos com ambientes de execução virtual e sistemas de arquivos virtuais, mas eles também fornecem vetores de ataque e também podem ser uma fonte para um saco cheio de problemas .

Sua propriedade intelectual e seus produtos são protegidos por lei na maioria dos países. Portanto, se houver um concorrente analisando e copiando seu código, você pode processá-lo. Se um bandido ou um hacker ou cracker pegar seu aplicativo, você será enganado - mas um ofuscador não faz diferença.

Portanto, você deve primeiro pensar sobre seus alvos, seu mercado e o que deseja alcançar com um ofuscador. Como você pode ler aqui (e em outros lugares), a ofuscação não resolve realmente o problema da engenharia reversa. Isso só torna mais difícil e mais demorado. Mas se é isso que você deseja, você pode dar uma olhada em ofuscadores de código aberto como, por exemplo, sharpObfuscator ou obfuscar, que pode ser bom o suficiente para incomodar programadores casuais (uma lista pode ser encontrada aqui: Lista de .NET Obfuscators na Wikipedia ).

Se for possível em seu cenário, você também pode estar interessado em SaaS-Concepts. Isso significa que você fornece acesso ao seu software, mas não ao software em si. Portanto, o cliente normalmente não tem acesso às suas montagens. Mas dependendo do nível de serviço, segurança e base de usuários, pode ser caro, complexo e difícil de realizar um serviço SaaS confiável, confiável e de desempenho.

4
Axel Napolitano

Acho que depende do tipo do seu produto. Se for direcionado para ser usado por desenvolvedores, a ofuscação prejudicará seus clientes. Temos usado os produtos ArcGIS no trabalho e todas as DLLs estão ofuscadas. Está tornando nosso trabalho muito mais difícil, já que não podemos usar o Reflector para decifrar comportamentos estranhos. E estamos comprando clientes que pagaram milhares de dólares pelo produto.

Então, por favor, não ofusque a menos que seja realmente necessário.

4
Doron Yaacoby

Apenas uma nota para qualquer pessoa que ler isto anos depois - acabei de folhear a licença Dotfuscator Community Edition (que vem com o VS2008) algumas horas atrás e acredito que você não pode usar esta versão para distribuir um produto comercial ou para ofuscar código de um projeto que envolve qualquer desenvolvedor além de você. Portanto, para desenvolvedores de aplicativos comerciais, é realmente apenas uma versão de teste.

3
Nick M

Não, a ofuscação foi provada que não impede que alguém seja capaz de decifrar o código compilado. Isso torna mais difícil fazer isso, mas não impossível.

3
kemiller2002

Eu fico muito confortável lendo código Assembly x86, e as pessoas que estão trabalhando com Assembly a mais de 20 anos?

Você sempre encontrará alguém que só precisa de um minuto para ver o que seu código c # ou c está fazendo ...

3
Mandrake

... recorte ... essas mensagens podem se tornar muito mais difíceis de interpretar

Sim, mas a edição da comunidade gratuita que vem com o Visual Studio tem uma funcionalidade de mapa. Com isso, você pode rastrear os nomes dos métodos ofuscados até os nomes originais.

2
Magnus Johansson

Tive sucesso ao colocar a saída de um ofuscador grátis em um ofuscador diferente . No Dotfuscator CE, apenas alguns dos truques de ofuscação estão incluídos, portanto, usar um segundo ofuscador com truques diferentes o torna mais ofuscado.

2
harriyott

É muito simples fazer a engenharia reversa de um aplicativo .net usando refletor .net - já que o aplicativo irá gerar código VB, VC e C # direto do MSIL, e é possível para retirar todos os tipos de joias úteis.

Os ofuscadores de código ocultam muito bem o código da maioria dos hacks de engenharia reversa e seria uma boa ideia usar em código proprietário e competitivo que agrega valor ao seu aplicativo.

Há um artigo muito bom sobre ofuscação e está funcionando aqui

1
Martin

Sim, você definitivamente deveria. Não para protegê-lo de uma determinada pessoa, mas para obter algum lucro e ter clientes. A propósito, se você chegar a um ponto aqui que alguém tenta crackear seu software, isso significa que você vende um software popular.

O problema é qual ferramenta escolher para o trabalho. Confira minha experiência com ofuscadores comerciais: https://stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market/2356575#2356575

1
ileon

Este post e a questão envolvente têm alguma discussão que pode ser útil. Não é uma questão de sim ou não.

1
Leigh Caldwell

Sim nós fazemos. Usamos o ofuscador BitHelmet. É novo, mas funciona muito bem.

0
Daniel Dolz

Mas vale realmente a pena o esforço para selecionar, comprar e usar tal ferramenta?

Achei o Eazfuscator barato (gratuito) e fácil de usar: demorava cerca de um dia. Eu já tinha testes automatizados extensos (boa cobertura), então acho que consegui encontrar quaisquer bugs que são/foram introduzidos por ofuscação.

0
ChrisW