Un autre crackme, Windows cette fois-ci.
1.
What
On a un fichier « crackme.exe » qui demande un mot de passe …
Voici ce que PeID en pense :
Il est donc packé avec UPX. Pour unpacker, il suffit de lancer : upx.exe –d crackme.exe.
Et voilà, c’est
unpacké …
On passe la fonction « start » pour arriver à la demande de mot
de passe (bloc jaune) :
Après le « fgets », on a en vert la partie qui va chiffrer (transformer
légèrement) notre mot de passe, ensuite on passe dans la partie orange qui
comparera notre mot de passe chiffré avec le chiffré du bon mot de passe. Si c’est
bon, on passe dans la partie rouge, sinon bleu.
Dans le premier bloc vert [ebp-1Ch] contient l’index du caractère que l’on
est en train de transformer, il est d’ailleurs initialisé à 0 juste après le
fgets.
Ensuite on calcul la taille de notre mot de passe situé à ebp-32h. On
compare ensuite les 2 pour savoir si on est à la fin ou pas.
Pour la partie transformation (2ème bloc vert), on va chercher
le caractère du mot de passe à l’index [ebp-1Ch], on le XOR avec [ebp-1Dh] qui
vaut 0x93 (voir un peu plus haut : mov
byte ptr [ebp-1Dh], 93h), puis on incrémente l’index.
On a donc un XOR avec 0x93. Pour trouver le bon mot de passe, il suffit
de récupérer le chiffré du bon passe et de le XORer avec 0x93.
2.
Résultat
On break sur le strcmp, on note le chiffré du bon mot de passe.
Cela donne : FE FC FD F8 A0 EA.
Cela donne : FE FC FD F8 A0 EA.
Après
le XOR on obtient le flag : monk3y
Comme « le python c’est bon », voiçi le xor en Python :
"".join([chr(int(v,16)^0x93)
for v in
["FE","FC","FD","F8","A0","EA"]])
Aucun commentaire:
Enregistrer un commentaire