[C / ASM inline] stack nostdlib
|
11-12-2012, 18h18
(Modification du message : 11-12-2012, 18h18 par gruik.)
Message : #2
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C / ASM inline] stack nostdlib
c'est __libc_start_main qui se charge d'initialiser tout le bouzin, arguments compris
à partir du moment où tu as void _start (void) gcc génère automatiquement un prologue (et un épilogue) push rbp/mov rsp,rbp du coup c'est vrai que quand _start prend la main (jeu de mot tordant) on a directement argc dans [rsp] : Code BASH :
sauf qu'en l'occurence _start() commence nécéssairement par un prologue qui décale l'adresse de argc typiquement le fait de déclarer long argc également fait que gcc va sub de la place sur la stack, on en sort pas :p 32 ou 64bits ça ne change rien à l'affaire là, ce qu'il te faudrait c'est un __attribute__((naked)) qui... ne fonctionne pas sur x86/x86_64 ;p la seule solution que je vois c'est donc de récuperer [ebp+x] dans ton long argc déclaré, truc moyennement folichon style : Code C :
évidement ça génère un code un peu dégueu mais il y a peut-être moyen de tourner le truc autrement, à voir Code BASH :
j'ai pas investigué sur **argv en revanche edit: au temps pour moi, *argv est juste derrière (terminé par un null sur 64b) suivi de *envp Code BASH :
f*ckin {gdb,64b} |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[C / ASM inline] stack nostdlib - par Ark - 11-12-2012, 15h59
RE: [C / ASM inline] stack nostdlib - par gruik - 11-12-2012, 18h18
RE: [C / ASM inline] stack nostdlib - par Ark - 11-12-2012, 18h22
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
[ASM] Prologue Epilogue ou comment récupérer sa stack | Junky | 2 | 267 |
31-08-2014, 20h42 Dernier message: octarin |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)