Packer UPX ? et les autres ??
|
15-10-2013, 16h26
Message : #1
|
|
sakiir
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de Messages : 411 Sujets : 51 Points: 34 Inscription : Sep 2012 |
Packer UPX ? et les autres ??
Bonjour j'aurai une petite question à poser concernant les packer !
je suis un peu perdu quand-t-il s'agite de packer , on prend souvent comme exemple UPX mais les autres ??? je ne comprend pas coent ca marche déjà .. j'aimerai pouvoir unpack manuellement n'importe quel type de packer mais quelle est la différence technique ? je parle du POPAD / PUSHAD .. quel est la différence avec les autres ?? j'ai deja posé plus ou moins cette question sur le fofo et sur irc mais j'ai jamais vraiment eu ma réponse , peu être est-ce ma question qui est absurde je ne sais pas :') |
|
15-10-2013, 18h14
(Modification du message : 15-10-2013, 18h15 par supersnail.)
Message : #2
|
|
supersnail
Éleveur d'ornithorynques Messages : 1,609 Sujets : 71 Points: 465 Inscription : Jan 2012 |
RE: Packer UPX ? et les autres ??
Bonjour,
Déjà pour répondre à la question "comment ça marche ?": Un packer n'est ni plus ni moins qu'un exécutable qui a pour but d'en décompresser un autre, qui est stocké quelque part dans le packer. Une fois ceci fait, le packer va "mapper" l'exécutable décompressé correctement en mémoire, c'est-à -dire placer correctement ses sections en mémoire (comme le ferait le loader win32), résoudre "l'import table" qui indique toutes les fonctions dans les DLL externes dont le programme a besoin pour fonctionner, et éventuellement effectuer d'autres actions d'initialisation (comme lire la table des relocations si on a pas pu placer le binaire à l'image base indiquée dans le PE header). Pour se faire, le packer a besoin d'exécuter du code qui n'a pas été "prévu" par le concepteur de l'application packée, et va donc modifier des registres du processeur. C'est donc là qu'intervient nos fameux "pushad"/"popad", instructions assembleur qui vont respectivement sauvegarder l'état des registres sur la pile et restaurer le contenu des registres depuis la pile. On va donc logiquement appeler "popad" lorsqu'on a fini (ou presque) toutes les opérations d'initialisation et passer la main à l'exécutable "unpacké" (correctement initialisé), ce qui permet de trouver généralement l'OEP (pour Original Entry Point). Ensuite, tu peux avoir des packers assez "complexes" qui ont pour but de perdre le reverser (on parle de "protectors" dans ce cas) ou les antivirus dans leur analyse et où trouver un "popad" peut s'avérer assez complexe, et il vaut mieux utiliser dans ce cas l'ESP trick (voir ici, je viens juste de valider le tuto) ou encore repérer où l'exécutable est décompressé dans le packer avant qu'il soit mappé pour le dumper sauvagement, ainsi on chope un .exe directement exécutable (ça marche plûtot pas mal dans les packers utilisés par les malwares, par contre pour les protectors, ça fonctionne moins bien :')). Par ailleurs, il est même possible que le packer ne fasse pas de pushad/popad d'ailleurs, je pense par exemple au packer XPACK assez utilisé il y a quelques temps. Voilà j'espère avoir répondu à tes questions
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
15-10-2013, 21h50
Message : #3
|
|
Loup
Membre actif Messages : 85 Sujets : 8 Points: 8 Inscription : Sep 2013 |
RE: Packer UPX ? et les autres ??
Yop d'ailleurs je pense compléter le tutoriel sur l'ESP Trick quand j'aurai le temps, le problème venait simplement de ma petite olly qui n'était pas très contante à ce momment (VM + Sandboxies)
Je te mp quand j'aurai eu le temps de finir |
|
16-10-2013, 22h01
Message : #4
|
|
sakiir
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de Messages : 411 Sujets : 51 Points: 34 Inscription : Sep 2012 |
RE: Packer UPX ? et les autres ??
C'est simpa merci je l'ai lus !
|
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)