Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Bonjour à tous ce soir , je me propose d'écrire un tutoriel simple , pour s'initier à la programmation de KeyGen !
- Notre cible sera un KeyGen nommé "Progresive KeyGenMe #1 by *fargoth*" Téléchargeable à cette adresse : [url=https://mega.co.nz/#!U0xHzQ6Z!IHreLhdpidYusqlJcDAo-T3fX1FcL9MjOUTZHSDQo_k]MEGA - Progresive KeygenMe[/url] !
- Ce cours ce réroulera en 3 Parties :
- 0x1 - Analyse Statique Du Programme (Dans Notre cas cette partie sera brève car le keygenMe n'est pas packé et ce n'est pas un malware)
- 0x2 - Desassemblage / Debugage , donc ici je ne vais pas en faire un fromton mais on va faire un choix ! moi je vais debug :D
- 0x3 - Dev du KeyGen ! et oui c'est la meilleure partie ! En C++ avec l'API Windows en GUI !
- Voila pour l'intro , on va maintenant commencer .
- 0x1 - Analyse Statique Du Programme +----------------------------------------+
- ------------------------------------------------------------------------------+
- La première chose à faire pour ce type de programme est de regarder la signature et de la comparer à d'autre pour savoir quel est l'IDE utilisé ou le langage de programmation utilisé.
- Nous lançons donc le keygenme dans PEID !
- [url=http://www.noelshack.com/2013-43-1382318714-img1.png][img]http://image.noelshack.com/minis/2013/43/1382318714-img1.png[/img][/url]
- Nous voyons donc apparaitre "UPolyX v0.5 *" , à priori le programme est packé :(
- Mais attendez un peu , continuez à lire ! On va debuguer le KeygenMe et nous apercevoir d'une chose assez bizarre à laquelle e n'ai aucune explication ..
- ------------------------------------------------------------------------------+
- 0x2 - Désassemblage / Debuguage +---------------------------------------------+
- ------------------------------------------------------------------------------+
- Ouvrons notre petit prog dans Olly ! nous tombons directement sur quelque chose de très concret en ASM Win32 !
- Je pense qu'on ne peut pas faire mieux comme lecture !
- [url=http://www.noelshack.com/2013-43-1382318717-img2.png][img]http://image.noelshack.com/minis/2013/43/1382318717-img2.png[/img][/url]
- Appuyer sur "debug" et tester n'importe quel nom et n'importe quel serial .. Comme MOI !! :D
- [url=http://www.noelshack.com/2013-43-1382318716-img3.png][img]http://image.noelshack.com/minis/2013/43/1382318716-img3.png[/img][/url]
- On Tombe sur ce qu'on appel dans le jargon un Bad Boy . nous allons donc chercher dans les string et double clicker sur le badboy comme ceci (click droit dans le code -> Search for -> All referenced Text Strings)
- [url=http://www.noelshack.com/2013-43-1382318715-img4.png][img]http://image.noelshack.com/minis/2013/43/1382318715-img4.png[/img][/url]
- Nous obtenons un code très compréhensible qui nous permettra de trouver le bon serial de deux différente manière (UNE SUPER ET UNE POURRIT !)
- [url=http://www.noelshack.com/2013-43-1382318713-img5.png][img]http://image.noelshack.com/minis/2013/43/1382318713-img5.png[/img][/url]
- C'est Simple on a ici une série de TEST passé à la string "Name" (sa longueur et la routine ;) )
- La routine c'est ce que le programme va utiliser pour calculer le serial ! le truc 'est qu'un KeyGenMe (Ou vrai programme) va vous calculer un code (serial) par rapport à quelque chose de fixe (Nom d'entreprise, pseudo , HWID, Adresse ip Local, Adresse MAC etc ..)
- Les deux solutions s'impose et nous allons résoudre notre KeyGenMe très simplement et bêtement en 2 temps ! d'abord nous allons poser un breakpoint sur la fonction "lstrcmpA()" sa fonction est de comparer 2 chaines. VOIR LE PROTOTYPE ICI http://msdn.microsoft.com/en-us/library/windows/desktop/ms647488%28v=vs.85%29.aspx
- Grâce à ce breakpoint nous allons pouvoir visualisé (en Lançant le Debug) les chaines de caractères comparé comme ceci ;) (en admettons que je mette "sakiir" dans le name et "FucKinG_P4sS" dans le serial !)
- [url=http://www.noelshack.com/2013-43-1382318716-img6.png][img]http://image.noelshack.com/minis/2013/43/1382318716-img6.png[/img][/url]
- [url=http://www.noelshack.com/2013-43-1382318716-img7.png][img]http://image.noelshack.com/minis/2013/43/1382318716-img7.png[/img][/url]
- Waaaoww ! donc voila les deux string comparées "FucKinG_P4sS" et "643" évidement comme vous l'avez vu dans la documentation de la msdn la fonction ne renvoi pas 0 donc on saute sur le BADBOY !
- Mais nous savons que si le serial entré pour sakiir est "643" nous réunissons le KeygenMe ! Ne parlons pas trop vite car il y a la deuxieme solution , celle qui engendrera la 3ème partie , le KeyGen !
- [url=http://www.noelshack.com/2013-43-1382318715-img8.png][img]http://image.noelshack.com/minis/2013/43/1382318715-img8.png[/img][/url]
- Comme le programme nous l'indique nous allons créer un KeyGen ! pour ceci nous allons déchiffrer la routine en Assembleur pour la transcrire en C je vais donc directement passer à la 3ème partie !
- ------------------------------------------------------------------------------+
- 0x3 - Dev du KeyGen +---------------------------------------------------------+
- ------------------------------------------------------------------------------+
- Comme Le code est très simple je vais simplement prendre un screen du code commenté en assembleur :
- [url=http://www.noelshack.com/2013-43-1382318713-img9.png][img]http://image.noelshack.com/minis/2013/43/1382318713-img9.png[/img][/url]
- Vous pouvez donc voir qu'on à une routine très simple qui ajoute tout les caractère entre eux !
- J'ai donc programmé un KeyGenMe Commenté grave à l'API Win32 sous Visual Studio 2012.
- Je vous distribue tout le projet :
- [url=https://mega.co.nz/#!d4og1ZRQ!BkVgkk4P_k-XnZI8t6RoNDBsVlME67S6nEts3ZEG2o4]KeyGen Source[/url]
- C'est Ainsi que se Termine ce cours qui a été très long à rédiger pour moi , je vous souhaite une bonne nuit !
- ------------------------------------------------------------------------------+
Advertisement
Add Comment
Please, Sign In to add comment