-= ~Cracking tutorial~ =-




-----------------------------------------------------------------------------------------
Ce tutorial a pour but informatif et je ne serai pas responsable de ce que vous en ferez!
-----------------------------------------------------------------------------------------






I) Introduction
____________


C'est le premier tout que j'écris sur l'art qui est le cracking (mais avant tout un passe temps!!!). Je ne suis pas un expert mais il a pour but d'aider les débutants car on a tous commencé par là donc j'espère qu'il sera assez clair et simple a comprendre.
Tout d'abord pour s'attaquer à un soft il faut comprendre comment ça marche et en quoi ça consiste de "cracker" et aussi avoir des connaissances en assembleur.

Qu'est ce que l'assembleur?? : après avoir été compilé un programme devient incompréhensible avec tous les caractères ASCII mais la machine le comprend et l'assembleur est en fait une traduction du programme pour qu'il devienne plus compréhensible.


Il existe plusieurs protections mais pour commencer prenons la plus facile: vous téléchargez une version shareware de Winrar et pour ne plus avoir de limite de temps il faut rentrer un code d'enregistrement. S'il est incorrect il vous envoie un message disant que le code est pas bon (logik...) et s'il est bon alors vous êtes enregistrés!!! Donc le programme fait une vérification du code avec votre nom et après va vous envoyer un message. C'est a partir de ce message d'erreur que l'on peut remonter a la vérification et donc modifier le soft pour que quand le code est incorrect il envoie le bon message du style "Thank you for your purchase"

Je sais qu'au début c'est difficile a comprendre mais pour que ce soit plus simple il faut des exemples.




II) Passage a l'acte!!!
___________________


Il faut avant de commencer posséder les bons outils. Nous aurons besoin :
- d'un désassembleur : le plus connu WIN32DASM
- d'un éditeur hexadécimal : le meilleur HIEW
- du prog a cracker
- un cerveau
- des mains

Une fois que vous possédez tout ça téléchargez un très bon programme pour apprendre qui est disponible sur le site "crackme.exe"
Nous allons donc pouvoir commencer :)


1) désassembler le prog et localiser le jump



Exécutez le programme et entrez un faux nom ainsi qu'un faux serial et il nous dit "Mauvais serial, essayez encore..."
Donc lancez WIN32DASM puis ouvrez notre prog "crackme.exe" la vous verrez tout le programme désassemblé : dead-listing.
Cliquez sur String Data References (icone en haut a droite) et cherchez notre message d'erreur "Mauvais serial, essayez encore..."
double cliquez dessus et vous tomberez sur ça :



* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
:00401503(U), :0040151C(U), :004015B8(C) <==== ici sont répertoriés tous les sauts conditionnels et inconditionnels vers notre message d'erreur

:004015C3 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"Rat"

:004015C5 686C304000 push 0040306C

* Possible StringData Ref from Data Obj ->"Mauvais serial, essaye encore... "

:004015CA 6840304000 push 00403040
:004015CF 8B4DE0 mov ecx, dword ptr [ebp-20]

* Reference To: MFC42.Ordinal:1080, Ord:1080h

:004015D2 E8BB020000 Call 00401892


On remonte un peu et on a :

:004015B6 3AD9 cmp bl, cl <====== la comparaison se fait ici
:004015B8 7509 jne 004015C3 <====== et si le code est pas bon alors jump to 004015C3 et on remarque qu'a cette adresse il y a le message d'erreur donc il faut modifier ce jump et mettre l'inverse qui est "je"


2) Modifier le jump



Tout d'abord mettez la ligne sur l'adresse 004015B8 (remarquez qu'elle devient verte) et lisez en bas les renseignements. On aura besoin de l'offset qui est 15B8h, donc pour modifier ce jump nous allons avoir besoin d'un éditeur hexadécimal.

Hiew est parfait pour ça alors allez sous dos et faites hiew crackme.exe. Ensuite vous avez de l'ASCII alors appuyez sur F4 et allez dans décode puis faites F5 et mettez 15B8 (sans le h cela précise juste que c'est en hexadécimal mais ne nous apporte rien). Ici vous avez 7509 : en fait 75 en hexa correspond à jne en assembleur donc il faut mettre je qui est 74 en hexa. Donc faites F3 rentrez 74 puis faites F9 et F10.

Relancez le prog mettez comme nom "azertyuiop" et comme serial 123456789 CA MARCHE mais si vous mettez par exemple "azert" comme nom et 12345 comme serial ça ne marche pas!! en fait il y a une autre protection sur le nom et le serial, ils doivent au moins faire 6 caracteres...Pas de panique retournons dans WIN32DASM et regardons alors tous les sauts conditionnels et inconditionnels on a donc :



* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
:00401503(U), :0040151C(U), :004015B8(C)

Nous venons d'aller à l'adresse 004015B8 pour le jne 004015C3, maintenant regardons a l'adresse 00401503 on arrive sur ça :

:00401516 837DEC05 cmp dword ptr [ebp-14], 00000005
:0040151A 7F05 jg 00401508 <======= jump si notre nom ou notre serial fait plus de 5 caractères
:0040151C E9BB000000 jmp 004015C3

donc c'est ca qu'on doit modifier!!! le jg 00401508 doit etre jmp 00401508 donc deja mettez la ligne sur 0040151A, notez l'offset qui est 151A, retournez dans hiew et cette fois ci faites goto 151A, faites F3 et apres F2 et mettez jmp a la place de jg ensuite F9, F10 relancez le prog et voila c bon aucun prob !!!