Premier tuto de cracking basiqueIl faut d'abord télécharger
OllyDBG:
http://www.ollydbg.de/odbg110.zipEt le fichier cible:
https://www.dropbox.com/s/cvo6rcci4uv4j2d/crack1.exeEnsuite, on ouvre crack1.exe avec OllyDBG.
Y'a plein d'infos dans la fenêtre que j'expliquerai quand il faut.
En haut à gauche: le code
En haut à droite: les régistres
En bas à gauche: les données hexa
En bas à droite: la pile
Appuyez sur CTRL+A sur le code pour affiner l'analyse du programme.
Vous devriez avoir ça:
http://image.noelshack.com/fichiers/2012/31/1343815664-0.pngSi vous avez pas la coloration, allez dans Options > Appearance > Defaults
Et mettez Default Syntax Highlighting: Christmas tree, et relancez le programme si nécessaire.
Bref, faut trouver où se trouve la vérification.
Faites clic droit sur le code, Search for > All referenced text stringsVous aurez alors tous les chaines de caractères du programme.
http://image.noelshack.com/fichiers/2012/31/1343815686-1.pngOn repère "
Bon pass", on clique dessus.
On arrive à ça:
http://image.noelshack.com/fichiers/2012/31/1343815759-2.pngOn voit clairement le fonctionnement du programme.
Les CALL sont comme leur nom l'indique des appels de fonctions.
printf affiche "Entrez le pass"
scanf lit le pass entré
Ensuite la fonction strcmp va comparer le pass entré avec le bon pass.
Ensuite, il y a TEST et JNZ
JNZ c'est Jump if Not Zero.
Donc ça saute dans le code si le résultat est différent de 0.
(Strcmp renvoie 0 quand les deux chaines sont identiques)
Donc quand ça saute, c'est que c'est le mauvais pass, et ça va afficher "Mauvais pass"
Maintenant, comment le cracker ?
2 possibilités
1) Patcher le programme pour qu'il affiche "Bon pass"
2) Trouver le mot de passe__________________________________
1) Il faut jouer sur l'instruction JNZ.
On peut double cliquer sur JNZ <adresse>, et on écrit alors
JE <adresse> à la place.
C'est l'inverse de
JNZ, c'est Jump if Equal Zero.
On peut aussi mettre
NOP à la place.
Ca veut dire "No OPeration". En gros, ça fait rien, et ça ira sur "Bon pass"
NOP c'est mieux, car avec JE, ça marchera avec tous les pass sauf le bon.
http://image.noelshack.com/fichiers/2012/31/1343815800-3.pngVoilà, le programme est cracké !
Pour l'enregistrer: Clic droit, Copy to executable > All modifications
Save file. Voilà
2) Pour trouver le pass, on met ce qu'on appelle un breakpoint sur le strcmp.
On clic dessus et on appuie sur
F2, la ligne va devenir rouge.
http://image.noelshack.com/fichiers/2012/31/1343815840-4.pngPour expliquer les commandes vites fait,
F2 pose un breakpoint,
F9 lance le programme.
F8 execute une instruction.
F7 pareil, sauf qu'il rentre dans les CALL.
Donc on lance avec F9, ça va tourner et vous entrez un pass dans la console.
On arrive alors là:
http://image.noelshack.com/fichiers/2012/31/1343815862-5.pngOn voit dans la pile qu'il compare ce qu'on a entré
loIilol avec
0&1;))_Donc le pass est
0&1;))_