NewbieContest

Divers => Cracking => Discussion démarrée par: capitaine le 06 Janvier 2007 à 22:38:53



Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 06 Janvier 2007 à 22:38:53
lut!

voila ayant bloqué sur le crackme 8(Désarmant !), je me suis interressé à l'unpacking manuel.
J'ai donc vu pas mal de tuto la dessus dont ceux pour upx. j'ai donc suivis celui ci, qui est très clair http://deamonftp.free.fr/deamoncrack/Tuts/Kef/UPX/Cours%20upx.htm

j'ai pas utilisé le crackme qu'il propose mais un utilitaire bidon compressé ensuite.
une fois le tuto appliquer je charge le dump dans olly et la quand je fais search for->all referenced text strings ya quedal  http://img176.imageshack.us/img176/5614/videin7.jpg

j'ai cherché vite fait mais pas moyen de trouver. la reconstruction de l'iat a l'air bonne parceque les fonctions sont bien là


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 06 Janvier 2007 à 23:10:36
autant pour moi j'avais pas vu l'épreuve appelé unpack.  c'est exactement la même chose en plus.
seulement là j'ai pus voir les chaines de caractères! tant mieux
conclusion: ca vient alors de l'utilitaire que j'ai compressé. il s'agit de Start Menu cleaner choper sur le site de crack de pifoman.
si quelqu'un est motivé pour faire la manip et me dire si chez lui ca marche :/  .

j'ai oublié de préciser que quand j'ouvrais le dump avec olly j'ai cette avertissement  http://img176.imageshack.us/img176/756/unpackupxrg1.jpg
(idem pour le crackme8 d'**orthographe !**). or avec le crackme unpack (même méthode) ya pas eu de soucis
:?::?:


Titre: probleme d'unpack manuel (upx)
Posté par: cristian02 le 06 Janvier 2007 à 23:29:39
pour l'upx le mieux c'est le plugin de peid sinon à la main ça se décompresse en deux seconde tu cherches le pushad en bas tu met un breakpoint memory on access sur le jump et tu dump avec lordpe et imprec pour l iat ni ça te met une minute à le faire

avec ollydump ça marche pas toujours suivant la version de upx et surtout décoche la fonction pour reconstruire directement l iat  et de toutes façons habitues toi a travailler avec lordpe pour le dump et imprec pour l iat


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 06 Janvier 2007 à 23:39:34
ouai t'inquiètes j'ai fais exactement comme dans le tuto que j'ai indiqué plus haut. D'**orthographe !** le crackme d'unpack proposé sur le site, je l'ai fait vite fait. Mais je capte pas pourquoi ca marche pas avec le logiciel que j'ai indiqué c'est tout.
testez vous verrez bien si vous arrivez ou non au même message d'avertissement que moi. Je parie que vous n'aurez aucune string reference ;)


Titre: probleme d'unpack manuel (upx)
Posté par: cristian02 le 07 Janvier 2007 à 00:30:00
je viens de le décompresser ton upx en une seconde il est en visual basic et donc il faut rentrer dans le champ Visual basic avec le V majuscule

pour ce qui est des strings je te rappelle que dans un crackme on ne va pas te donner le pass écrit en toutes lettres bien souvent il faut faire des opérations avec les valeurs des registres pour trouver un algoritme ou un passe parfois il faut faire du déhashage ne croit pas que c'est aussi simple que de regarder les strings.Et l'upx c'est le packer le plus simple que tu rencontreras

