Section courante

A propos

Section administrative du site

Introduction

Le format de fichier ELF, tire son nom de l'anglicisme Executable and Linkable Format, et contient un code exécutable de code compilé destiné aux distributions Linux ou à système d'exploitation Unix. Il peut avoir plusieurs extensions de fichier comme «.axf», «.bin», «.elf», «.o», «.prx», «.so» ou «.exe».

Spécification

Spécification Description
Type Exécutable
Plateforme Linux, Solaris, Unix

Structure d'entête du fichier

Voici la structure d'entête du fichier de format ELF Executable and Linkable Format :

Déplacement (32 bits) Déplacement (64 bits) Description
0 à 3 0 à 3 Ce champ permet d'indiquer le numérique magique de la signature, soit 7Fh, alors «ELF» en ASCII.
4 4 Ce champ permet d'indiquer le format ELF :
Valeur Description
1 Cette valeur permet d'indiquer un 32 bits
2 Cette valeur permet d'indiquer un 64 bits
5 5 Ce champ permet d'indiquer le format des cellules mémoires :
Valeur Description
1 Cette valeur permet d'indiquer un petit-boutiste (Little Endian), soit LSB
2 Cette valeur permet d'indiquer un gros-boutiste (Big Endian), soit MSB
6 6 Ce champ permet d'indiquer la version ELF.
7 7 Ce champ permet d'indiquer l'OS ABI :
Valeur Description
0 Cette valeur permet d'indiquer UNIX System V.
1 Cette valeur permet d'indiquer HP-UX.
2 Cette valeur permet d'indiquer NetBSD.
3 Cette valeur permet d'indiquer Linux.
6 Cette valeur permet d'indiquer Sun Solaris.
7 Cette valeur permet d'indiquer IBM AIX.
8 Cette valeur permet d'indiquer SGI Irix.
9 Cette valeur permet d'indiquer FreeBSD.
10 Cette valeur permet d'indiquer Compaq TRU64.
11 Cette valeur permet d'indiquer Novell Modesto.
12 Cette valeur permet d'indiquer OpenBSD.
64 Cette valeur permet d'indiquer ARM EABI.
97 Cette valeur permet d'indiquer ARM.
255 Cette valeur permet d'indiquer un Standalone.
8 à 15 8 à 15 Ce champ est inutilisé.
16 à 17 16 à 17 Ce champ permet d'indiquer le type de fichier :
Valeur Description
1 Cette valeur permet d'indiquer un fichier repositionable.
2 Cette valeur permet d'indiquer un fichier exécutable.
3 Cette valeur permet d'indiquer un fichier partagé.
4 Cette valeur permet d'indiquer un fichier du coeur du système d'exploitation.
18 à 19 18 à 19 Ce champ permet d'indiquer l'ensemble d'instructions utilisé :
Valeur Description
00h Cette valeur permet d'indiquer une architecture non spécifié.
02h Cette valeur permet d'indiquer une architecture Sparc.
03h Cette valeur permet d'indiquer une architecture 80x86.
08h Cette valeur permet d'indiquer une architecture MIPS.
14h Cette valeur permet d'indiquer une architecture PowerPC.
28h Cette valeur permet d'indiquer une architecture ARM.
2Ah Cette valeur permet d'indiquer une architecture SuperH.
32h Cette valeur permet d'indiquer une architecture IA-64.
3Eh Cette valeur permet d'indiquer une architecture x86-64.
B7h Cette valeur permet d'indiquer une architecture AArch64.
20 à 23 20 à 23 Ce champ permet d'indiquer la version ELF.
Valeur Description
0 Cette valeur permet d'indiquer aucune.
1 Cette valeur permet d'indiquer la version actuelle.
24 à 27 24 à 31 Ce champ permet d'indiquer la position de l'entrée du programme.
28 à 31 32 à 39 Ce champ permet d'indiquer la position de la table d'entête du programme.
32 à 35 40 à 47 Ce champ permet d'indiquer la position de la table d'entête de section.
36 à 39 48 à 51 Ce champ permet d'indiquer les options spécifique à l'architecture.
40 à 41 52 à 53 Ce champ permet d'indiquer la taille de l'entête.
42 à 43 54 à 55 Ce champ permet d'indiquer la taille d'une entrée dans la table d'entête du programme.
44 à 45 56 à 57 Ce champ permet d'indiquer le nombre d'entrées dans la table d'entête du programme.
46 à 47 58 à 59 Ce champ permet d'indiquer la taille de l'entrée dans la table d'entête de section.
48 à 49 60 à 61 Ce champ permet d'indiquer le nombre d'entrées dans la table d'entête de section.
50 à 51 62 à 63 Ce champ permet d'indiquer l'index de la table d'entête de section avec les noms de section.

Code source

Voici des exemples de code source d'utilitaires pour manipuler les .ELF :

Lien Langage de programmation Description Projet Syntaxe
FROMELF.PAS Free Pascal, Turbo Pascal Cette commande permet d'analyser un ELF. Corail FROMELF


Dernière mise à jour : Dimanche, le 14 février 2016