Interaktivní osnova
Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++
Téma 5: ELF a libelf II.
Teoretická část
- ELF a jeho struktura
- Obsah sekcí
- Programové hlavičky
libelf
Praktický úkol pro cvičení
- Práce s
libelf
Domácí úkol
- Napište jednoduchý ELF loader
- Načtěte z
pb173-bin/05
přeloženou ELF binárkuto_load
a tu spusťte - Projděte programové hlavičky
- Všechny s typem
LOAD
nahrajte do paměti- Ze souboru z offsetu
p_offset
- Do paměti na adresu
p_vaddr
+ nějaký pevný offset (např. 0x100000000)- Použijte
mmap
s prvním parametrem ne-NULL
mmap
vyžaduje adresu zarovnanou na velikost stránky (sysconf(_SC_PAGESIZE)
)- Uvažte správné vlaječky čtení-zápis-spuštění, dle
p_flags
aPF_R
,PF_W
,PF_X
- Také uvažte, že potřebujete do oblasti vy zapsat
- Použijte
- O velikosti
p_filesz
- Ze souboru z offsetu
- Skočte na vstupní adresu
- Z ELF hlavičky
e_entry
- Ale nezapomeňte přičíst vámi zvolený offset (0x100000000)
- Z ELF hlavičky
- Ověřte pomocí
strace
, že se vykonávají (nevalidní) syscally od č. 10000