Créer une Application Shareware avec DelphiDate de publication : 06/12/2004 , Date de mise a jour : 07/06/2005
Ce tutoriel est une inspiration de l'article de Delphicool sur la protection des logiciels contre le piratage . I. Pourquoi protéger son logiciel ? II. Les différents types de protections 1. Démonstration 2. Protection par Limite de temps ou nombre d'utilisations (Trial) 2.1. Limite de temps Exemple 2.2. nombre d'utilisations Exemple 3. la protection par une clef d'activation Exemple 4. les Packers 5. le Dongle Exemple III. le mot de la fin Sources I. Pourquoi protéger son logiciel ?
Afin de pouvoir distribuer votre logiciel et qu'il soit connu par le marché, chaque développeur doit le mettre à disposition des utilisateurs pour qu'ils puissent le tester, puis, au cas où il correspond à leur besoin, décider de l'acheter.
II. Les différents types de protections
Il existe différentes façons pour protéger son produit, que l'on va détailler ci-dessous. Ces types-là ne sont pas les seuls mais les plus utilisés. D'autres méthodes font le mélange de ces types.
1. Démonstration
Cette méthode consiste à donner à l'utilisateur la liberté d'utiliser une certaine fonctionnalité de votre programme mais pas la totalité, en lui fournissant une copie non complète du logiciel. Au cas où l'utilisateur est intéressé par votre logiciel, il est invité à acheter la version complète disponible sur votre site ou sur CD.
Il n'est pas possible d'attaquer la version démonstrative car elle est livrée gratuitement. 2. Protection par Limite de temps ou nombre d'utilisations (Trial)
La protection par limite de temps s'appuie sur le principe de donner là une version complète de votre logiciel utilisable pour une certaine période de temps (un mois, un jour, une heure). A la fin de cette période, il est impossible pour l'utilisateur d'employer votre produit, sauf s'il achète la version non limitée.
2.1. Limite de temps
Du premier instant on sait que cette méthode utilise la gestion de temps en calculant la différence entre la date de l'installation ou la première utilisation du produit, et la date prévue de la fin. Pour cela il faudra enregistrer la première date de l'exécution (ou bien celle de la fin de validité) pour pouvoir y revenir et faire le test sur elle. ExemplePour enregistrer la date on peut utiliser un fichier INI mais en réalité ce dernier est facile d'accès alors on choisit plutôt la base de registre, qui serait plus pratique. Pour cela on crée une clé qui contienne une valeur nommée "ref" où on va stocker la date et tout cela dans la propriété OnCreate de la forme principale.
Afin que le programme ne crée pas cette valeur chaque fois que l'application s'exécute mais seulement à la première fois, on fait un test sur son existence avec la méthode ValueExists
Maintenant que la date est enregistrée, il suffit de calculer le nombre de jours écoulés entre la première date et la date actuelle, et la comparer avec le nombre permis (dans notre cas 30 jours).
Si cette différence est inférieure à la période autorisée, l'application s'exécute avec un message rappellant à l'utilisateur le nombre de jours qu'il lui reste. Sinon la période permise est dépassée, l'application se ferme.
il se peut que l'utilisateur pense a changer la date du système a une date précédente a s'elle de l'expédition de la période autorisé ce qui veut dire moins de 30 jours et ainsi il pourra utiliser l'application encore pour invité cela enregistré la dernière date d'utilisation dans la base de registre et faite la vérification de la date de système avec cette dernière
la methode des nombres d'utilisations est aussi une autre solution 2.2. nombre d'utilisations
Avec cette méthode vous limitez l'usage de votre application à un nombre défini d'utilisations, en fonction du nombre de fois que votre application est exécutée.
Exemple
3. la protection par une clef d'activation
Cette méthode fréquemment utilisée pour la plupart des logiciels est aussi la plus attaquée par la communauté des crackeurs. Il suffit au crackeur de trouver l'algorithme que le développeur a utilisé pour composer sa clef pour créer un logiciel appelé keygen. Cependant il n'est pas toujours facile de trouver cet algorithme.
Pour générer cette clé chaque utilisateur doit disposer d'une clé qui lui est spécialement réservée, afin que même si l'utilisateur essaye d'emprunter la clé d'un utilisateur déjà enregistré, cela ne pourra pas lui servir. Dans ce but il faudra utiliser quelques informations comme référence telles que le nom d'utilisateur, l'adresse IP de sa machine ou d'autres informations. Il existe des applications qui utilisent deux ou trois clés d'enregistrement comme 3DSMAX. Un simple algorithme peut être efficace si on sait bien l'améliorer. Voyons l'exemple ci-dessous pour mieux comprendre : Exemple
On va créer une fiche sur laquelle on va mettre un menu qui contiendra deux TmenuIthem, "Fichier" et "Aide". Dans ce dernier un bouton pour l'enregistrement. On Crée un deuxième fiche ou on pose deux Tedit avec leur label et deux boutons Comme dans la figure ! dans l'événement Onclick du bouton "Valider", insérez le code suivant : on déclare les variables suivantes
-Découpez votre serial, crypter les différentes parties Notre serial va être découper en 4 parties (qu'on va traiter chacune séparément), au format suivant :
On vérifie que l'utilisateur a bien saisi un nom dans le champ d'édition edit1 et on récupère sa longueur dans M et son contenu dans us.
On va commencer par la première partie : tout simplement on stocke dans une chaîne temporaire le code ASCII du nom de l'utilisateur et puisque la taille de part1 est de 4 caractères on ne prend que les 4 premiers nombres.
dans la deuxième partie on utilise toujours cette chaine temporaire et on la compose avec les 4 caractères de la deuxième partie :
La troisième partie reçoit la conversion du code ASCII en hexadécimal :
Enfin la quatrième partie va contenir l'inversion du nom d'utilisateur à laquelle on ajoute la longueur de son nom :
c'est fini maintenant il suffi de rassembler les 4 parties
bon une dernier inversion fera bien l'affaire
ainsi si vous choisissez un nom d'utilisateur comme " Badrou "( en respectant les majuscules et les minuscules), le serial qui correspond sera : "6ou0-83&1-Amk7-96r6" Il ne reste qu'à vérifier le vrai serial avec celui saisi par l'utilisateur dans edit2 :
Attenstion : évitez de mettre des messages du style : "Mauvais code d'enregistrement" c'est tout ce qu'il faut pour le crackeur
Si le serial est bon alors on doit l'enregistrer avec le nom de l'utilisateur pour évité de lui demander de s'enregistré la prochaine fois qu'il lance le programme et pour pouvoir récupérer les informations en cas d'offre pour les utilisateurs enregistrés comme une mise a jour. Pour cela on utilise toujours la base de registre en créant deux valeurs "SU" ( le nom de l'utilisateur) et "CR" (le serial).
il est très conseillé d'utiliser la fonction logique XOR
et pour que la version soit bien enregistrée, il faut mettre un test sur la présence des deux clés SU et CR au lancement du logiciel. Allez dans la forme principale et ajoutez-y le code suivant dans l'événement OnCreate de la forme principale :
4. les Packersje vais tenter de vous expliquer brièvement ce que sont les packers.
Ce sont des logiciels qui permettent de modifier un exécutable donné afin de le compresser et/ou le protéger contre le débugguage, le dump,... Ce n'est en fait qu'une protection rajoutée sur le programme originel. En gros, le principe est une sorte d'encapsulation: le programme en mémoire est exactement pareil 5. le Dongle
Clé se présentant sous la forme d'un dispositif électronique qui se branche sur le port parallèle (ou USB) du micro et sans lequel l'utilisation du logiciel est impossible.
A chaque lancement, le logiciel va rechercher dans cette clé un code précis -, s'il ne le trouve
pas, le chargement de l'application s'interrompt.
Exemple
test
III. le mot de la fin
quelques conseils
Astuces
voici quelques astucs pour et conseiles pour amiliorer vos protection
Sources
Telecharger la source de l'exemple de la limite de temps trial.zip
Telecharger la source de l'exemple de nombre d'utilisation nexe.zip Telecharger la source de l'exemple de la version shareware Shar.zip Telecharger la source de l'exemple du dongle Dongle.zip
|
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 badrou. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.