recherche de vulnérabilités

Recherche de vulnérabilités : les bases bas niveau

Récap du cours en 5 animations, x86 32 bits. Elles se lisent dans l'ordre : du processeur jusqu'à la pile, où naissent les buffer overflows.

Fil conducteur du cours Du code C au binaire ELF, chargé en mémoire, exécuté par le CPU avec ses registres, et la pile pendant les appels. Code C foo(5, 6) Opcodes 55 89 E5 … Fichier ELF .text, .data… CPU + registres Pile call, ret Le compilateur traduit en opcodes, rangés dans un ELF, chargé en RAM puis exécuté instruction par instruction.
1

Le CPU et le cycle d'une instruction

ALU, unité de contrôle, RAM, et le cycle fetch, decode, execute, writeback.

2

Les registres x86

EAX, EBX… ESP, EBP, EIP, EFLAGS, et un petit programme pas à pas.

3

Les opcodes

Comment mov ebp, esp devient 89 E5, octet par octet.

4

Le format ELF

Headers, sections, segments, et où chaque morceau atterrit en mémoire.

5

La pile pendant un appel

Arguments, adresse de retour, prologue, leave et ret.

1. Le CPU

2. Les registres

RegistreRôle usuel
EAXaccumulateur, valeur de retour d'une fonction, numéro du syscall
EBXregistre « base », usage général, sauvegardé par l'appelé, 1er argument d'un syscall (int 0x80)
ECX / EDXcompteur (boucles, rep) / données (partie haute de mul, div)
ESI / EDIindex source / index destination des copies mémoire
ESP / EBPsommet de pile / base de la frame courante
EIPadresse de la prochaine instruction (non modifiable directement)
EFLAGSdrapeaux ZF, SF, CF, OF positionnés par l'ALU, lus par les sauts conditionnels

3. Les opcodes

4. Le format ELF

5. La pile