[ASM] Prologue Epilogue ou comment récupérer sa stack
|
26-08-2014, 17h59
Message : #1
|
|
Junky
Snorky Master Messages : 228 Sujets : 35 Points: 203 Inscription : Mar 2013 |
[ASM] Prologue Epilogue ou comment récupérer sa stack
Bonjour,
Bon je me mets doucement à l'ASM afin de pouvoir joujouter avec les crackme. Comme souvent la première chose que l'on apprend c'est le fameux 'Hello world' mais il ne s'agirat pas de lui dans ce petit thread. J'ai dans l'idée de faire un prog ASM qui aura comme fonction de convertir des chaines de char en hexa. Code : The Game Le programme se lancera de la sorte: Code : ./app The Game En parmant un peu sur IRC, aaSSffxxx m'a parlé de 'prologue'. Ne connaissant pas j'ai du RTFM un peu. So en cherchant, il s'avère que ce Proloque n'est qu'en faite une 'nouvelle' stack qui n'effectura aucun chagement sur la stack actuelle. Le prologue est suivi d'un Epilgue qui remet la stack en état après un 'call' Bref un exemple sera le mieux. Code ASM :
Et pour montrer que tout ceci fonctionne voici l'output: Code BASH :
On s'appercoit donc bien qu'a la sortie de notre 'call aff_str2', nous récupérons notre 'ancienne' stack. Voici une première expérience. N'hésitez pas a faire des remarques. Débutant + ou - en ASM, j'ai surement dit/fait des choses pas bien... Junky, Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
26-08-2014, 19h40
(Modification du message : 26-08-2014, 19h41 par gruik.)
Message : #2
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [ASM] Prologue Epilogue ou comment récupérer sa stack
effectivement c'est mieux/plus propre de travailler dans une nouvelle stack frame, le prologue sert précisément à ça, créer une nouvelle stack frame ("cadre de pile" en bon françois, c'est néanmoins assez parlant je trouve), en sauvegardant le pointeur de base précédent (le début de la frame précédente donc) et en mettant le pointeur de base au sommet de la pile (esp)
c'est un peu comme pour construire une tour, on pose un échafaudage, on remplit/construit dans l’échafaudage, on déplace l'échafaudage vers le haut et ainsi de suite... on a l'habitude dans la foulée de soustraire la taille de la nouvelle pile ensuite du pointeur de pile (sub esp, xyz) de manière à allouer une pile en bonne et due forme on manipule alors les données à travers des mov [ebp+toto] (...), tandis que lorsqu'on push une valeur, on empile la valeur à l'adresse d'esp qu'on incrémente, faisant donc grandir la pile, et inversément avec le pop l'épilogue comme tu l'as dit c'est juste l'opération inverse, l'instruction leave se substituant finalement au combo mov esp, ebp; pop ebp;
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
31-08-2014, 20h42
(Modification du message : 31-08-2014, 20h44 par octarin.)
Message : #3
|
|
octarin
Apprenti sorcier Messages : 68 Sujets : 11 Points: 47 Inscription : May 2013 |
RE: [ASM] Prologue Epilogue ou comment récupérer sa stack
J'ai fait l'implémentation assembleur de ton projet de programme qui affiche
l'équivalent hexadécimal d'une chaine de caractère passée en argument. De plus, une astuce: lorsque tu codes en assembleur, tu peux parfaitement utiliser des fonctions de la libc, ce qui facilite le débuggage, nottament pour les fonctions d'entrée-sortie, qui sont fort utiles et qui remplacent les appels systèmes, peu pratiques à manipuler. Code ASM :
Faire des mathématiques c’est donner le même nom à des choses différentes. -- Henri Poincaré
|
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Comment connaitre le language d'un logiciel ou... | ThomasYato | 1 | 111 |
03-08-2019, 08h08 Dernier message: supersnail |
|
[C] Comment protéger la mémoire ??? | Sh4dows | 10 | 546 |
01-05-2013, 11h13 Dernier message: Sh4dows |
|
[C / ASM inline] stack nostdlib | ark | 2 | 207 |
11-12-2012, 18h22 Dernier message: Ark |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)