Cours n°4

Trouver le bon serial



Objectif :

Trouver le bon sérial d'un crack-me

Niveau :

Débutant

Ce qu'il vous faut :

- WinDasm

- Un éditeur hexadécimal

- Le crack-me de 20 Ko (le même que le cours précédent)


C'est parti !

Avant de commencer je précise que cette méthode ne fonctionne que très rarement quand on crack mais existe néanmoins et de plus les résultats seront différents suivant la version de WinDasm que vous utilisez. Donc il se peut que cela ne marche pas avec votre WinDasm. Si c'est le cas lisez juste le cours sans le mettre en pratique ce n'est pas grave.

Nous allons dans ce cours nous intéresser de près au débuggeur de WinDasm, qui nous permettra de trouver le bon mot de passe pour ce crack-me. 
Pour commencer désassemblez-le et regardez un peu au-dessus du bon message :
 

* Reference To: KERNEL32.lstrcmpA, Ord:02FCh
|
:0040158D
FF1500204000 Call dword ptr [00402000] <<< Intéressant !!!
:00401593
85C0 test eax, eax
:00401595
7516 jne 004015AD
: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!!"


Il va falloir placer un "Break Point" en 0040158D (c'est-à-dire que le programme sera mis en pause quand il arrivera à cette adresse) sur le CALL car il est juste avant la comparaison (test eax, eax). Donc retenez l'adresse précédente (0040158D) et lancez le débuggeur en tapant CTRL+L ou en cliquant sur "Load Process" du menu "Debug". Là une boîte de dialogue vous propose de taper une commande (cette fonction ne sert pratiquement jamais) ne tapez rien et cliquez sur "Load". Vous avez maintenant trois fenêtres : l'écran principal de WinDasm (en haut), une pour les DLL, eax, ebx...(qui ne nous servira pas aujourd'hui) et une autre avec les adresses et les APIs (à droite). Vérifiez que dans cette dernière les 5 cases soient cochées.

Dans l'écran principal cliquez sur "Goto Code Location" et tapez l'adresse que vous avez dû retenir en l'écrivant sur un petit bout de papier (0040158D pour ceux qui n'avaient pas de quoi écrire ;-) ). Arrivé à cette ligne, posez un "Break Point Toggle" avec F2 ou en cliquant dans le menu "Debug" sur "Break Point Toggle" (la ligne deviendra jaune ou avec un carré jaune à sa gauche si la ligne est déjà sélectionnée ce qui doit être le cas). Dans la 3ème fenêtre, cliquez sur "Run" ou F9 pour lancer le crack-me. Tapez un sérial bidon (ex :123456789) et appuyez sur "Check". Là, normalement, il va breaker et une fenêtre va s'ouvrir. Regardez-là ! (La fenêtre peut ne pas apparaître suivant les versions de WinDasm).


API int Arg00 = lstrcmp(Arg01,Arg02)
API Address=0040158D, API Return Address=00401593
Arg01 = (LPCTSTR) 0063f810 -> "
123456789" <<< Tiens ! Ça ne serait pas le sérial qu'on vient de taper ???
Arg02 = (LPCTSTR) 0063f800 -> "
<BrD-SoB>" <<< Mais qu'est-ce donc ??? ;-)


Vous l'aurez tous compris, le "<BrD-SoB>" est le véritable serial (Attention mettez bien les < et >).
Pour vérifier, fermez d'abord le débuggeur. Cliquez sur "Close", puis sur "Terminate" (au-dessus de "RUN") et lancez le crack-me. Tapez le code que vous avez trouvé, et là... "Correct way to go!!"  

Mission accomplie ! Vous (enfin nous) avez réussi à trouver le bon code. Mais ne vous enflammez pas en disant à vos amis que vous êtes un cracker expert, car ce crack-me est vraiment facile et vous verrez dans les prochains cours qu'il y en a qui sont vraiment plus durs que celui-là. Et vous verrez très peu de bons crackers se vantant de leurs exploits. Alors à la prochaine !


Passer au cours suivant >>>
[ A mort le crack-me ! ]