Stack Frame — Cadre de pile

Concepts ASM

Structure

Un cadre de pile est la zone allouée à une fonction : variables locales, sauvegarde de RBP, adresse de retour. Comprendre sa disposition est la base de l'exploitation de débordement de tampon.

Disposition (x86-64)

Adresses hautes
[ arguments (au-delà de 6) ]
[ adresse de retour (RIP sauvé) ]
[ RBP sauvegardé        ] <- RBP pointe ici
[ variables locales      ]
[ buffer[]               ] <- RSP (sommet)
Adresses basses (la pile croît vers le bas)

Prologue / épilogue

; prologue
push rbp
mov  rbp, rsp
sub  rsp, 0x20      ; réserve locales
; épilogue
leave              ; mov rsp,rbp ; pop rbp
ret                ; pop rip