Hva er ELF-filformatet?
Filer med filendelsen .elf lagrer binære data strukturert i henhold til standarden Executable and Linkable Format - standardformatet for kjørbare filer og objektfiler for Linux, de fleste Unix-lignende systemer og mange innebygde plattformer. Formatet ble introdusert med Unix System V Release 4 av Unix System Laboratories og senere ratifisert som en Tool Interface Standard (TIS) portabel spesifikasjon.
ELF-filer kan lagre følgende typer innhold:
- Kjørbare filer for applikasjoner og verktøy, ofte distribuert som en .bin-fil
- Kompilerte objektfiler, som vanligvis har filendelsen
.o - Delte biblioteker (shared libraries) - filer med filendelsen .so
- Core dumps (minne-øyeblikksbilder produsert etter et programkrasj)
Formatet er bygget rundt en veldefinert binær struktur. Hver .elf-fil starter med den 4-byte lange magiske sekvensen 7F 45 4C 46 (0x7F etterfulgt av ASCII-bokstavene ELF) ved posisjon 0, etterfulgt av hodefelt (header fields) som identifiserer målarkitektur, ordstørrelse (32-bit eller 64-bit) og byte-rekkefølge (little-endian eller big-endian). To valgfrie tabeller - program header table og section header table - beskriver deretter hvordan segmenter skal lastes ved kjøring og hvordan seksjoner er organisert for lenking.
Selv om ELF-standarden ble utviklet med Unix-systemer i tankene, ble den raskt tatt i bruk av andre plattformer, inkludert spillkonsoller som PlayStation 2 og Wii, Android og mange innebygde miljøer. Standard MIME-type er application/x-elf. Innholdet i en .elf-fil er ikke menneskelig lesbart; verktøy som readelf og objdump (begge en del av GNU Binutils) kan inspisere filhodene og disassemblere koden uten å kjøre den.
Sikkerhet og trygghet
RISIKO: HIGHSom alle kjørbare filer kan en ELF inneholde skadevare - Linux/IoT-botnett (f.eks. Mirai-varianter) leveres som ELF-binærfiler, og en ELF kjører med dine rettigheter når den utføres. Kjør kun ELF-filer fra pålitelige kilder; ikke bruk «chmod +x» og kjør tilfeldige nedlastinger. Inspiser ukjente ELF-filer trygt med readelf/objdump eller skann dem på VirusTotal før kjøring. Konsoll-homebrew .elf-filer har lavere risiko (de kjører i en emulators sandkasse), men hent dem likevel fra anerkjente homebrew-kilder.
Formatdetaljer
i et nøtteskallProgrammer som åpner ELF-filer
Tekniske detaljer
dyp spesifikasjon| Magisk tall | `7F 45 4C 46` (0x7F etterfulgt av ASCII `ELF`) ved byte-posisjon 0, til stede i enhver gyldig ELF-fil |
| MIME-type | `application/x-elf` |
| Varianter av ordstørrelse | 32-bit (EI_CLASS = `01`) og 64-bit (EI_CLASS = `02`), kodet ved posisjon 4 i ELF-hodet |
| Felt for byte-rekkefølge | EI_DATA ved posisjon 5: `01` = little-endian, `02` = big-endian; bestemt av målmaskinvarens arkitektur |
| Filtyper (e_type) | ET_EXEC (kjørebar), ET_REL (relokerbart objekt), ET_DYN (delt objekt eller PIE), ET_CORE (core dump) |
| Målarkitekturer | x86, x86-64, ARM, AArch64, MIPS, RISC-V, PowerPC, SPARC og mange andre, identifisert av feltet `e_machine` i ELF-hodet |
| OS/ABI-identifikator | EI_OSABI-byte ved posisjon 7 spesifiserer mål-ABI: 0 = System V, 3 = Linux, 9 = FreeBSD, 12 = Solaris |
| Strukturoppsett | ELF-hode → valgfri program header table (segmenter for lasting ved kjøring) → data → valgfri section header table (seksjoner for lenking) |
| Viktige navngitte seksjoner | `.text` (kode), `.data` (initialisert data), `.bss` (null-initialisert data), `.rodata` (konstanter), `.symtab` / `.dynsym` (symboler), `.rel` / `.rela` (relokeringer) |
| Dynamisk lenking | Delte objekter løses ved lastetid av kjøretidslenkeren (`ld.so`); den nødvendige tolkerstien er lagret i `PT_INTERP` programhodet |
| Feilsøkingsinformasjon | DWARF-feilsøkingsdata er innebygd i `.debug_*` ELF-seksjoner og kan fjernes fra produksjonsfiler med kommandoen `strip` |
| Posisjonsuavhengige kjørbare filer | PIE-binærfiler er av typen ET_DYN og støtter ASLR; Linux-kjernen randomiserer deres baselasteadresse ved hver oppstart |
| Primære inspeksjonsverktøy | `readelf -a` (hoder, symboler, seksjoner) og `objdump -d` (disassemblering), begge levert av GNU Binutils |
| Utgitt | 1989 (Unix System V Release 4); adopted as the TIS/System V ABI standard |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | refspecs.linuxfoundation.org |
ELF-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om ELF-filer.