Trouver le bon serial
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 ! ] |