La pêche aux Serials

Premier Exemple

Maintenant nous allons voir comment trouvé le bon serial (le vrais code) afin d’avoir le bon message, comme premier exemple je vais commencer par le CrackMe du cours précédant Abex’ 5th.

Pour cela nous utiliserons le débuggeur de W32Dasm (hé oui c’est pas seulement un désassembleur mais aussi un débuggeur) : sur le Menu Debug choisissez Load Process (ou Ctrl+L) une fenêtre s’affiche vous invitons a rentrer une ligne de commande (optionnelle) vous n’y mettez rien vous cliquez tout simplement sur Load après deux fenêtres se rajoute, une sur la droite et l’autre a gauche :


Figure-18

 
Figure-19

Figure-18 : Fenêtre de droite (les adresses & les API)
Figure-19 : Fenêtre de gauche (DLL & registres eax, ebx, ecx…)

Donc ce qu’on doit faire c’est choper le code lorsque le programme vérifie le serial entré par l’utilisateur avec le vrais, que seule lui (programme) et son auteur connaissent  mais plus pour longtemps.

----------------------------------------------------------------------------

:004010F7 E851000000         Call 0040114D
:004010FC 83F800               cmp eax, 00000000
:004010FF 7416                   je 00401117

----------------------------------------------------------------------------

Cette vérification se fait au niveau du CALL comme j’ai expliqué sur le cours précédant, donc on doit arrêter le programme sur ce call, pour cela je pose un Break Point (BP sert a donner au programme un petit moment de repos ;).

Sur le Menu Goto choisissez Goto Code Location ou le raccourci (Shift+F12) et vous mettez l’adresse de la ligne du CALL : 004010F7 vous y atterrissez directement, une fois la ligne en vert, appuyer sur F2 pour poser le BP, ce qui met du jaune au début de la ligne :


Figure-20

Ensuite appuyer sur F9 ou cliquer sur Run de la fenêtre de droite, le CrackMe se lance vous y mettez un serial bidon du genre 546546 ou n’importe quoi et cliquer sur Check une fenêtre apparaît :


Figure-21

Je pense que tout le monde l’as trouvé  : vous vous souvenez du code bidon que j’ai donner au programme ! il est sur la 4ième ligne, la ligne d’avant il y a ça : L2C-5781FCVC4562-ABEX ça serait pas le vrais serial ? Essayer pour voir.

Deuxième Exemple

Le 2ième exemple traiter sur ce cours est le CrackMe Brad Soblesky 2 :       


Figure-22

On fait comme avant, je donne comme Name : Willingness et comme Code : 12345 je clique sur Check et la le programme me dit "Incorrect!!, Try Again." Je désassemble le programme avec W32Dasm et je cherche sur les SDR (String Data References) le message, le voila :

----------------------------------------------------------------------------

Possible Reference to String Resource ID=00101: "&About Crack2..."
Possible Reference to String Resource ID=00102: "Correct!!, Way To Go."
Possible Reference to String Resource ID=00103: "Incorrect!!, Try Again."
... ...

----------------------------------------------------------------------------

Et en cliquant dessus on tombe ici :

----------------------------------------------------------------------------

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401642(C)    
|    
:00401747 8D8D44FEFFFF lea ecx, dword ptr [ebp+FFFFFE44]
     
* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                  |

:0040174D

E81A060000 Call 00401D6C

:00401752

C645FC04 mov [ebp-04], 04
     

* Possible Reference to String Resource ID=00103: "Incorrect!!, Try Again."

                                  |

:00401756

6A67 push 00000067

:00401758

8D8D44FEFFFF lea ecx, dword ptr [ebp+FFFFFE44]

----------------------------------------------------------------------------

On voit très vite que notre méchant message est appelé par un jump qui est a l’adresse 00401642, on appuis alors sur Shift+F12 (vous faite comme avant) afin d’aller directement a cette adresse :

----------------------------------------------------------------------------

:0040163B E880020000 call 004018C0 ; vérifie le code
:00401640 85C0 test eax, eax ; test si eax=0
:00401642 0F85FF000000 jne 00401747 ; saut si pas égal

----------------------------------------------------------------------------

Juste avant le saut conditionnel qui n’est rien qu’un JNE on retrouve la même procédure qu’avant : vérifie le code entré, si le résultat du test (si eax égal à zéro) est nul ZF sera mis à 0 et le saut s’effectuera.
(Vous pouvez aussi changer le saut afin qu'il accepte n'importe quel code)

On pose un BP sur le CALL (vous suivez la procédure comme sur l’exemple précédant) et on lance notre programme, on lui donne comme Nom Willingness et 12345 comme code on clique sur Check et la il break en affichant une fenêtre avec dedans notre serial 2372840561 qui marche avec le nom Willingness, c’est pas comme le premier CrackMe parce que celui-la génère le serial par rapport au nom entré.

------------------------- HomeWork -------------------------

TRY 2 CRACK :
2 logiciels très faciles (un saut à changer et le programme sera enregistré )

WinRescue XP 1.08

http://superwin.swmirror.com/wnrsqxpz.exe

www.superwin.com

Zero PopUp Killer XP 5.1

http://www.ax-soft.com/zpk_xp.exe

www.ax-soft.com

------------------------- HomeWork -------------------------

Cours précédant :
<<
CrackMe

Cours suivant :
Faire passer un faux serial pour un vrai - 1ère Partie >>