|
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 | ||
| Zero PopUp Killer XP 5.1 |
------------------------- HomeWork -------------------------
|
Cours suivant : |