> For the complete documentation index, see [llms.txt](https://sansong.gitbook.io/cyber/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sansong.gitbook.io/cyber/pwn/protections/aslr.md).

# ASLR

Address space layout randomization

**L'ASLR** **modifie les adresses des segments mémoire d'un programme à chaque exécution.**&#x20;

L'adresse de la pile, du tas et des librairies sont modifiés. Cela permet de rendre la localisation de certains fonctions de la libc (comme `system` par exemple) plus difficile et de se protéger des attaques [ret2libc](/cyber/pwn/stack/ret2libc.md).

Contrairement à [PIE](/cyber/pwn/protections/pie.md) c'est une **protection système** qui n'est pas spécifique à un exécutable.

## Linux

Sur [Linux](https://sysctl-explorer.net/kernel/randomize_va_space/) c'est la variable `kernel.randomize_va_space` qui définie l'ASLR:

* **0:** désactivé
* **1:** activé pour la pile et les librairies
* **2:** activé pour la pile, les librairies et le tas (pour les binaires liés à PIE, l'emplacement du segment `code` est aléatoire)

**Désactiver:**

```
echo 0 > /proc/sys/kernel/randomize_va_space
```

**Activer:**

```
echo 2 > /proc/sys/kernel/randomize_va_space
```

## Windows

Sur Windows, l'ASLR est activé par défaut sur les versions ultérieures à Vista.
