Skip to content

Glossary

Registre RBP

RBP est le pointeur de base/cadre 64 bits de x86-64, qui ancre une référence stable au cadre de pile d'une fonction pour les locales et les arguments.

RBP est un registre général 64 bits de l'architecture x86-64, l'extension de EBP. Par convention, il sert de pointeur de base (pointeur de cadre) : positionné une fois au début d'une fonction sur un point fixe du cadre de pile, il fournit des décalages stables et constants vers les variables locales et les arguments sur la pile, même lorsque RSP se déplace pendant le corps de la fonction.

RBP est sauvegardé par l'appelé (non volatil) dans la System V AMD64 ABI comme dans la Microsoft x64 ABI ; une fonction qui l'utilise doit donc sauvegarder et restaurer la valeur de l'appelant. Il n'est jamais un registre d'argument ni de retour. Les compilateurs modernes omettent souvent le pointeur de cadre (-fomit-frame-pointer) et adressent tout à partir de RSP, libérant RBP comme registre ordinaire — sa présence en tant que pointeur de cadre est donc un signal de style de code, pas une garantie.

Le prologue de cadre classique

asm
push rbp             ; sauvegarde le pointeur de cadre de l'appelant
mov  rbp, rsp        ; établit le nouveau cadre
sub  rsp, 0x30       ; locales
; [rbp-8], [rbp-10h] ... = locales
; [rbp+10h], [rbp+18h] ... = arguments sur la pile
leave                ; mov rsp, rbp ; pop rbp
ret

Ses sous-registres sont ebp, bp et bpl, rarement utilisés directement.

Pourquoi c'est important en rétro-ingénierie

Quand une fonction utilise RBP comme pointeur de cadre, chaque locale et chaque argument possède une adresse [rbp±N] propre et fixe, ce qui rend la disposition de la pile bien plus facile à reconstruire que la forme mouvante [rsp+N]. Reconnaître le prologue push rbp; mov rbp, rsp marque instantanément une frontière de fonction.

Voir le concept général de registre et la référence assembleur. Les changements de gestion des cadres sont traités dans assembleur x86 vs x64. Il s'associe étroitement au registre RSP, le sommet vivant de la pile.