Pergunta

Eu tenho um .NET DLL (C # / VB) com controles personalizados, extensão e outras coisas.

Eu quero que ele deve estar disponível apenas para mim. Existe alguma maneira para restringir o acesso não autorizado a um DLL?

Foi útil?

Solução

Sua melhor opção é fazer as malas / criptografar / Ofuscação a DLL como Anton apontou. E depois rezar para que ninguém vai passar por todos os problemas de descompactá-lo.

O termo usual para isso é simplesmente "embalagem".

Isto é o que os desenvolvedores de jogos ver com o f.ex Sony SecuROM .

Mas todos os programas de embalagem têm os mesmos inconvenientes:

  1. Eles podem ser engenharia reversa ea chave de criptografia deve ser incorporado no binário
  2. Eles geralmente custam dinheiro, e aqueles que não ( UPX ) fazer são facilmente descompactado .
  3. questões de incompatibilidade da plataforma podem ser introduzidas pelo processo de descompactação.
  4. binários embaladas tendem a freak Anti-vírus fora.

As empresas que utilizam packers enviamos geralmente binários que deve ser capaz de executar em cada computador pensável. Se você realmente quis dizer isso, eu acho que você poderia criptografar todos os dll única fornecido com uma chave única e exigir que ser executado com acesso à internet para alguma mágica desafio-resposta durante a fase de descriptografia. Overkill em qualquer taxa.

Você também pode fazer o seu próprio embalador, mas acredite quando eu digo que: Você não quer ir para lá;)

Em suma, o que você quer não é simples de conseguir, mesmo para os grandes jogadores. Quanto tempo leva para um jogo SecuROM para aparecer na piratebay? Assim, a única coisa que você pode fazer é "elevar a fasquia" e esperança de passar despercebido pela boa reversa engenheiros.

Por fim, sabendo que você está recebendo em si mesmo: Será que vai valer a pena para você? Vamos dizer que você enviou o DLL desempacotado - como ela é. As pessoas ainda terão de engenharia reversa-lo para usá-lo. Quem usa bibliotecas 3rd-party não documentados de qualquer maneira? Eu só fiz isso uma ou duas vezes em momentos de insanidade.

Outras dicas

Bem, não redistribuir a montagem em primeiro lugar. Assim que a montagem está fora na natureza, qualquer um pode usá-lo. Você pode fazer isso mais difícil por ofuscando , mas "pontos de entrada" ainda estará lá e utilizável .

Teoricamente, você pode fazer alguma coisa com CAS , mas eu não sou particularmente certo de que este é de todo possível.

Talvez você pode usar / copiar ferramentas de proteção de licenciamento para alterar a sua dll. E dentro do chamador, você fornece o número de licença necessário.

Isto não é completamente possível. Se você quer que seu código seja executado, ele tem que ser executável. Você pode colocar em cheques, embalagem, chaves de criptografia, cães de guarda, monitores, guardas, e vários licenciamento esquemas, mas no final do dia, se seu código funciona, tem de ser desbloqueado de alguma forma para que ele possa ser utilizado.

É por isso DRM não funciona. Você quer proteger X, mas você quer alguém para visualizá-lo. O problema é a pessoa que você não quer ver / usando X e a pessoa que você quer usando X são, em algum nível, a mesma pessoa .

Eu fiquei tão farto de lidar com código de licenciamento 3rd party (quebra / registro / pensando que eu não era um usuário legítimo quando eu era suposto ser) que eu me tornei um membro do FSF. Não vale a pena o meu tempo para o trabalho em torno de outra pessoa restrições, e não vale a pena o meu tempo para lidar com eles. Seu código não era tão especial.

Se você é forte nomear seus conjuntos, considere usar o PublisherIdentityPermissionAttribute . Você pode adicionar este a sua DLL e apenas montagens assinados com a chave publisher direito será capaz de pôr em que o método ou classe.

Este é livre e construído para o .NET framework. Se você precisar de recursos adicionais (como a capacidade de licenciar o DLL para outros desenvolvedores) consideram uma ferramenta de proteção contra cópia nível profissional como a nossa ferramenta de DeployLX Licenciamento .

Você tem que adicionar verificações na DLL para verificar que o chamador é você. Mas isso levanta outros desafios:

Como você provar que você é você para uma DLL. (Você pode verificar se há algo mais simples como o nome de usuário atual, mas que pode não ser perfeito).

Você pode exigir que o arquivo exe é assinado por seu certificado.

Você deve verificar se a infra-estrutura de licenciamento. Eu não tenho nenhuma idéia de como implementar isso, mas você usá-lo, criando um arquivo .licx e, em seguida, eu acho, o processo de compilação usa a ferramenta LC.exe fazer algo para incorporar a licença.

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