Unpack un binaire packé avec UPX
|
07-09-2012, 23h02
(Modification du message : 08-09-2012, 02h39 par crown.)
Message : #1
|
|
crown
Membre actif Messages : 52 Sujets : 5 Points: 18 Inscription : Oct 2011 |
Unpack un binaire packé avec UPX
Unpack UPX
0x00 Introduction : Salut les poneys alors aujourd’hui j'ai décidé de faire un petit tutoriel sur, " comment unpacker un binaire packé avec UPX " [1], bon il n'est pas nécessaire d'avoir des connaissances en langage ASM. 0x01 Pré-requis :
0x02 Try to unpack me ! C'est partit donc comme tout bon cracker un petit reflex doit vous venir à l'esprit qui est de passer le binaire dans PEid ou StudPE. Comme on peut le voir ici PEid ne nous apprends rien nous essayons donc avec StudPE. Avec StudPE on voit qu'il détecte le packer UPX il nous faut donc l'unpacker si on veut pouvoir travailler sur notre binaire. Maintenant que nous savons qu'il est packé nous le lançons dans ODBG puis on tombe nez-à -nez avec un PUSHAD qui est le debut de la routine du loader qui va être lancé pour pouvoir déchiffrer le programme. Ici nous avons notre EP (Entry Point) c'est lui que nous allons changer pour que le programme puisse commencer sur le programme et non le loader. Adresse de l'EP : 00466290, gardons cela en tête pour plus tard. Il nous faut maintenant trouver un POPAD qui signifie la fin de la routine de déchiffrement. L'instruction POPAD a une valeur hexadécimal de 61 on fait donc un CTRL + B puis dans la case Hex + 00 on y met le nombre 61. On tombe ensuite sur cette ligne, la ligne du POPAD : Ici comme nous pouvons l'observer il y a, à l'adresse 00466413 un JMP [10] qui va jumper sur l'OEP (Original Entry Point) ce qui nous amèneras au début du programme unpacké. Donc on appui sur F9 on vois une fenêtre qui s'ouvre puis on clique sur la ligne du JMP et on appui sur Entrer. Normalement on arrive ici : On note l'adresse à laquel on tombe qui est 00401280 puis on ouvre LordPE on cherche notre programme (débuggé) puis on clique droit dessus puis on fait un "dump full". On se retrouve donc avec un programme du nom de dumped.exe mais si vous le lancez il ne marchera pas puisqu'il manque touts les DLL et les librairies il va donc falloir les reconstruire. Il faudra aussi changer l'EP (Entry Point) pour que le programme aille directement à l'OEP (où le programme est unpack) et non sur le loader. Donc on ouvre ImportRec puis on cherche notre programme en cour qui est unpacké (dans OllyDbg) : On voit sur la dernière ligne que l'Image Base est 00040000 on note ça quelque part puis la il va nous falloir faire une petite soustraction pour trouver l'OEP qui n'est autre que EP - Image Base = OEP. On a donc 00401280 - 00400000 = 00001280, on écrit cette valeur dans OEP puis on clique sur IAT AutoSearch, ça devrait vous affichez un jolie message qui dit que l'adresse a bien était trouvée. Il nous dit ensuite de cliquer sur Get Import. On a maintenant nos DLL puis nos Import Tables recrée, nous pouvons donc fixer le dump en cliquant sur Fix Dump puis en choisissant le fichier dumped.exe. Là encore une fois un beau message disant que l'opération c'est bien passée, ImportRec vient de crée un fichier Dumped_.exe qui est votre fichier final unpack. Aperçu des strings sur le binaire packé : Et voilà le fichier dumped_.exe crée par ImpRec avec les imports tables et les DLLs et bien sûr unpacké : Voilà on arrive à la fin de ce tutoriel entièrement rédigé par moi-même, et ça m'a pris pas mal de temps donc j'espère qu'il vous plairas, surtout si vous avez des questions n'hésitez car pour des débutants ça peut tout de suite devenir assez technique. |
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Débuter en reverse engineering avec 0$ | 0x41 | 9 | 611 |
14-09-2012, 19h55 Dernier message: LR-6 |
Utilisateur(s) parcourant ce sujet : 2 visiteur(s)