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

# NX

No eXecute

**NX (No eXecute)** dissocie les zones mémoires contenant des instructions assembleurs de celles contenant des données nécessaires à l'exécution.

Elle permet de rendre des zones mémoires **non exécutable**. Le processeur ne peut alors pas exécuter du code se situant dans une zone mémoire protégée. Si une tentative d'exécution à lieu, une alerte (segmentation fault) est déclenchée.

Pour se protéger des buffers overflow on peut par exemple rendre la pile non exécutable pour empêcher l'exécution d'un shellcode.

**Désactiver la protection pour la pile:**

```
gcc program.c -o program -z execstack
```