alors je te souhaite bonne chance mais très franchement c'est la bonne méthode que tu es en train de suivre que de lire ces tutoriaux d'autant plus que celui-là est pas mal


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 07 Janvier 2007 à 01:14:35
Citation de:  cristian02
je viens de le décompresser ton upx en une seconde il est en visual basic et donc il faut rentrer dans le champ Visual basic avec le V majuscule
tu as du mal me comprendre ou alors je me suis mal expliqué comme d'hab =) . Je sais pas ce que tu as decompressé mais  c'est pas le même dont je parle. Si tu fais reference au crackme du tuto, de kef et bien je sais pas comment tu l'as eu parceque je l'ai pas trouvé.
c'est donc pour cette raison que j'ai essayé l'unpacking manuel sur un autre programme (startClean), et me demande pas pourquoi j'ai choisis ce prog, j'en sais trop rien.

pour ce qui est des string data et bien je t'explique, quand le prog n'est pas packé je peux les voir mais quand je le compresse avec upx ya plus rien (ok c normal on est d'accord).
a partir de là j'applique le cours de kef mais arrivé au bout ca marche pas tout a fait car je vois pas les string references, or c'est un peu le but de la manoeuvre   ici ;)

voila j'espere que je suis a peu près clair dans mes propos, dites moi sinon ya pas de soucis =)


Titre: probleme d'unpack manuel (upx)
Posté par: cristian02 le 07 Janvier 2007 à 01:39:13
si tu ne vois pas les strings c'est parceque tu l'as mal decompressé:le breakpoint sur le jump met le en memory on access apres tu fais f9
et tu dump

c est pas la peine de reconstruire l iat le seul dump te permet de voir les strings ça devrait marcher


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 07 Janvier 2007 à 01:40:07
Bah tant qu'a changé d'EntryPoint pourquoi ne pas changé de BaseOfCode :wink:

Rho et puis je me lance sur l'edit, tant que faire se peut :
>ancien post déleté, oui je suis un gentil ! Rappel :
"Je risque le double post. Demain je deleterais, ne vous inquietez pas les modos.
Ton ancien EntryPoint pointait dans la bonne section. Maintenant qu'il a changé, il a également changé de section d'où l'alert. D'où le changement du BaseOfCode.
J'ai pas été explicite c'est vrai."


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 07 Janvier 2007 à 01:57:53
tiens t'as changé de pseudo?
bon en tout cas merci pour l'info du BaseOfCode, je vais me renseigner la dessus. mais je comprends pas pourquoi elle est modifié? normalement upx ne touche qu'à l'oep d'après ce que j'ai lu.

au fait,  je capte pas le debut de ton post  :D je sais pas si ca me concerne ou pas


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 07 Janvier 2007 à 02:08:50
Citation de: capitaine
tiens t'as changé de pseudo?
bon en tout cas merci pour l'info du BaseOfCode, je vais me renseigner la dessus. mais je comprends pas pourquoi elle est modifié? normalement upx ne touche qu'à l'oep d'après ce que j'ai lu.

au fait,  je capte pas le debut de ton poste  :D je sais pas si ca me concerne ou pas
Ha pour le changement de pseudo faut demandé à S0S0, il m'a presque obligé par la force! Oui quoi, je dis n'importe quoi?!
Thanks S0S0.
Sinon : http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
Ca pourra t'aider........++

Et de trois !


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 07 Janvier 2007 à 02:18:53
ok merci pour le liens je vais lire ca demain desormait. je calcul plus rien là et même si je suis pas mauvais en anglais, ca va rentrer par les yeux mais ca va etre mal interpréter par le cerveau...c'est l'appel de l'oreiller :D


