Académique Documents
Professionnel Documents
Culture Documents
Outils:
Le CrackMe de 16 kb
Plugin OllyDump
LordPE ou PE Tools
ImpRec
Observation du CrackMe:
Objectifs:
Nous allons commencer par quelques infos de base sur les packers et la structure d'un .exe.
Il faut qu'un programme, mme une fois pack soit toujours excutable sans modification de
son comportement. Ainsi, l'utilisateur non-averti ne se rend compte de rien lors de son
utilisation. Les avantages sont divers:
Rsiste souvent aux reversers dbutants, puisqu'il faut que le fichier soit dcompress
Le bon point des fichiers PE est qu'ils utilisent la mme structure de fichier en dur qu'en
mmoire. Un module mappe en mmoire reprsente toutes les donnes, le code et les
ressources dont il a besoin pour son excution.
DOS Stub
Data Directories
Sections
Le contenu des Sections est ce dont le prog a besoin pour son excution. Le reste n'est la
plus ou moins que pour aider le Win32 Loader les retrouver.
Je crois que c'est tout pour mon topo rapide... en revanche je vous invite fortement a lire les
tutos suivants de Goppit (Anglais) et de yarocco (Franais) qui vous apporteront toutes les
connaissances ncessaires sur le PE File Format. Je ne vois pas l'intrt de tout rpter a
mon tour, d'autant plus qu'ils ont fait un travail exceptionnel.
Passons maintenant a l'unpacking en se conformant aux tapes suivantes:
1. Recherche de l'OEP
2. Opration de Dumping
3. Reconstruction des Imports
METHODE 1:
Au lancement, pas de surprise: un nag qui nous embte effectivement!
Comme d'habitude, il est primordial d'tudier scrupuleusement la cible avant de se lancer.
Il nous dit que le programme est pack avec UPX. Rassurez-vous, c'est le plus simple des
packers, sa routine de dcompression tant toujours la mme il sera facile de le reprer.
Bon ouvrons tout ca dans Olly et voyons ce que ca donne.
La routine d'UPX commence toujours par un PUSHAD qui sauvegarde tous les registres dans
la pile. Le principe est simple: il sauvegarde tous les registres dans la pile puis POP les
registres a nouveau avant de sauter vers l'OEP.
Voila a quoi ressemble cette routine en gnral:
PUSHAD
Blablah
Blablah
POPAD
JMP vers OEP
dbut de la routine
Pour obtenir le programme sous sa forme dcompresse [en mmoire je rappelle], il va falloir
"attendre" que le programme ait atteint le JMP en 40F008 vers l'OEP. On pose alors un
breakpoint sur la ligne du JMP en double-cliquant sur les opcodes et on run (F9). Un step F8
suffit alors pour arriver vers l'OEP en 401640.
Comme le fichier est dcompress en mmoire, on va en faire une "copie" sur le disque dur,
qu'on appelle un dump (opration de dumping). Pour a on peut utiliser LordPE ou bien le
plugin Ollydump (ce qui revient au meme!). Voyons avec LordPE...
On slectionne notre programme et on note au passage l'IMAGEBASE, qui est ici de 400000.
On clique droit et on slectionne Dump Full comme ci-dessous:
On va bien sur enregistrer cette copie dump sur le dur et renommer "dump" ou "dumped":
Tout marche jusqu' maintenant, puisque ImpRec trouve quelque chose et nous et nous le
dit.
Ne nous reste plus qu'a cliquer sur Get Imports, et ceux-ci doivent tre valides comme cidessous:
Valid: YES !
Si tout se passe bien, ImpRec sauvegarde une copie de notre dump appele "dumped_.exe".
Si vous l'essayez, le nouveau fichier dump marche comme une horloge suisse, donc pas de
problme. On peut noter au passage que le fichier CAsciisimple est passe de 16 Kb 72 kb,
d'ou l'intrt du packer.
Vous pouvez maintenant vous amuser a le cracker si le cur vous en dit!
METHODE 2:
La deuxime mthode est moins base sur l'observation de la routine. En effet, il va suffire de
regarder dans la fentre des registres.
Aprs ouverture du CrackMe dans Olly, on arrive sur l'EP (je rappelle, celui du packer et non
du programme-mme). On commence step F8 tout en observant le registre ESP. Des que
sa valeur change [juste aprs le pushAD en 40EEB1 dans notre cas, c'est a dit la premire
ligne], on arrte de faire F8 immdiatement et on se concentre uniquement sur ESP.
On slectionne ESP et on clique droit dessus. On fait Follow in Dump.
On fait ensuite F9 pour excuter le prog, puis on arrive directement sur le JMP prcdent
l'OEP! un F8 suffit pour y arriver. Nous voila a l'OEP, avec un programme dcompress en
mmoire, tout comme au dessus.
On peut ensuite reproduire l'opration de dumping et de reconstruction des imports que l'on
vient de voir.
Conclusion:
On a vu comment unpacker manuellement selon une routine simple et basique, celle d'UPX.
Cette mthode peut s'appliquer a beaucoup de packers simples. Il y a bien sur des packers
trs difficiles.
Aussi rbarbatif qu'il puisse paraitre, l'unpacking prsente souvent un bon dfi pour le
reverser et reste un domaine trs intressant.