Sécurisation des suggestions d’applications WinForms

Je cherchais un système de clé / licence simple pour nos utilisateurs. C’est en partie pour arrêter le piratage (éviter que les utilisateurs ne partagent l’application) et l’autre moitié pour suivre le nombre «d’utilisateurs sous licence» que nous avons. J’ai déjà lu quelques bonnes suggestions sur les SO, mais je suis curieux de savoir comment les gens ont appliqué les critères d’évaluation de 30 jours.

Générez-vous une clé qui stocke la date quelque part et faites-vous une comparaison à chaque fois ou est-ce un peu plus compliqué – la suppression du fichier / la suppression du registre ne doivent pas être désactivés.

Existe-t-il des exemples d’implémentations pouvant me donner une longueur d’avance? L’ironie est que notre Premier ministre ne veut pas autoriser un système tiers à le faire pour nous.

Ceci est pour une application Windows Forms.

Avez-vous vérifié le projet Rhino-Licensing d’ Ayende Rahien ? Vous pouvez également voir son article sur la licence d’un produit commercial qui l’a amené à développer cette solution.

Il y a deux défis distincts: i. Comment empêcher une application copiée de s’exécuter? ii. Comment empêcher les utilisateurs d’extraire / contourner votre système de prévention. Le premier est généralement effectué en prenant une signature difficile à copier du système de l’utilisateur (par exemple, ID du disque dur + ID du processeur + RAM, etc.) et en l’utilisant comme clé de départ / clé ET en l’activant en ligne en appelant “home”.

Le deuxième problème est plus difficile à résoudre dans .Net car le code source peut être en quelque sorte extrait et recompilé pour exclure votre système de protection. La clé ici est de rendre l’achat de la licence moins coûteux que de supprimer la protection de l’utilisateur. Vous constaterez peut-être que, pour la plupart des produits, la suggestion d’utiliser un moteur personnalisé pour chiffrer vos bibliothèques de produits contenant également votre protection contre la copie et le déchiffrer au moment de l’exécution initiale peut suffire.

Je ne suis pas sûr que vous puissiez réellement protéger un .NET – Il peut y avoir des solutions commerciales qui font l’affaire. La raison est que le code .NET peut être vu à travers Lutz Roeder ( Merci Jasonh pour la tête haute ) Reflector de Red Gate ( il était autrefois du type nommé ci-dessus ). La meilleure façon de le gérer est de rechercher l’obscurcissement du code, ce qui rend la reflection plus délicate. Je peux vous indiquer un endroit à ma connaissance qui le fait gratuitement – Phoenix – NtCore.Com.

La solution la plus ésotérique consisterait à créer un environnement d’hébergement .NET en C ++, à charger l’image binary (qui pourrait être chiffrée) et à l’environnement d’hébergement plutôt qu’à le déchiffrer en mémoire – vous avez entendu parler de cette théorie mais ne savez pas comment cela se ferait. entraine toi. Veuillez ne pas utiliser votre propre système de protection car il pourrait y avoir une faiblesse.

Quelqu’un a dit un jour – “La sécurité à travers l’obscurité” ….

J’espère que cela vous aidera, Cordialement, Tom.

J’ai travaillé sur un projet qui gérait cela en plaçant certaines fonctionnalités essentielles (stockage de données, rapports ou paiements, par exemple) sur un serveur externe que nous utilisions et en demandant à l’utilisateur de se connecter à ce serveur pour obtenir la fonctionnalité.

Les clients peuvent effectuer des sauvegardes, partager ou exécuter l’application localement, mais pour accéder à cette fonction essentielle, ils doivent saisir un mot de passe dans notre application et se connecter à notre serveur. Les clients savaient que le mot de passe permettait de modifier leurs données et ne souhaitaient donc pas le partager avec d’autres personnes.

Cela était pratique car nous ne nous soucions pas du nombre de copies de l’application qui sont hors d’usage, nous ne faisons que suivre les connexions au serveur. Nous avons inclus des données d’identification de la machine, telles que l’adresse MAC, dans les données de connexion afin de pouvoir suivre les machines connectées.

Je ne dis pas cela simplement parce que ma société vend la solution de licence logicielle OffByZero Cobalt pour .NET : votre PM devrait savoir qu’il est très difficile d’obtenir une licence logicielle, et si vous lancez la vôtre, vous la soutiendrez pour le un avenir prévisible.

Consultez l’article Développement pour la protection et la gestion de logiciels ; il explique comment choisir une solution, pourquoi masquer votre application et donne un certain nombre de conseils pour structurer votre code de manière à ce qu’il soit plus difficile à résoudre.

En particulier, il est clair que la grande majorité des entresockets doivent sous-traiter leurs licences de logiciels, car il n’a aucun sens de consacrer du temps de développement aux tâches de développement et de maintenance d’un système complexe qui n’est pas votre cœur de métier.

Qu’est-ce qui est le plus important pour votre entreprise: append une nouvelle fonctionnalité importante à votre produit ou détecter un comportement d’autorisation particulier sur une ancienne version de Windows qui perturbe votre système de licences?