Titre: probleme d'unpack manuel (upx)
Posté par: skilLa le 07 Janvier 2007 à 11:25:54
Pourquoi vouloir toucher au PE. Pour upx tu fais comme ca ete dit avant, ou tu telecherge upx il decrompresse aussi les executables packes avec lui. Si ton dump est fonctionnel et que tu vois pas de str c'est peut etre qu'il y en a pas, ou elles sont encodees, ou bien ton w32dasm ne les detecte pas. Et on ne reverse pas avec les strs, il va falloir penser a changer de methode.


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 07 Janvier 2007 à 15:17:58
Citation de: skilLa
Pourquoi vouloir toucher au PE. Pour upx tu fais comme ca ete dit avant, ou tu telecherge upx il decrompresse aussi les executables packes avec lui. Si ton dump est fonctionnel et que tu vois pas de str c'est peut etre qu'il y en a pas, ou elles sont encodees, ou bien ton w32dasm ne les detecte pas. Et on ne reverse pas avec les strs, il va falloir penser a changer de methode.
Bah, à moins que je me trompes, OllyDbg utilise sa fonction : _FindStrings pour trouver des stringsdata.
Bien qu'il utilise l'oep, il se sert du BaseOfCode+ImageBase comme addresse mémoire à lire.
Voici OllyDbg qui debugge OllyDbg :
(http://img214.imageshack.us/img214/3531/chillymeyt1.png)
En rentrant dans la fonction, on voit qu'il fait appel à _Readmemory avec comme paramètre : le BaseOfCode+ImageBase
Disasm :
0047058A  |>  6A 01         PUSH 1                                   ; /Arg4 = 00000001
0047058C  |.  8B55 0C       MOV EDX,DWORD PTR SS:[EBP+C]             ; |
0047058F  |.  52            PUSH EDX                                 ; |Arg3
00470590  |.  56            PUSH ESI                                 ; |Arg2
00470591  |.  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]            ; |
00470594  |.  51            PUSH ECX                                 ; |Arg1
00470595  |.  E8 720DFFFF   CALL Copie_de._Readmemory                ; \_Readmemory
Stack :
00128738   008F8FB0  |Arg1 = 008F8FB0 ASCII "ð­º"...
0012873C   00477000  |Arg2 = 00477000  <<<<<<<<<<<BaseOfCode+ImageBase
00128740   00015000  |Arg3 = 00015000   <<<<<<<<<<<VirtualSize of pseudo-.Code_section
00128744   00000001  \Arg4 = 00000001

On peut donc en conclure que OllyDbg cherche les stringsdata avec le BaseOfData. Or l'entrypoint doit se trouver entre BaseOfCode et BaseOfCode+sa Virtual Size.
Dans le cas d'upx, la section .code qui contient le loader se trouve être UPX1. Lorsque tu dump le fichier et reconstruit l'iat, si tu ne changes pas le BaseOfData qui pointe toujours sur UPX1 en UPX0 (qui contient le code unpacked), OllyDbg ne cherchera les stringsdata qu'à partir de UPX1.
C'est pourquoi d'ailleurs qu'il y a des plugins qui ont été fait qui scannent l'entièreté du binaire.
Donc ce n'est donc pas (ou en tout cas pas seulement) une question d'encryption ou de protection.
En parlant de module, si tu ne changes pas de BaseOfData quand tu rentres dans la fenêtre des modules avec OllyDbg et que tu double clique sur notre binaire, tu verra qu'Ollydbg te redirige sur : ImageBase+BaseOfCode donc sur la mauvaise section.
J'éspère que sur la v2, une option sera rajoutée permettant d'analyser direct la section où se trouve l'entrypoint.
M'enfin si je me trompes dites-le moi c'est possible.
++


