Question

Quelqu'un peut-il me dire quelle est la meilleure approche pour protéger mes DLL de composants dans .Net?

J'ai écrit quelques composants DLL qui seront accessibles au public. Ils disposeront d'une licence en conséquence, mais je souhaite par programme m'assurer que personne n'utilise les composants de leurs solutions de manière illégale.

Des idées?

Était-ce utile?

La solution

Étant donné que votre code est déjà obscurci, vous pouvez imposer l'instanciation des classes intégrées avec une clé de licence avant l'appel de l'une des méthodes. Si vous trouvez que la clé n'est pas valide / présente, vous pouvez afficher une boîte de message ou renvoyer une erreur / une exception.     Il existe de nombreux exemples de cas où cela est fait (checkout Xceed.com pour un) mais, comme le suggèrent les publications précédentes, il s'agit simplement de décourager les utilisateurs finaux d'essayer d'utiliser votre assembly de manière illégale. Pas complètement l'empêcher. Avec suffisamment de temps et d’incitation, tout peut être cassé.

Autres conseils

Essayer d'empêcher les gens de faire des choses à un niveau technologique ne fera que conduire au travail dédié autour de vos efforts pour les arrêter par le biais de l'ingénierie inverse conception de la salle et ainsi de suite. Votre meilleur choix est de renforcer auprès de ceux qui reçoivent une licence d'utilisation de vos bibliothèques les conditions d'utilisation et de faire respecter vos droits légaux d'appliquer les conditions d'utilisation.

La meilleure chose à faire est de masquer votre code. Cela ne sera pas sûr à 100% et peut être inversé.

dotfuscator

est un bon.

À court de " ne pas les distribuer " il n’existe pas de moyen sûr à 100% d’empêcher les accès non autorisés.

Vous pourriez vous intéresser aux dispositifs de licence matérielle ou logicielle. Saupoudrez les contrôles de licence dans votre code et si l'appareil n'est pas présent, annulez tout simplement.

Une autre idée consiste à déclarer tous vos types dans l'assemblage comme interne , puis à configurer votre EXE d'application principal en tant qu'assembly ami avec le InternalsVisibleTo attribut d'assembly. Ceci est généralement utilisé pour les membres internes qui testent des unités et je n'ai aucune idée de son niveau de sécurité dans la pratique. Cela n’empêcherait pas les gens de désassembler votre assemblage, vous voudrez peut-être encore masquer et cela ne fonctionnera pas du tout si vous vendez la bibliothèque et souhaitez uniquement que les clients disposant d’une licence l’utilisent (car vous devrez fournir des versions personnalisées à chaque client).

Comme le disait Phoenix, il n’existe aucun moyen de protéger complètement votre code, car il peut toujours être décompilé via un outil tel que réflecteur.

L'un de ces outils serait d'utiliser Dotfuscator .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top