D-Montez Moi a été dém…

Et voilà, mon dernier crackme n’a pas fait long feu, je m’en doutais un peu, j’aurai du plus le corser , mais bon, c’est agréable de faire des choses simples desfois. A quoi bon faire un crackme avec des milliers de lignes de code, comme je l’ai déjà vu, utilisant une lib de maths toute faite et balancer fièrement après “Allez y faites moi un keygen, héhé”, aucun intérêt.

La personne (andrewl.us sur crackmes.de) qui a résolu le keygenme a fait un petit tuto en html très agréble à lire, il a utilisé une lib de math pour faire le keygen mais ce n’est pas obligatoire, chacun sa méthode. Personnellement, je trouve la solution un peu compliqué, il y a beaucoup plus simple, il fallait notamment bien comprendre le fait que j’utilise des entiers 64 bits (uint64_t), au niveau assembleur, cela se traduit par le fait qu’un nombre est stocké non pas sur un registre mais 2, typiquement le couple EDX:EAX, EDX contenant la partie haute et EAX la partie basse.

Par exemple l’opération suivante:

uin64_t val;
val = (val&0x0FFFFFF00000)>>16

se traduit par :

00401889 AND EAX,FFF00000
0040188E AND EDX,0FFF
00401894 SHRD EAX,EDX,16
00401898 SHR EDX,16

Une fois qu’on a compris ce système, l’analyse du keygenme est presque immédiate et on constate que son code se traduit en quelques lignes de C seulement.

Donc voilà, régalez vous avec cette solution :

D-Montez Moi solution by andrewl.us (keygen + src + tut)

Filed under : Tutorial
By admin
On February 12, 2008
At 14:50
Comments : 0