Crack (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

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

Terminologie[modifier | modifier le code]

Lorsque des personnes redistribuent des applications « crackées », on parle alors de warez. Lorsqu'une personne a trouvé comment cracker un programme, elle peut créer un patch (un crack) qui permettra à d'autres de déprotéger le programme 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 le fonctionnement d'une application. Le patch est, en général, 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é[modifier | modifier le code]

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[modifier | modifier le code]

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 programmes espions divers qui tracent les accès à la base de registre, aux dossiers du programme...
  • Un logiciel pour savoir si le programme à cracker est chiffré ou non

Méthodes du cracker[modifier | modifier le code]

Le but du 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é saisie par l'utilisateur est valide ou non. Le but alors 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 de rendre ce processus difficile en utilisant l'offuscation, le chiffrement ou de faire 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. Ceci est possible avec les langages de script ou les langages qui utilisent la compilation à la volée.

Protections à contourner[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

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

Articles connexes[modifier | modifier le code]