Format ELF — Binaires Linux

Format binaire Linux

Structure ELF

ELF Header    : magic bytes (7f 45 4c 46), arch, entrypoint
Program Hdrs  : segments chargés en mémoire (LOAD)
Section Hdrs  : sections pour le linker

Sections importantes :
.text    = code exécutable
.data    = variables initialisées
.bss     = variables non-initialisées (zeroed)
.rodata  = données en lecture seule (strings)
.plt     = Procedure Linkage Table (appels externes)
.got     = Global Offset Table (adresses réelles)
.symtab  = table des symboles (si non strippé)

Commandes utiles

file binary              # type, architecture, stripped ?
checksec binary          # protections
readelf -a binary        # tout : headers, sections
objdump -d binary        # désassembler
nm binary                # symboles (si debug)
strings binary           # chaînes de caractères
strace binary            # syscalls à l exécution
ltrace binary            # appels de bibliothèques
patchelf --set-rpath . binary  # changer rpath (libc custom)