Cours n°3 : Cracker un crack-me
Objectif :
Cracker un crack-me pour qu'il nous dise que le code est bon, quand on tape un faux code.
Niveau :
Très débutant
Ce qu'il vous faut :
- WinDasm (Voir page "Outils - Crack")
- Un éditeur hexadécimal (Idem)
- Le cracke-me de 20 Ko (pour le cracker c'est quand même mieux ;-)
Allez go !
Tout d'abord lancez le logiciel. Il vous demande de taper le sérial. Tapez un nombre et cliquez sur "Check", il vous dira "Incorrect try again!!". Notez le message, puis désassemblez le programme avec WinDasm. Regardez les "StringsData References". Vous avez de la chance il y en a que 4. Double-cliquez sur le message que vous avez noté (regardez s'il n'y en a pas plusieurs en double-cliquant une autre fois dessus). Vous devriez arrivez là :
:0040158D FF1500204000 Call dword ptr [00402000]
:00401593 85C0 test eax, eax
<<< Compare votre sérial avec le
vrai
:00401595 7516 jne 004015AD
<<< Saute vers
"Incorrect..." s'il est faux sinon continue à
"Correct..."
:00401597 6A40 push 00000040
* Possible StringData Ref from Data Obj ->"CrackMe"
:00401599 6850304000 push 00403050
* Possible StringData Ref from Data Obj ->"Correct way to go!!"
<<< Message bon
|
:0040159E 6858304000 push 00403058
:004015A3 8B4DE0 mov ecx, dword ptr [ebp-20]
* Reference To: MFC42.MFC42:NoName0077, Ord:1080h
|
:004015A6 E853050000 Call 00401AFE
:004015AB EB14 jmp 004015C1
<<< Saute au-dessus de
"Incorrect..."
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401595(C)
|
:004015AD 6A40 push 00000040
* Possible StringData Ref from Data Obj ->"CrackMe"
:004015AF 686C304000 push 0040306C
* Possible StringData Ref from Data Obj ->"Incorrect try again!!"
<<< Message d'erreur
|
:004015B4 6874304000 push 00403074
:004015B9 8B4DE0 mov ecx, dword ptr [ebp-20]
Donc vous l'aurez compris, du moins je l'espère, il faut remplacer le saut JNE en JE, mais quand vous taperez le bon code, il vous dira que le code est faux. Il faut donc mieux mettre un NOP (pas d'opération) et donc il pourra continuer vers "Correct...".
On ouvre le crack-me avec l'éditeur hexadécimal, on recherche "85C075166A40", on vérifie que c'est le bon et on remplace 75 par 74 (pour un JE) ou par 90 (pour un NOP). On enregistre, on le lance on tape n'importe quel nombre et là : "Correct way to go!!"
Et voilà !! C'est aussi simple que ça. Dans le prochain cours on utilisera la fonction débuggueur de WinDasm pour trouver le vrai sérial sans rien modifier.