# Craquage (informatique)

La craquage d'un logiciel (en anglais, cracking ou breaking dans les années 1980) est la modification d'un logiciel pour supprimer ou désactiver des fonctionnalités jugées indésirables par la personne qui craque le logiciel, en particulier les fonctions de protection contre la violation de droit d'auteur, l'affichage de publicité et l'affichage de propositions d'acheter la version payante du logiciel.

## Description

Une crack désigne l'outil qui permet de réaliser le craquage. Ces outils peuvent être des générateurs de clés, des patches ou des loaders. Un générateur de clés est un programme informatique qui génère une clé de produit, comme un numéro de série, permettant d'activer l'application. Un patch est un petit programme informatique qui modifie le code machine d'un autre programme. Un tel programme permet à un cracker de ne pas avoir à distribuer un exécutable de grande taille lorsque seulement quelques octets d'un programme doivent être modifiés. Un chargeur modifie le flux de démarrage d'un programme ; il ne supprime pas la fonctionnalité indésirable, mais la contourne$^,$. Un exemple bien connu d'un loader est un trainer (en), une fonction utilisée pour tricher dans les jeux. Le groupe Fairlight a mentionné dans un de ses fichiers .nfo que ces types de craquage ne sont pas autorisés pour les versions warez$^,$$^,$.
La distribution de copies craquées est illégale dans la plupart des pays. Il y a eu des poursuites judiciaires contre des auteurs de logiciels de craquage. Des ressources pédagogiques pour l'ingénierie inverse et le craquage de logiciel sont légales et disponibles sous la forme de programmes Crackme. De plus, les cracks disponibles sur des sites web de warez sont une source de vulnérabilités informatiques, pouvant causer l'installation involontaire de logiciels malveillants. Des cracks sont distribués pour de nombreuses raisons. Certains cracks peuvent être utilisés pour des tests de logiciels, dans le cas des crackmes, ou à titre éducatif, de même pour des cracks de logiciels malveillants pour les testeurs de sécurité.

## Histoire

Des protections logicielles contre la copie existaient déjà sur des logiciels utilisés par les gros système d'IBM dans les années 1970. Sur les ordinateurs personnels, de telles protections existaient déjà sur des logiciels des micro-ordinateurs 8 bits, tels que les Apple II, Atari 800 et Commodore 64. Les éditeurs de logiciels ont par la suite mis en œuvre des méthodes de plus en plus complexes afin d'empêcher la copie sans restriction de leurs logiciels.
Sur l'Apple II, contrairement aux ordinateurs modernes qui utilisent des pilotes de périphériques standardisés pour gérer les communications avec les périphériques, le système d'exploitation contrôlait directement le moteur pas à pas qui déplace la tête du lecteur de disquette et interprétait directement les données brutes, appelées nibbles, de chaque piste pour identifier les secteurs de données. Cela permettait des systèmes de protection complexes contre la copie de disquettes, en stockant des données sur des demi-pistes (0, 1, 2.5, 3.5, 5, 6 ...), des quarts de piste (0, 1, 2.25, 3.75, 5, 6 ... ), toutes combinaisons de ces deux méthodes. Également, plusieurs lecteurs de disquettes n'avaient pas de limite supérieure fixe pour le mouvement de la tête de lecture, et il était parfois possible d'écrire une 36e piste au-dessus des 35 pistes normales. Les programmes de copie Apple II standards ne pouvaient pas lire ces disquettes protégées, car ils supposaient que toutes les disquettes avaient une configuration uniforme de 35 pistes, avec 13 ou 16 secteurs.
Des programmes spéciaux de copie de nibbles tels que Locksmith et Copy II Plus pouvaient parfois dupliquer ces disquettes en utilisant une bibliothèque de méthodes de protection connues. Lorsque des programmes protégés étaient cracqués, ils étaient complètement dépouillés du système de protection contre la copie et transférés sur un disque au format standard que n'importe quel programme de copie Apple II pouvait lire.
L'une des principales voies de piratage de ces premières protections de copie était l'exécution d'un programme qui simule le fonctionnement du processeur. Un tel simulateur fournit un certain nombre de fonctionnalités supplémentaires au pirate, telles que la possibilité d'exécuter les instructions une à une et d'examiner les registres de processeur et les cases de mémoire tout au long de la simulation. Devant une telle attaque, le système de protection contre la copie ne disposait que de peu ou pas de défenses, puisque tous ses secrets étaient rendus visibles par la simulation.
Sur le Commodore 64, plusieurs méthodes ont été utilisées pour protéger les logiciels. Par exemple, pour les logiciels distribués sur des cartouches ROM, des programmes tentaient d'écrire sur la cartouche. Si le logiciel était sur ROM, rien ne se passerait, mais si le logiciel avait été déplacé en mémoire réinscriptible, le logiciel était "écrasé".