recherche de vulnérabilités / 4. le format ELF

Le format ELF

ELF (Executable and Linkable Format) est le format des exécutables, bibliothèques .so et fichiers objets .o sous Linux. On suit où chaque morceau de ce programme atterrit, dans le fichier puis en mémoire.

int g = 5;                     // variable globale initialisée
int z;                         // variable globale non initialisée
int foo(int a, int b) { int c = a + b; return c; }
int main() { foo(5, 6); printf("bye\n"); return 0; }
Du fichier ELF à la mémoire du processus À gauche le fichier sur le disque, à droite l'espace mémoire du processus. Des liens montrent où chaque partie est chargée. Fichier sur le disque Mémoire du processus adresses basses adresses hautes


Sorties de commandes simplifiées, adresses données en exemple (binaire 32 bits non PIE).

vient du fichiercréé à l'exécutionmétadonnéesétape en cours

Sections ou segments ?

Commandes utiles

CommandeCe qu'elle montre
file ./prog32/64 bits, lié dynamiquement ou non, strippé ou non
readelf -hl'ELF header (point d'entrée, architecture)
readelf -l / -Sles segments / les sections
objdump -d -M intelle désassemblage de .text
nm, readelf -sla table des symboles
stringsles chaînes lisibles (souvent dans .rodata)
checksec --file=./progles protections : NX, PIE, RELRO, canary
← 3. Les opcodes5. La pile →