Crack (informatique)

Uncrackest un programme qui s'applique sur un logiciel pour en modifier son code, dans le but d'utiliser gratuitement un logiciel payant, par exemple.
Lorsque des personnes redistribuent des applications dites« craquées », on parle alors dewarez. Lorsqu'une personne a trouvé commentcraquerun logiciel, elle peut alors créer une version modifiée de celui-ci ou programmer un outil de piratage dédié qui permettra à d'autres personnes d'utiliser le logiciel en question sans l'avoir acheté au préalable.
Il ne faut pas confondre un crack avec unpatch:
Lescrackssont créés par descrackers. L'activité d'analyse et de modification des logiciels (souvent désignée par l'ingénierie inversée) est interdite dans la plupart descontrats de licences utilisateurdeslogiciels propriétaires.
Craquer un logiciel ou une application peut avoir plusieurs utilités :
Le cracker peut utiliser plusieurs outils pour arriver à ses fins :
Le but d'un crack est de contourner une limitation présente dans un logiciel payant, comme son enregistrement avec une clé ou un fichier de licence, et d'autres informations comme un nom d'utilisateur ou une adresse e-mail.
Pour ce faire, le cracker va procéder à de l’ingénierie inversée: le logiciel à craquer est soigneusement analysé et décortiqué à l'aide d'un désassembleur et le cracker essaye ensuite de trouver lafonctionde protection qui s'occupe de vérifier son statut d'activation ou la validité de la licence saisie. Le but du cracking est ainsi de faire en sorte que la fonction concernée valide toujours la clé ou le fichier de licence entré dans le logiciel. Une fois que la fonction est repérée, celle-ci peut être grossièrement remplacée parl'instructionNOP(qui signifie« No Operation »en anglais ou« ne rien faire ») ou plus souvent détournée pour empêcher son exécution.
Cependant, certains crackers préfèrent ne pas modifier le code du logiciel pour assurer la stabilité et la durabilité de leur version craquée au fil des mises à jour, et en étudient de fait la fonction de protection. Ils peuvent alors réaliser ungénérateur de clésvalides («keygen» en anglais) pour permettre l'activation du logiciel, ou une DLL détournée appelée «hook» qui va s'attacher au logiciel pendant son exécution et modifier à la volée des données stockées en mémoire pour lui faire croire qu'il est activé. Les développeurs de logiciels propriétaires essayent cependant de complexifier ces processus d'analyse et de modification en utilisant des techniques et des logiciels de protection bien connus comme l'anti-débogage, l'obfuscation, la vérification régulière de la licence saisie depuis un ou plusieurs serveurs distants ou encore le calcul de lasomme de contrôledufichier exécutableprincipal pour détecter d'éventuelles modifications non désirées.
Certains crackers expérimentés peuvent également rechercher des vulnérabilités spécifiques dans le système d'activation du logiciel concerné qui pourraient s'appliquer dans des conditions bien spécifiques et être exploitables à partir d'un outilcodépour l'occasion comme unscript. Dans le cas où le logiciel en question a été programmé dans unlangage de haut niveau, celui-ci peut être décompilé pour obtenir une représentation plus ou moins précise de soncode source. Cela est notamment possible avec des langages semi-compilés comme leC#ou leVisual Basic .NETqui sont traduits dans unlangage intermédiairependant la compilation, ou deslangages de scriptcomme lePythonou leBatchdont le code source aurait été intégré dans unfichier exécutableavec des outils spécialisés.
Le cracker peut faire face à des objectifs et des contraintes multiples lors ducraquaged'un logiciel donné :
Pour arriver à ses fins, le cracker doit souvent déjouer de nombreuses embûches comme :
Les outils de patch et les générateurs de clés publiés par les crackers ou les groupes de crackers possèdent souvent une musique électro ou rétro 8-bit dans le style des musiques deGame Boy, qui sont appeléeschiptunes.