Вы находитесь на странице: 1из 7

30/10/2017 Cracking : Manual Unpacking sur UPX

Menu  Manual Unpacking : Pratique UPX Land-Of-Bork0


News
_

Forum Hey ! Content de voir que vous n'êtes pas mort après des longues lignes de
supplices cérébrales (ou on peut appeler ça la théorie, c'est le mot gentil ).
Liens
Bon, rejouissez vous, le plus dur est fait, la pratique, c'est du gateau !

Outils Nous allons commencer par UPX, donc cliquez ici pour telecharger le beau UnPackMe
(By Me).
Livre d'or

Tutoriaux
C'est parti !
Flash Decompiler
------------------------------------------------------------------------
Cracking
I) Analyse du log
Photoshop II) Trouver l'OEP
III) Dump & modification du PE
IV) Reconstruire l'IAT
V) Realigner les sections
VI) A l'assaut du keygenme
VII) Unpacking avec OllyDump !

-------------------------------------------------------------------------

I) Analyse du log :

Meme si on sait que le log a été compréssé avec UPX, on regarde quand meme
avec PEiD (faut dire qu'avec ce webmaster sadique, il faut se méfier ). Je ne
vous avais pas menti :

En fait, je l'ai compréssé avec la dernière version d'UPX qui est la 1.93, mais
comme c'est une beta, elle garde encore la meme signature que l'ancienne, mais
bon, ca ne change fondamentalement pas grand chose. On pourrait se servir de
PEiD pour detecter pas mal d'info sur le PE (comme l'ImageBase, BaseOfCode,
l'EP) mais on va de toute façon le decouvrir par la suite donc ne pressons pas les
chose !

Bien, lancez Olly et c'est parti pour la 2° partie.

II) Trouver l'OEP avec Olly !

Ok, bon deja commencez par regarder les SDR, vous ne verrez rien, c'est normal.

Alors, on tombe ici :

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 1/7
30/10/2017 Cracking : Manual Unpacking sur UPX

Le PUSHAD est présent, le POPAD doit bien y etre aussi, cherchons donc (n'ayez
pas peur de descendre vite, le POPAD se situe assez loin du log, juste avant les DB
00), et comme par magie, en 407A3D on trouve un beau POPAD ! Et encore
mieux, 6 lignes en dessous on trouve le JMP qui saute vers l'OEP !

Voila, notez bien l'adresse du JMP 00401220, ca pourrait nous resservir ;)

Bon Posez un BP sur le JMP (F2), lancez le debugger (F9) et faites Step Into (F7) 1
seule fois, on arrive la (en plein sur l''OEP) :

Hop la, admirez ce beau PUSH qu'est notre OEP ! Bon, 3° étape.

III) Dump & modification du PE :

Laissez Olly comme ça, on va maintenant copier le beau programme decypté en


mémoire dans un fichier, pour cela il vous faut soit LordPE, soit ProcDump. lordPe
est mieux, mais il est possible qu'il ne marche pas sur certains ordinateurs. Je
ferais la démarche sous LordPe.

Lancez le, on obtient ça :

On a une liste des processus actifs, le but sera de trouver le UnPackMe, cherchons
un peu et hop, trouvé :

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 2/7
30/10/2017 Cracking : Manual Unpacking sur UPX

En cliquant dessus on obtient une liste de toutes les dll utilisées. bon faites un clic
droit sur le processus du unPackMe et faites "dump full" , enregistrez le sous
UnPackMe-dump.exe. Le dump est fini, maintenant, on va s'occuper du PE afin de
modifier l'EP. Toujours dans LordPe, cliquez sur le bouton "PE Editor". Selectionnez
le fichier dumpé et on tombe sur les infos du PE :

Alors, est ce que vous vous rappelez quel soustraction il faut faire pour obtenir le
bon EP ?

Allez, une petite aide, on fait : OEP - ImageBase. l'OEP, vous avez du la noter sur
un petit bout de papier et l'image base vous l'avez devant les yeux. Bon pour faire
la soustraction, on pourrait utiliser la calculette scientifique en mode hexadécimale
mais la c'est vraiment trop facile :

00401220 - 00400000 = 1220.

Ok, donc changez la valeur actuelle de l'EP par 00001220. Cliquez sur "save" puis
ok. vous pouvez fermer LordPe ainsi que Olly. Place a la reconstruction de l'IAT !

IV)Reconstruction de l'IAT :

Après la théorie, vous devez vous attendre au pire, mais rassurez vous, rien de
bien méchant. Lancez ImpRec puis lancez votre fichier .exe dumpé (ne faites pas
attention à la grosse erreur, laissez le ouvert) ! Dans la ListBox "Attach to an
active process" cliquez sur UnPackMe-dump.exe :

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 3/7
30/10/2017 Cracking : Manual Unpacking sur UPX

Suivez l'ordre des flèches :

1. Selectionnez votre fichier dans la ListBox


