; \EndDialog
0040111F |. EB 09 JMP SHORT elooo2.0040112A
00401121 |> B8 00000000 MOV EAX,0
00401126 |. C9 LEAVE
00401127 |. C2 1000 RETN 10
0040112A |> B8 01000000 MOV EAX,1 ;//met 1 dans eax et
0040112F |. C9 LEAVE ;//quitte
00401130 \. C2 1000 RETN 10
1°)Méthodologie:
Rappel:
lstrcmp Function :
L'API lstrcmp permet de comparer deux chaînes de caractères. Cette fonction est sensible à "la casse", celà signifie qu'elle fait attention aux majucules et minuscules.
Syntax:
int lstrcmp( LPCTSTR lpString1,
LPCTSTR lpString2
);
Return Value:
Les valeurs de retours sont:
- Positif si la string 1 est supèrieure à la string 2.
- Négatif si la string 1 est inférieure à la string 2.
- zéro si la string 1 est égale à la string 2.
On convertit la string ascii en base 16 (hexadécimale):
ascii: |
` |
k |
= |
p |
( |
` |
w |
6 |
j |
R |
a |
n |
` |
` |
P |
N |
V |
M |
$ |
+ |
Q |
j |
Q |
< |
% |
, |
g |
r |
a |
i |
hexa: |
60 |
6B |
3D |
70 |
28 |
60 |
77 |
36 |
6A |
52 |
61 |
6E |
60 |
60 |
50 |
4E |
56 |
4D |
24 |
2B |
51 |
6A |
51 |
3C |
25 |
2C |
67 |
72 |
61 |
69 |
La génération du sérial est très simple:
Dans ce CrackMe DL prend des valeurs 3,7,2,6,9,5,4,1, qui sont répétées, puis on fait un XOR entre DL et la valeur en hexadécimal de chacun des bytes de la string fixe.
(Voir détails ci-dessous)
La routine du sérial :
========================================
DL=3 xor 60=63= c donne ` après le xor
========================================
DL=7 xor 6B=6C= l donne k après le xor
========================================
DL=2 xor 3D=3F= ? donne = après le xor
========================================
DL=6 xor 70=76= v donne p après le xor
========================================
DL=9 xor 28=21= ! donne ( après le xor
========================================
DL=5 xor 60=65= e donne ` après le xor
========================================
DL=4 xor 77=73= s donne w après le xor
========================================
DL=1 xor 36=37= 7 donne 6 après le xor
========================================
DL=3 xor 6A=69= i donne j après le xor
========================================
DL=7 xor 52=55= U donne R après le xor
========================================
DL=2 xor 61=63= c donne a après le xor
========================================
DL=6 xor 6E=68= h donne n après le xor
========================================
DL=9 xor 60=69= i donne ` après le xor
========================================
DL=5 xor 60=65= e donne ` après le xor
========================================
DL=4 xor 50=54= T donne P après le xor
========================================
DL=1 xor 4E=4F= O donne N après le xor
========================================
DL=3 xor 56=55= U donne V après le xor
========================================
DL=7 xor 4D=4A= J donne M après le xor
========================================
DL=2 xor 24=26= & donne $ après le xor
========================================
DL=6 xor 2B=2D= - donne + après le xor
========================================
DL=9 xor 51=58= X donne Q après le xor
========================================
DL=5 xor 6A=6F= o donne J après le xor
========================================
DL=4 xor 51=55= U donne Q après le xor
========================================
DL=1 xor 3C=3D= = donne < après le xor
========================================
DL=3 xor 25=26= & donne % après le xor
========================================
DL=7 xor 2C=2B= + donne , après le xor
========================================
DL=2 xor 67=65= e donne g après le xor
========================================
DL=6 xor 72=74= t donne r après le xor
========================================
DL=9 xor 61=68= h donne a après le xor
========================================
DL=5 xor 69=6C= m donne l après le xor
========================================
On récupère toutes les lettres en bleues et on obtient :
Le Serial = cl?v!es7iUchieTOUJ&-XoU=&+ethl
Une fois le sérial trouver j'ai tester à nouveaux en posant un breakpoint sur GetDlgItemText, et j'ai vérifier que tout les caractères étaient identiques.
Sur la Photo ci-dessous vous voyez le résultat que renvoie l'api lorsque que les deux strings sont identiques.
Voila, j'espère que ce petit tutorial vous aurra aider.
bonne chance pour la suite ;)
Amicalement votre humble serviteur [ScHaP_999|TNL] ;)