Hello, Hello,
Je débute ce tutoriel sur un KeygenMe ! Nous allons :
-Analyser le programme
-Trouver la routine de génération du serial
-L'examiner
-Coder un KeyGen
Donc à premières vuee on a un KeygenMe communs autre qu'on aurait pu rencontré ! :
Nous allons (avec ma méthodologie) lancer le programme, l'observer, taper un faux serial (ex=123456789) Le lancer et voir qu'on tombe sur Un BadBoy (Normal pour l'instant), puis l’ouvrir dans "PEID" afin de trouver un éventuel packer..
Donc ouvrez avec PEID et observez :
Non pas de PACKER ! nous pouvons remarqué que le programme est en assembleur (car c'est marqué en gros dans PEID ^^) ou
alors en observant le code grâce à Olly !
Les structure de code sont spécifique au langage Assembleur(Question d'habitude).
Bon ! on commence ?? :)
D'abord on va aller chercher tout les Api ! En appuyant sur le Petit Bouton E de la barre d'outil, faire clic droit sur
le nom du programme (1er dans la liste logiquement..) et "View Names" !
Ici il n'y a pas beaucoup d'API :
Mais Une Seule Nous intéresse ! (GetDlgItemTextA) celle ci permet de récupérer une chaine de caractère depuis une
fenêtre (ex=EDIT,Button, label(static) etc...).
Donc pausons des breakpoint sur tout ces "GetDlgItemTextA" comme ceci :
Lançons le programme dans olly, remplissez les champs avec votre "name"(pour moi sakiir) et un serial Bidon tel que :
Là, nous breakons sur un des "GetDlgItemTextA" mais celui ci n'est pas le bon ... il récupère seulement le name.. donc
continuons l’exécution.
Ici, Nous breakons Sur le bon ! celui qui récupère le Serial !
Donc Normalement en cherchant un petit peu en dessous, on devrait trouver la routine de génération du serial.. :) alors
cherchons !!
On tâtonne, on tâtonne puis on fini par trouver juste après l'API "lstrlenA" qui calcul la longueur d'une chaine (en l’occurrence la longueur de notre serial Bidon.. ;) ).
Puis une vérification de la taille soit :
On voit : cmp al,14h soit 20d (h=Hexadécimal,d=décimal) et si c'est supérieur ou égal on saute en 4011C3 ! (JGE=jump if greater than or equal to).
Ici nous avons la routine de génération du serial ! ;) Enfin trouvé x)
Meme si 'ai commenté les lignes et que vous avez compris, je récapitule !
Le serial est généré par rapport au Name(Normal me direz vous), Les Valeur Hexadécimal de Name sont additionné Entre elle, et donne une valeur en Hexadécimal ! (Facile ;))
Bon pour sakiir ça donne : 283 on additionne toutes les valeur en Hexadécimal :
Bon Compris ? Si non relisez ! ;)
Maintenant je vais vous montrer un exemple de Keygen en C ! ;)
ui marche à tout les coups ! vous pouvez utiliser les Api, ce que vous voulez mais l'algo que je vous donne est correct
!! :) (Vous pourrez Admirer le Jolie Buffer Overflow dans mon Code ! ;) ) :
<iframe src="http://pastebin.com/embed_iframe.php?i=qYasLAuK" style="border:none;width:100%"></iframe>
Voila j’espère que j'ai été clair !!! :) Pour la documentation de ce cour allez voir :
ICI