Vous êtes sur la page 1sur 7

30/10/2017

Menu

Tutoriaux

_

Cracking : Manual Unpacking sur UPX

Manual Unpacking : Pratique UPX

Land-Of-Bork0

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 ).

on peut appeler ça la théorie, c'est le mot gentil ). Bon, rejouissez vous, le plus

Bon, rejouissez vous, le plus dur est fait, la pratique, c'est du gateau !

Nous allons commencer par UPX, donc cliquez ici pour telecharger le beau UnPackMe

(By Me).

C'est parti !

 

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

 

I) Analyse du log

II) Trouver l'OEP

I) Analyse du log Photoshop II) Trouver l'OEP III) Dump & modification du PE IV) Reconstruire

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

le log a été compréssé avec UPX, on regarde quand meme avec PEiD (faut dire qu'avec

avec PEiD (faut dire qu'avec ce webmaster sadique, il faut se méfier ). Je ne vous avais pas menti :

sadique, il faut se méfier ). Je ne vous avais pas menti : En fait, je

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 :

30/10/2017

Cracking : Manual Unpacking sur UPX

30/10/2017 Cracking : Manual Unpacking sur UPX Le PUSHAD est présent, le POPAD doit bien y

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 !

en dessous on trouve le JMP qui saute vers l'OEP ! Voila, notez bien l'adresse du

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) :

1 seule fois, on arrive la (en plein sur l''OEP) : Hop la, admirez ce beau

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 :

ferais la démarche sous LordPe. Lancez le, on obtient ça : On a une liste des

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

30/10/2017

Cracking : Manual Unpacking sur UPX

30/10/2017 Cracking : Manual Unpacking sur UPX En cliquant dessus on obtient une liste de toutes

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 :

le fichier dumpé et on tombe sur les infos du PE : Alors, est ce que

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 :

30/10/2017

Cracking : Manual Unpacking sur UPX

30/10/2017 Cracking : Manual Unpacking sur UPX Suivez l'ordre des flèches : 1. Selectionnez votre fichier

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

enfin, cliquez sur FixDump et selectionnez le fichier Dump Voila, l'IAT étant reconstruit, on a donc

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

UnPackMe-dump

alignées, aucune SDR et impossible de placer un BP quand bien meme on trouve la routine !

qui est fonctionnel, seuleument, les sections n'étant pas

exe

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 "Sections" :

et cliquez sur le bouton

exe

30/10/2017

Cracking : Manual Unpacking sur UPX

30/10/2017 Cracking : Manual Unpacking sur UPX C'est le Voffset qui nous importe, on voit que

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é :

par 1000, cliquez sur Savve puis Ok et le tour est joué : (PS : vous

(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 :

il faut quand meme vérifier, donc lancez le avec PEiD : Ca marche, c'est magique !

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

(vous avez le droit de baver dessus pendant 5 min, pas plus ) et cliquez sur

)

et cliquez sur Bon Serial :

30/10/2017

Cracking : Manual Unpacking sur UPX

30/10/2017 Cracking : Manual Unpacking sur UPX Bon, vous aurez tous vu la routine ainsi que

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 :

comme nom et 3 comme sérial. Regardons le résultat : Ce 61 est troublant, d'autant plus

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

suite

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,

deja, la 1ère chose à faire est de convertir en décimal puisque Olly

Bon

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 à

Ce keygenme est tout simple puisqu'il convertit tout

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.

chaque caractères

simplement un caractère en sa valeur ascii

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 :

la cliquez sur Plugin » OllyDump » Dump Debugged process : On tombe sur cette fentre

On tombe sur cette fentre :

30/10/2017

Cracking : Manual Unpacking sur UPX

30/10/2017 Cracking : Manual Unpacking sur UPX Voila, tout est regroupé, la nouvelle valeur de l'EP

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 !

vous avoir enseigné le plus de choses possibles A bientot ! Manual Unpacking : Pratiquer sur