Pergunta

Estamos planejando desenvolver um aplicativo de servidor cliente usando C # e MySQL. Pretendemos vender o produto na prateleira como qualquer outro utilitário de software. Estamos preocupados com a descompilação do nosso produto que tem algum tipo de vantagem sobre os nossos concorrentes em termos de usabilidade e funcionalidade empacotado.

Como podemos evitar que o nosso software de descompilação, então a lógica de negócios do produto permanece intacto?

Temos ouvido sobre reflector e outros decompilers o que torna o nosso código muito vulnerável para copiar.

Nossa base de clientes não é Corporates mas os médicos que se não pode fazer isso, mas nossos concorrentes pode querer copiar / licenciamento desativar ou mesmo replicar o código / funcionalidade de modo que o valor do nosso produto vai para baixo no mercado.

Qualquer sugestão de evitar isso é muito bem-vindos.

Foi útil?

Solução

Se você implantar o .NET assembléias para suas máquinas clientes, algum tipo de decompilation sempre será possível usando refletores e ferramentas semelhantes.

No entanto, esta situação não é materialmente diferente do que você iria encontrar se você escreveu o aplicativo em C ++ nativo. É sempre possível decompor as coisas -. Se fosse impossível, o processador não conseguia entender tanto

Você nunca vai derrotar o cracker expert -. Eles vão tratar a segurança como um quebra-cabeça intelectual a ser resolvido por si só o desafio

A questão gira em torno quão difícil é para derrotar suas práticas de licenciamento e do retorno sobre o investimento .

Sente-se com uma planilha e olhar através dos cenários possíveis - o perigo é provavelmente menos do que você pensa.

Fatores como "facilidade de uso" são visíveis em seu software para qualquer usuário para observar - assim você acha mais fácil a cópia. Mas, boa experiência do usuário é rara (e raramente bem copiado), porque a maioria dos desenvolvedores (eu incluído) não são nada como os usuários típicos.

Eu sugiro que você se concentrar em fazer o trabalho de um biscoito mais difícil, porque você nunca pode tornar impossível, apenas sem fins lucrativos.

Uma possibilidade para tentar: É possível pré-compilação montagens em código nativo como parte do processo de instalação. Paint.NET faz isso por razões de desempenho. Eu acredito que uma vez que você tenha feito isso, você pode descartar as montagens originais e usar, as edições de código nativo otimizados.

Outras dicas

Se fosse comigo, eu não seria tentativa de ofuscar; Eu faria:

  1. Não se preocupe com isso e tem como objectivo melhorar continuamente e estadia em frente

Mas em segundo lugar

  1. Considere a prestação dos serviços 'secretas' através da Web. Cabe a você decidir como crítico e possível este é; mas não "prevenir" descompilação, porque o usuário final não tem sequer o código.

O Google para .NET Obfuscator. Você vai encontrar um monte de produtos que vão ajudar neste processo. Também há questões relacionadas já formuladas em Stack Overflow.

Aqui estão alguns:

Editar : Embora a pesquisa para obter ferramentas De-ofuscando, me deparei com uma ferramenta open source De4Dot . Esta ferramenta suporta decompiling obfucated dlls criadas pela maioria das ferramentas comerciais e faz um trabalho muito bom também.

A última vez que olhei para isso, Spices.Net Obfuscator parecia a melhor coisa no mercado.

Não, eu não trabalho para eles. :)

Eu uso smartassembly . É simples de usar e também tem a capacidade de enviar relatórios de erros, você também construído em.

Os obfuscators outros já mencionados são provavelmente muito bom.

Uma abordagem alternativa que você pode não ter considerado é o código de alguns dos lógica de negócios do núcleo usando uma linguagem que é totalmente compilado para código de máquina, como C ++.

A vantagem de fazer isso é que torna muito mais difícil para alguém descompilar seu código. A desvantagem é que você tem o código em duas línguas de manter. Isto pode não ser a melhor abordagem para a sua situação, mas é útil nos casos em que apenas uma pequena parte das necessidades de código a ser ofuscado enquanto o restante do código é UI fluff.

Como exemplo, o pacote de software médico pode estar realizando detecção de borda de, digamos, certas glândulas com a finalidade de contar um médico do tamanho da referida glândula. O algoritmo para calcular o tamanho da glândula de uma imagem de bitmap seria contido em uma DLL escrito em C ++.

para responder à sua pergunta sobre o wrapper C ++ em torno do código .net; Eu não acho que ele iria trabalhar, porque quando você implantar o aplicativo a ++ dll final, c e .net dll que contém o código de lógica de negócios será entidades separadas e os que querem obter a sua lógica de negócio ainda seria capaz de simplesmente escolher o .net dll e dentro espiada.

Você pode querer considerar Remotesoft Salamander Protector este é muito melhor do que qualquer outra coisa na medida em que torna impossível a decompile à linguagem de alto nível.

É claro, qualquer um que é um especialista pode passar bastante tempo com o seu software e figura-lo porque ele faz descompilar alguns, mas ele esconde todo o conjunto e obter métodos

Assim, eles podem obter um pico, mas que é sobre ele. eles têm que descobrir o resto o que reduz a probabilidade de ninguém simplesmente quebrá-lo.

espero que isso ajude

A escrita sobre este tópico depois de um longo tempo. Nós compramos um software chamado Intellilock que é útil na prevenção de descompilação, ofuscação e também tem uma forte licenciamento módulo.

Nós não ir para .Net Reactor embora tenha mais controles de prevenção como Intellilock estava servindo nosso propósito bem o suficiente.

Obfuscator confunde o código, mas protetor protege. Você pode usar Net protector: NetWinProtector

Intellilock tem servido o nosso objectivo bem em termos de ofuscação, bem como licenciamento. Mas eu não recomendaria o produto como o apoio não é até a marca. Nunca obteve respostas em tempo para o problema que estávamos enfrentando. Tivemos de busca e pesquisa em nosso próprio país ou até mesmo alterar o requisito de negócio para alcançar alguns objetivos.

Por essa resposta eu não estou pretendendo promover ou rebaixar qualquer software, mas apenas quer conscientizar as pessoas sobre o produto que estamos usando para que eles possam tomar uma decisão sábia.

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