Cours n°4 : Trouver le bon sérial

 

    Objectif : 

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

    Niveau :

        Débutant

    Ce qu'il vous faut :

        - WinDasm (Voir page "Outils - Crack")

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

 

    C'est parti !

        Nous allons dans ce cours nous intéresser de près au débuggeur de WinDasm, ce 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 faudra faire un "Break Point" en 0040158D (c'est-à-dire que le programme sera mis en pause) car il est juste avant la comparaison (test eax, eax). Donc retenez l'adresse précédente et lancez le débuggeur en tapant CTRL+L ou en cliquant sur "Load Process" du menu "Debug". Là un message vous demande de donner 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). 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 n'apparaîtra pas si vous avez WinDasm 9).

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

        Vous l'aurez tous compris, le "<BrD-SoB>" est le véritable code. 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 s'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à. Alors à la prochaine !!!

        <<< Cours précédent    Cours suivant >>>