Crack (informatique)

Un crack est un programme qui s'applique sur un logiciel pour en modifier son code, dans le but d'utiliser gratuitement un logiciel payant[1], par exemple.

Pour les articles homonymes, voir Crack.

Ne doit pas être confondu avec Hacking.

Terminologie

Lorsque des personnes redistribuent des applications « crackées », on parle alors de warez. Lorsqu'une personne a trouvé comment cracker un logiciel, elle peut alors créer un patch (un crack) qui permettra à d'autres de déprotéger le logiciel en question sans avoir à en étudier la protection.

Il ne faut pas confondre un crack avec un patch :

  • un patch est la modification d'une application (logiciel, jeux vidéo…) pour apporter un correctif, de nouvelles fonctionnalités, corriger un bug ou modifier son fonctionnement. En général, le patch est fourni par le créateur du logiciel ;
  • un crack est un type particulier de patch car il n'émane pas de l'éditeur du logiciel et son application, n'est, dans la grande majorité des cas, pas autorisé par l'éditeur.

Les cracks sont faits par des crackers. L'activité d'analyse et de modification est interdite dans la plupart des contrats de licences utilisateur des logiciels propriétaires.

Utilité

Cracker un logiciel ou une application peut avoir plusieurs utilités pour un cracker :

  • pouvoir utiliser un logiciel protégé ou une fonction bridée sans posséder la licence correspondante ;
  • pouvoir utiliser un logiciel sans devoir utiliser le CD correspondant (crack « No CD ») ;
  • permettre une interopérabilité, une amélioration ou une modification du fonctionnement d'un programme non prévue à l'origine par l'éditeur ;
  • tricher dans un jeu vidéo ;
  • éviter les problèmes d’interopérabilité avec les composants matériels et applicatifs de l'ordinateur (exemple : le logiciel monopolise votre lecteur CD ou refuse de s'installer car vous possédez légitimement un graveur et un logiciel de gravure) ;
  • relever un défi ;
  • plus rarement, améliorer une application ou corriger un bogue lorsque l'éditeur ne fournit pas le patch correspondant.

Outils du cracker

Le cracker utilise plusieurs outils pour arriver à ses fins :

  • un désassembleur, permettant d'interpréter le code compilé en code assembleur ;
  • un débogueur (debugger en anglais), qui permet de visualiser l'état du programme en cours d'exécution ;
  • un éditeur hexadécimal, permettant de modifier le programme après l'avoir analysé avec le désassembleur ;
  • des logiciels espions divers qui permettent de tracer les accès au Registre, aux dossiers ou aux fichiers du logiciel ;
  • un logiciel pour déterminer si l'application à cracker est chiffrée ou non.

Méthodes du cracker

Le but d'un crack est de contourner une limitation présente dans un logiciel ou une application payante, comme son enregistrement avec une clé ou un fichier de licence, ainsi que d'autres coordonnées, comme un nom d'utilisateur ou une adresse e-mail.

Pour ce faire, celui-ci utilise la rétro-ingénierie. Le logiciel à cracker est désassemblé à l'aide d'un désassembleur, et le cracker essaye ensuite de trouver la fonction de protection. Dans la majorité des cas, il s'agit d'une fonction qui permet de vérifier si une clé de licence saisie par l'utilisateur est valide ou non. Le but du cracking est de faire en sorte que la fonction valide toujours la clé entrée dans le logiciel. Une fois que la fonction est repérée, celle-ci est remplacée à l'aide d'un éditeur hexadécimal par l'instruction NOP qui veut signifie No Opération (ne rien faire). Cependant, certains crackers préfèrent ne pas modifier le code du logiciel, et en étudient la fonction de protection. Ils réalisent alors un générateur de clés valides pour permettre l'activation du logiciel (keygen en anglais). Les développeurs de logiciels propriétaires essayent cependant de rendre ce processus difficile en utilisant l'offuscation, le chiffrement ou des codes automodifiables.

Dans d'autres cas, le logiciel est décompilé pour avoir accès à son code source original dans un langage de haut niveau. Cela est possible avec les langages de script ou les langages qui utilisent la compilation à la volée.

Protections à contourner

Le cracker de logiciel est face à un objectif qui peut être multiple :

  • trouver un numéro de série pour enregistrer le programme ;
  • trouver l'algorithme de génération des clés de licence, afin d'enregistrer le logiciel à partir de n'importe quel nom, par exemple ;
  • enlever les diverses protections du logiciel telles que :
    • la limitation du nombre d'utilisations,
    • la limitation du temps d'utilisation,
    • la limitation des fonctionnalités,
    • l'affichage de fenêtres inutiles intempestives (appelées « Nag screen »),
  • modifier le programme pour qu'il convienne à son goût. Cela s'appelle du « reverse » (du terme anglais « reverse engineering »), et consiste à implémenter de nouvelles fonctionnalités au programme, ou à modifier son apparence ou son comportement.

Pour arriver à ses fins, le cracker doit déjouer quelques embûches comme :

  • l'anti-débogage qui rend le débogueur inutilisable ;
  • l'anti-désassemblage qui empêche le désassemblage ;
  • le chiffrement ou la compression qui rendent le programme binaire illisible ;
  • le code polymorphe ou l'offuscation qui rend le débogage très pénible.

Musique

Les cracks, les patchs ou les générateurs de clés possèdent souvent une musique électro ou rétro 8-bit dans le style des musiques de Game Boy, qui sont appelées chiptunes.

Notes et références

  1. Voir nom commun 2, sur le site fr.wiktionary.org

Articles connexes

  • Portail de la sécurité informatique
  • Portail de la sécurité de l’information
  • Portail du droit
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.