-= ~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 !!!