Titre: probleme d'unpack manuel (upx)
Posté par: alph1 le 07 Janvier 2007 à 16:29:16
Merci Kowasu pour ce post : une vraie pépite (je l'ai sauvegardé dans mon répertoire tutorial).
J'en profite pour te remercier plubliquement pour tous les crackme que tu nous as concoctés !
Ils sont tous plus délirants les uns que les autres avec une mention spéciale pour les crackme18 et 22.
A quand la suite ?


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 07 Janvier 2007 à 16:48:36
Haaaan, comment veux-tu que je réponde à ca moi :?:
Pour l'information, il n'y a pas de quoi ^^ mais bon tu peux trouver les infos sur le net en cherchant bien bien.
Puis pour les crackmes, ben ils ne sont pas exeptionnels, loin de là :!:
Pour la suite, bah je suis en train de concocter un S0 Special depuis **No Sms** mois, alors faut être patient.
Vala, ++


Titre: probleme d'unpack manuel (upx)
Posté par: cristian02 le 07 Janvier 2007 à 17:02:41
je pense qu'en utilisant le plugin olly ULTRASTRING REFERENCE on n'a pas besoin de modifier quoi que ce soit il recupère les strings de toutes les sections


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 07 Janvier 2007 à 17:13:21
Citation de: cristian02
je pense qu'en utilisant le plugin olly ULTRASTRING REFERENCE on n'a pas besoin de modifier quoi que ce soit il recupère les strings de toutes les sections
Yep c'est ce que j'ai dit plus haut :
"C'est pourquoi d'ailleurs qu'il y a des plugins qui ont été fait qui scannent l'entièreté du binaire."
M'enfin c'est relou pour toi car tu ne peux pas analysé le module : ctrl+n
Donc moi je te conseille plutot de prendre l'habitude de modifier soit avec LordPE soit tu travailles avec le plugin : OllyDump (http://www.openrce.org/downloads/download_file/108)
>OllyDump, il te fait tout sauf le changement du BaseOfCode et le BaseOfData > mais il t'affiche des edits pour les modifiers. C'est pas beau la vie?

++


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 07 Janvier 2007 à 20:10:31
Citation de:  skilLa
Pourquoi vouloir toucher au PE. Pour upx tu fais comme ca ete dit avant, ou tu telecherge upx il decrompresse aussi les executables packes avec lui.
je connais pas grand chose au cracking encore, mon but c'est d'apprendre le plus possible(pour ca les vancances c ** baballe ;) ), donc j'ai aucun interet à utiliser upx pour decompresser le prog. je l'ai compressé exprès pour faire de l'unpack manuel lol.

Citation de:  skilLa
Si ton dump est fonctionnel et que tu vois pas de str c'est peut etre qu'il y en a pas, ou elles sont encodees, ou bien ton w32dasm ne les detecte pas.
si ya des string lorsqu'il n'est pas packé! d'ou l'info indispensable de Kowasu à propos du BaseOfCode. je me suis pas encore penché la dessus mais ca ne saurait tarder =)

j'ai compris que partiellement ton explication Kowasu mais c'est bien un problème de section. j'ai modifier la valeur baseofcode et ca m'a permis effectivement d'avoir les strings par la suite. ;)
concernant la doc du lien microsoft elle est plutot conséquente dit moi =), ca m'a fait peur donc j'ai cherché un équivalent en francais que j'ai dl, mais comme un abruti j'ai zappé de sauvegarder l'adresse du site :evil: , si je le retrouve je balance le lien.
enfin du coup je suis tombé sur ca par la suite http://mimasgpc.free.fr/wiki/doku.php?id=info:reverse:defi_pe  ca pourra interesser ceux qui connaissait pas. pour moi c'est trop hardcore


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 08 Janvier 2007 à 01:39:21
Citation de: capitaine
j'ai compris que partiellement ton explication Kowasu mais c'est bien un problème de section.
Mince, j'ai merdé où?


Titre: probleme d'unpack manuel (upx)
Posté par: capitaine le 08 Janvier 2007 à 02:25:41
Citation de:  Kowasu
On peut donc en conclure que OllyDbg cherche les stringsdata avec le BaseOfData
la manière dont tu conclus ca :lol: mais t'inquiètes c'est normal, ca fait beaucoup d'info tous ca. c'est encore confu sous ma casquette de capitaine


Titre: probleme d'unpack manuel (upx)
Posté par: Kowasu le 08 Janvier 2007 à 02:51:20
Ben en faite, c'est pour enlever le doute qui pourrait peser : OllyDbg ne cherche pas les stringsdata avec le voffset de la section où se trouve l'entrypoint.