Ovo je stara izmjena dokumenta!
Format ELF (engl. Executable and Linkable Format) glavni je format za izvršne datoteke, objektne datoteke i biblioteke na Linux-u i drugim, UNIX-u sličnim, operacijskim sustavima. Zbog raširenosti ovog formata, važno je poznavati njegova svojstva i strukturu, što može biti od znatne pomoći u forenzici datoteka. Ovdje je stoga opisana općenita struktura ELF datoteka, predstavljeni su alati za njihovu analizu te je objašnjen značaj poznavanja formata ELF iz perspektive računalne forenzike.
Format ELF, u kratici za Executable and Linkable Format, datotečni je format koji služi za pohranu izvršnih programa, objektnih datoteka i dijeljenih biblioteka. Svojevrsni je analogon formatu PE kojim su predstavljene izvršne datoteke na operacijskom sustavu Windows.
Umjesto poznate ekstenzije .exe koju koriste izvršne PE datoteke, izvršne ELF datoteke u pravilu uopće nemaju ekstenziju. Ostale ELF datoteke, kojima je predstavljen objektni kod, najčešće imaju ekstenziju .o, dok dijeljene biblioteke najčešće imaju ekstenziju .so. U uporabi su i ekstenzije poput .elf, .bin, i ostalih.
Zbog svoje fleksibilnosti, ELF je danas prisutan na mnogim operacijskim sustavima i arhitekturama. Najčešće ga se može pronaći na operacijskim sustavima naliku na UNIX, kao što su: Linux, FreeBSD, OpenBSD, NetBSD, Solaris, i ostali. (Važno je naglasiti da macOS nije na tom popisu; macOS i iOS koriste poseban format, zvan Mach-O.) Ipak, osim navedenih, ELF se koristi i na mnogim drugim operacijskim sustavima, čak i onima koji ne vuku korijene iz UNIX-a. Osim toga, ELF je prisutan i na nekim igraćim konzolama, kao što su: PlayStation (sve iteracije), Nintendo 64, GameCube, Wii, Wii U, i ostali. Nije začuđujuće da je ELF datoteke moguće pronaći i na mobilnim operacijskim sustavima. Od mobilnih operacijskih sustava koji koriste ELF, Android je trenutno glavni predstavnik.
Svaka ELF datoteka sastoji se ELF zaglavlja (koje je obavezno), nakon kojeg slijede dvije tablice: program header table i section header table. Te dvije tablice dalje pobliže opisuju strukturu datoteke.
ELF zaglavlje duljine je 52 bajta za 32-bitnu arhitekturu, a duljine 64 bajta za 64-bitnu arhitekturu. Prva četiri bajta zaglavlja čini magični broj koji definira da se radi o datoteci formatiranoj u ELF. Ta četiri magična bajta redom su: 0x7F, 0x45, 0x4C, 0x46. To jest, na prvom je mjestu bajt 0x7F, iza kojega slijede znakovi 'E', 'L' i 'F', kodirani u ASCII.
Nastavak zaglavlja opisuje, između ostaloga:
i još toga. Detaljniji opis strukture ELF zaglavlja može se pronaći u [1] i [2].