> 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/relro.md).

# RELRO

Relocation Read-Only

RELRO est une **protection pour empêcher l'écriture sur la Global Offset Table** (GOT).&#x20;

Un exécutable lié dynamiquement utilise la GOT pour trouver les fonctions des librairies pendant son exécution.&#x20;

### **Partial RELRO**

RELRO partielle place la **GOT au dessus des variables** du programme dans la mémoire pour la protéger de buffer overflow. Ça **n'empêche pas les écritures arbitraires** (par format string par exemple).

**Activer partielle**

```
gcc -z,relro prog.c -o prog
```

### **Full RELRO**

Full RELRO rend la **GOT complètement read-only** et empêche toute écriture dedans. Au chargement du binaire, toutes les adresses des fonctions sont chargées dans la GOT puis elle est protégée en écriture.

La résolution de tous les symboles au lancement fait que l**es binaires compilés avec Full RELRO** perdent en performance et **sont** **plus lent à démarrer**.

**Activer full**

```
gcc -z,now prog.c -o prog
```