2. Dans la case OEP, mettez le bon OEP (1220) si ce n'est déjà fait
3. Cliquez sur IAT AutoSearch
4. Cliquez sur Get Imports
5. Et enfin, cliquez sur FixDump et selectionnez le fichier Dump

Voila, l'IAT étant reconstruit, on a donc un nouveau fichier se nommant


UnPackMe-dump_.exe qui est fonctionnel, seuleument, les sections n'étant pas
alignées, aucune SDR et impossible de placer un BP quand bien meme on trouve la
routine !

V) Réaligner les sections

Pour faire cette manip, il vous faut obligatoirement LordPe. Lancez le et cliquez sur
PE Editor, choisissez le fichier UnPackMe-dump_.exe et cliquez sur le bouton
"Sections" :

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 4/7
30/10/2017 Cracking : Manual Unpacking sur UPX

C'est le Voffset qui nous importe, on voit que le Voffset de la 1ere section est égal
à 1000 et que celui de la 2° section est égal à 7000, or jusqu'a présent 1000 <
1220 < 7000. Notre EP est donc dans la 1ere section, on va changer la valeur de
BaseOfCode en mettant 1000. Fermez cette fenettre et revenez au PE, remplacez
la valeur de BaseOfCode par 1000, cliquez sur Savve puis Ok et le tour est joué :

(PS : vous aurez remarqué que l'ancienne valeur correspondait au Voffset de la 2°


section)

C'est fini !

Oura, on l'a vaincu, mais il faut quand meme vérifier, donc lancez le avec PEiD :

Ca marche, c'est magique ! Au passage, la taille de l'exe a considérablement


augmenté (de 5 Ko à 40 Ko). c'est le désavantage de l'unpacking...

VI) A l'assaut de l'UnPackMe unpacké !

Pour ceux qui ne se seraient pas encore pendu, je vous propose de finir ce petit
keygenme (on ne peut plus dire UnPackMe maintenant ). Lancez le avec Olly,
regardez ces SDR tant désirées (vous avez le droit de baver dessus pendant 5
min, pas plus..) et cliquez sur Bon Serial :

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 5/7
30/10/2017 Cracking : Manual Unpacking sur UPX

Bon, vous aurez tous vu la routine ainsi que le saut conditionel, sans plus
attendre, posez un BP sur le CMP qui suit la routine, rentrez "a" comme nom et 3
comme sérial. Regardons le résultat :

Ce 61 est troublant, d'autant plus que si on tape b on obtient 62 et ainsi de


suite...Bon deja, la 1ère chose à faire est de convertir en décimal puisque Olly
affiche les valeurs numériques en hexadécimal. Vous pouvez le faire avec la
calculatrice de windows, ca donne 97. Ceux possédant une petite connaissance sur
le sujet (notamment, ceux qui font de la prog) auront compris, quand aux autres,
il s'agit en fait de la table Ascii. Je vous avait deja expliqué son fonctionnement
danns un autre cours mais en gros, c'est la valeur numérique qui correspond à
chaque caractères... Ce keygenme est tout simple puisqu'il convertit tout
simplement un caractère en sa valeur ascii... Si vous mettez en pseudo ab, le
sérial sera valeur ascii a + valeur ascii b. Rien de bien compliqué, c'est pourquoi je
ne vous mettrais aps le code source de la soluce tellement c'est simpliste.

Bon, nous avons vaincu à plat de couture ce UnPackMe, voyons voir comment le
unpacker avec OllyDump !

VII) La Puissance d'OllyDump !!!

Bon, vous avez normalement du installer le plugin (si ce n'est pas le cas, relisez le
début de la théorie), voyons comment s'en servir. Ouvrez avec Olly le UnPackMe
original, placez un BP sur le JMP, faites F9 puis F7 et la cliquez sur Plugin »
OllyDump » Dump Debugged process :

On tombe sur cette fentre :

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 6/7
30/10/2017 Cracking : Manual Unpacking sur UPX

Voila, tout est regroupé, la nouvelle valeur de l'EP ainsi que l'ancienne, la méthode
pour reconstruire l'iat (rebuild imports) et BaseOfCode ainsi que les sections. Tout
d'abord, cliquez sur GET EIP as OEP puis remplacez la valeur de BaseOfCode par la
bonne valeur, à savoir 1000 et cliquez sur dump. Enregistrez le sous UnPackMe-
ollydump.exe. Fermez Olly et refaites toutes les vérifications de tout à l'heure, à
savoir PEid, SDR et poser un BP, tout marche, c'est magique. Vive OllyDump !!!

Voila, ce cours s'arrete ici, je pense avoir tout évoquer et j'espère vous avoir
enseigné le plus de choses possibles A bientot !

Manual Unpacking : Pratiquer sur UPX /

RETOUR EN HAUT / INDEX DU CRACKING / INDEX DU SITE / FORUM

http://bork0.dl2.free.fr/php/cracking/manual-unpacking_upx.php 7/7

Оценить