Les différents types de cracks
- patch : un petit programme qui va modifier quelques octets de code de votre logiciel afin d'en faire sauter les protections
- key-generator (keygen) : générateur de clé, programme qui permet de donner la clé correspondant au nom de l'utilisateur
- serial : un nom avec la clé correspondante
- reg : fichier .reg qui modifie la base de registre afin d'enregistrer la version
Les outils du crackeur
Le principal outil du crackeur est l'éditeur hexadécimal, qui lui permet d'observer votre logiciel et son code en langage machine, ainsi que de le modifier (patching) pour faire sauter vos protections ...Il peut aussi utiliser un désassembleur qui lui fournit le code assembleur de votre shareware et lui permet de comprendre son fonctionnement plus facilement qu'avec l'éditeur hexa, en reprendre une partie du code (keygening) et peut même exécuter votre logiciel en pas à pas en scannant la mémoire à la recherche de la vraie clé qui trainerait dans une variable ...
Autant dire qu'il est difficile de leur résister ... mais on peut avec quelques astuces simples leur compliquer sérieusement la tâche.
Conseils
La première chose que l'on est tenté de faire pour vérifier la validité du nom et de la clé entrés par l'utilisateur, est du type :if (cle1 != cle2) ShowMessage("mauvaise cle");
Deux erreurs ici.
- En effet les chaînes de caractère comme "mauvaise clé" sont stockées à la fin du programme dans le segment données. Même sans désassembleur il lui est très facile de patcher votre logiciel. Il lui suffit de rechercher cette chaîne, repérer son adresse, chercher où cette adresse est appelée, pour retrouver l'endroit où se trouve votre protection. Pour éviter cela, évitez de mettre un tel message, où faites en sorte qu'il ne soit pas repérable aussi facilement (en le stockant sous une autre forme ...), et pendant que vous y êtes faîtes de même avec toutes les chaînes sensibles (chemins de base de registre, messages ...).
- Il faut ensuite savoir que toutes les comparaisons et tests (if) sont représentées par une simple instruction assembleur, et un octet dans votre exécutable ... Il suffit donc au crackeur de chercher le premier test en amont de votre message et de le remplacer par son contraire afin de patcher votre logiciel. Essayez donc d'éviter ce type de test (à vous de vous creuser la cervelle), ou brouillez les pistes avec plusieurs comparaisons complémentaires
Quant au keygening il faut essayer d'empêcher le crackeur de retrouver votre algorithme de calcul de clé, par exemple en éparpillant au maximum le code, en brouillant les pistes et en essayant de ne pas calculer explicitement la clé correspondant au nom pour vérifier si elle est correcte . Ce dernier élément est également valable contre les serial (ou reg), il faut essayer de ne stocker à aucun moment la clé correspondant au nom dans une variable (ou au moins pas sous sa forme utilisable) .
En dernier recours contre les serial, il est possible de rajouter un paramètre au calcul de la clé avec le nom, généré aléatoirement à l'installation ou en fonction des composants de l'ordinateur, mais se posent alors des problèmes pour l'utilisateur qui a payé le logiciel et qui a une clé qui ne fonctionne plus parce qu'il a formaté son disque dur ou changé de PC ...