Interaktivní osnova
Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++
Téma 3: Binární objektové soubory
Teoretická část
- Popis objektových souborů
- Přehled jejich formátů
- Knihovna
libbfd
a její použití
Praktický úkol pro cvičení
- Práce s binárními formáty
- Práce s
libbfd
Domácí úkol
- Vytvořte program, který bude pracovat s binárními soubory
- Bude akceptovat parametry na příkazové řádce
- Jeden parametr (soubor): výstup se bude podobat co nejvíce
objdump -f -h
- Navíc, pokud se v libovolných sekcích najdou řetězce
hello
aworld
, vypíše se informace o tom, že jde pravděpodobně o hello world program - Musí to fungovat opravdu i pro void hello() { puts("world"); }
- Navíc, pokud se v libovolných sekcích najdou řetězce
- Dva parametry (vstup a vystup): projdou se všechny
.data
sekce souboru vstup a všechny, které obsahují texthello
se zkopírují do souboru vystup do stejně pojmenované sekce ahello
se změní naholla
- Vytvořte sekci
.comment.my_objcopy
s libovolným obsahem
- Vytvořte sekci
- Jeden parametr (soubor): výstup se bude podobat co nejvíce
- Pokud se něco někde nezdaří, vypíše se chyba a program se korektně ukončí
- V nově vytvořeném souboru musíte nastavit
format
aarch_info
- Nejlépe zkopírovat z původního
- Při vytváření sekce použijte
bfd_make_section_with_flags
sSEC_HAS_CONTENTS
- Potom je třeba nastavit velikost sekce a nahrát data
- POZOR:
SEC_HAS_CONTENTS
veflags
u sekcí musíte kontrolovat před použitímbfd_get_section_contents()
- Při vytváření více sekcí musíte nejdříve vytvořit všechny tyto sekce a potom až tyto sekce plnit daty. Jinak
libbfd
nefunguje.