Le Laboratoire Virtuel & Terminal Pratique est en ligne :

Ouvrir le Labo
Volume 1 : Fondations Informatiques & Laboratoire Isolé/Module 2 : Fondamentaux Matériels, OS & Laboratoire Isolé

Architecture Matérielle, Mémoire RAM, CPU & Systèmes d'Exploitation

Labo Virtuel >_

Architecture Matérielle, Mémoire & Systèmes d'Exploitation



Pour comprendre comment les exploits de sécurité (dépassements de tampon, élévations de privilèges) fonctionnent au niveau le plus bas, il est indispensable de maîtriser l'architecture des ordinateurs selon le modèle de Von Neumann.

---

1. Le Modèle de Von Neumann & le Processeur (CPU)



Un processeur moderne (x86_64 ou ARM64) exécute des millions d'instructions élémentaires par seconde selon le cycle continu : FETCH (Lecture) -> DECODE (Décodage) -> EXECUTE (Exécution) -> STORE (Écriture).

`` +-----------------------------------------------------------+ | UNITÉ CENTRALE (CPU) | | +---------------------+ +----------------------+ | | | Unité de Contrôle | | Unité Arithmétique | | | | (Instruction Point.)| | et Logique (ALU) | | | +---------------------+ +----------------------+ | | +-------------------------+ | | | Registres (RAX, RBX...) | | | +-------------------------+ | +-----------------------------------------------------------+ | Bus Système (Data / Address) +-----------------------------------------------------------+ | MÉMOIRE CENTRALE (RAM) | | [ Pile (Stack) ] [ Tas (Heap) ] [ BSS ] [ Data ] [ Code ]| +-----------------------------------------------------------+ `

Les Registres CPU Majeurs en architecture 64 bits (x86_64) :

* RIP (Instruction Pointer) : Pointeur sur la prochaine instruction en langage machine à exécuter. Sa prise de contrôle par un attaquant permet de détourner le flux d'exécution du programme. * RSP (Stack Pointer) : Pointeur sur le sommet de la pile mémoire (Stack). * RBP (Base Pointer) : Pointeur sur la base du cadre de pile (Stack Frame) de la fonction courante. * RAX, RBX, RCX, RDX : Registres de travail généraux pour le calcul arithmétique et le stockage temporaire de valeurs de retour de fonctions.

---

2. Organisation de la Mémoire Virtuelle d'un Processus



Lorsqu'un exécutable est lancé sous Linux ou Windows, le système d'exploitation lui alloue un espace d'adressage virtuel découpé en plusieurs segments distincts :

` Adresse Haute (0x7FFFFFFFFFFF) +-----------------------------------------------+ | Arguments du programme & Variables d'env. | +-----------------------------------------------+ | PILE (STACK) : Variables locales, adresses | | de retour de fonctions (Grandit vers le bas) | | | | | v | | | | ^ | | | | | TAS (HEAP) : Allocations dynamiques malloc() | | (Grandit vers le haut) | +-----------------------------------------------+ | BSS : Variables globales non initialisées | +-----------------------------------------------+ | DATA : Variables globales et statiques init. | +-----------------------------------------------+ | TEXT (.code) : Instructions machine (Lecture) | +-----------------------------------------------+ Adresse Basse (0x000000000000) `

Mécanismes de Protection Mémoire Modernes :

1. ASLR (Address Space Layout Randomization) : Aléatorise l'emplacement en mémoire de la pile, du tas et des bibliothèques partagées à chaque exécution pour compliquer les attaques par débordement de tampon. 2. DEP / NX (Data Execution Prevention / No-Execute bit) : Marque les zones de données (Pile et Tas) comme non-exécutables pour empêcher l'exécution d'un shellcode injecté. 3. Stack Canaries : Valeurs aléatoires placées sur la pile juste avant l'adresse de retour. Si un débordement écrase le canari, le noyau termine immédiatement le processus (
Stack smashing detected).

---

3. Espace Noyau (Kernel Space) vs Espace Utilisateur (User Space)



Le processeur sépare l'exécution en plusieurs anneaux de privilèges (Rings) : * Ring 0 (Kernel Space) : Privilège maximal. Accès direct aux périphériques matériels, à la table des pages mémoire et aux registres système. Le noyau Linux s'exécute en Ring 0. * Ring 3 (User Space) : Privilège restreint. Vos programmes Python, votre navigateur et le terminal s'exécutent en Ring 3. Pour écrire un fichier ou ouvrir un socket réseau, le programme doit obligatoirement formuler un Appel Système (Syscall) au noyau via l'instruction assembleur
syscall`.
Informations
Formatarticle
Durée40 min
StatutEn cours
Laboratoire Virtuel Pratique

Pratiquez cette le?on dans le Terminal Linux et l'ex?cuteur WebAssembly Python en direct.

Ouvrir dans le Labo >_