Voici le 1er exercice d'une série consacrée à l'unpacking, que j'avais envie de faire depuis longtemps. Cela s'adresse aux débutants n'ayant jamais osé regarder un programme compressé (et aux autres qui ont envie de s'amuser :p). Le but est de comprendre le fonctionnement d'un loader simple et de se familiariser avec l'unpacking en général.
Pourquoi avoir codé un packer au lieu de proposer un UPXUnpackMe ?
Eh bien, d'abord, j'ai fait en sorte que le loader soit le plus clair possible pour que OllyDbg puisse afficher un maximum d'informations et que vous puissiez identifier facilement les différentes parties du loader.
De plus, vous ne trouverez aucun tut sur ce packer! :p Donc vous devrez vous adapter à partir des divers tuts d'unpacking. Ce qui implique une compréhension de la technique de base.
Et puis pour la suite, ça me permettra de proposer des niveaux qui ciblent un aspect particulier de l'unpacking sans être obliger de se taper des Ko d'antidebug de toutes sortes.
Cela dit, je ne vais pas sortir un niveau toutes les semaines! :p Je vais essayer d'en sortir un tous les 1 ou 2 mois (Ben oui, faut le temps de les faire! :p).
J'aimerai arriver à regrouper une base de défis et de tuts, présentant les différentes protections que l'on trouve couramment dans les packers/protectors mais sans être liées à un packer en particulier. Bref du Reverse Engineering et pas de l'unpacking de sauvage à la "Trace-SFX-et-OEP-après-12-exceptions". :p
Enfin, c'est un gros morceau, ça va être long mais j'espère arriver à proposer une dizaine de niveaux. :) (Enfin, après ça dépend si ça intéresse ou pas :p)
Pour cet exercice, nous allons voir les bases de l'unpacking (Localisation de l'OEP + Dump + reconstruction des imports) sur un packer très simple.
Vous avez 4 objectifs à remplir :
J'insiste sur l'intérêt de rédiger une solution, car cela permet de bien comprendre ce que l'on a fait et de revenir sur des points que l'on a pas bien compris et que l'on a préféré ignorer. Vous n'êtes pas obligé de rédiger un tut de 32 pages, un simple petit txt suffit aussi. :) J'insiste aussi sur le fait de poser des questions si vous êtes bloqués! :)