NewbieContest

Général => Proposition de tutoriaux => Discussion démarrée par: Lascazas le 12 Juillet 2015 à 20:31:36



Titre: Cracking level 2 : Unpacking UPX
Posté par: Lascazas le 12 Juillet 2015 à 20:31:36
Pour ce deuxième tuto, on s'attaque à un petit shareware, un jeu tetris:
https://www.dropbox.com/s/j1gpuu76rakbknb/classical-block_1_6988.exe

On installe et tout.
Quand on lance le prog, on tombe sur ça:
http://image.noelshack.com/fichiers/2012/31/1343823419-0.png (http://image.noelshack.com/fichiers/2012/31/1343823419-0.png)

Donc là on ouvre dans OllyDBG, il nous met un message
"Bla bla bla compressed or encrypted"

Pour voir avec quoi c'est compresser, on va utiliser PEiD
https://www.dropbox.com/s/np35alddhsbv7rp/PEiD-0.95-20081103.rar

On ouvre donc Tetris.exe avec PEiD, et il montre ça:
http://image.noelshack.com/fichiers/2012/31/1343823794-1.png (http://image.noelshack.com/fichiers/2012/31/1343823794-1.png)
C'est compressé avec UPX, un packer très connu et simple.
PEiD possède un Generic Unpacker intégré, mais pour le fun on va faire avec OllyDBG.

On aura besoin du plugin OllyDump pour OllyDBG:
https://www.dropbox.com/s/63s65qo4vsrbipu/OllyDump.dll
Il faut le placer dans le dossier d'OllyDBG, sauf si vous avez précisé un autre dossier pour les plugins.

Donc, on relance avec OllyDBG.
Ca commence sur un PUSHAD.
Ca sauvegarde les registre sur la pile, avant de decompresser le programme.
On va donc descendre plus bas et trouver le POPAD, qui lui, reprend les registres dans la pile quand il a fini de decompresser.
Le voilà un peu plus bas:
http://image.noelshack.com/fichiers/2012/31/1343824377-2.png (http://image.noelshack.com/fichiers/2012/31/1343824377-2.png)
On voit le JMP en bas.
C'est lui qui, une fois que le programme est décompressé, mène à l'OEP (Original Entry Point, bref, le début du programme)

On met un breakpoint dessus avec F2.
On lance avec F9.
Quand il bloque, on appuie une fois sur F8 pour sauter, et on arrive à l'OEP:
http://image.noelshack.com/fichiers/2012/31/1343824569-3.png (http://image.noelshack.com/fichiers/2012/31/1343824569-3.png)
Donc à ce stade, le programme est décompressé en mémoire.
On va dans le menu Plugins > OllyDump > Dump Debugged Process
http://image.noelshack.com/fichiers/2012/31/1343824926-4.png (http://image.noelshack.com/fichiers/2012/31/1343824926-4.png)
On vérifie que Rebuild Imports etc est bien coché avec Method 2, la 1 marche pas dans ce cas ci, on clique sur Dump et on enregistre, Tetris2.exe

On a donc Tetris2.exe, qui est unpacké et fonctionnel.
Ensuite, il faut le cracker... Ce sera dans un autre tuto ;)