Cours n°3

Cracker un crack-me



Objectif :

Cracker un crack-me pour qu'il nous dise que le code est bon, alors qu'on a tapé un faux serial.

Niveau :

Très débutant

Ce qu'il vous faut :

- WinDasm

- Un éditeur hexadécimal

- Le crack-me de 20 Ko (toujours autant utile :-)


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!!" ou alors si le crackme vous met que le code est bon courez vite jouer au loto. 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 arriver là :

:0040158D FF1500204000 Call dword ptr [00402000]
:00401593 85C0 test eax, eax
    << Vérifie si le sérial est bon ou non
: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 si vous avez compris les cours précédents, on peut donc 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 se rend à l'offset de la ligne du 7516 et on remplace 7516 par 7416 (pour un JE) ou par 9090 (pour deux 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ébuggeur de WinDasm pour trouver le vrai sérial sans rien modifier.


Passer au cours suivant >>>
[ Trouver le bon serial ]