Detail předmětu
Analýza binárního kódu
FIT-IANAk. rok: 2024/2025
Tento předmět rozšiřuje dovednosti a znalosti získané v předmětu Programování na strojové úrovni (ISU) a v předmětu Operační systémy (IOS) s cílem porozumění obrazu systému po pádu (crash dump). Znalost programování na úrovni assembleru a aplikačních binárních rozhraní (ABI) je aplikována na reálný Unixový operační systém. V rámci předmětu jsou podrobně rozebírány binární soubory systému, jejich struktura a zpětně disasemblovaný binární kód. Součástí je podrobné studium výstupu kompilátoru s ohledem na sestavování a běh systémového kódu a diskuse rozdílů a vazeb mezi architekturami procesorů, kompilátory a binárními rozhraními. Dále jsou prezentovány vybrané koncepty typické pro programování jádra operačního systému, jejichž znalost je důležitá pro analýzu činnosti operačního systému. Mezi těmito koncepty jsou mj. detaily zpracování přerušení, fronty úloh, synchronizace vláken a správa paměti v jádře, tzv. SLAB allocator. Takto získané znalosti jsou pak využity jako základ k výkladu možností sledování chování operačního systému na úrovni binárního kódu za jeho běhu a dále také analýzy obrazu systémové paměti po pádu (crash dump analysis). V obou případech je kladen důraz na použití nástrojů běžně dodávaných v Unixových distribucích.
Jazyk výuky
Počet kreditů
Garant předmětu
Zajišťuje ústav
Vstupní znalosti
Pravidla hodnocení a ukončení předmětu
- Samostatné projekty (4x 15 bodů)
- Závěrečný test (40 bodů)
Získané znalosti studentů jsou ověřovány prostřednictvím čtyř projektů zaměřených na nízkoúrovňové programování a zjišťování příčin problémů operačního systému na základě obrazu paměti (4x 15 bodů) a dále písemným závěrečným testem (40 bodů).
Učební cíle
Praktická zkušenost s analýzou obrazu paměti operačního systému po pádu. Znalost struktury binárních souborů používaných na Unixových systémech (ELF). Porozumění rozdílů a vazeb mezi architekturami procesorů, překladači a ABI standardy. Úspěšní absolventi kurzu budou dále také schopni podrobně sledovat práci operačních systémů na binární úrovni i za jejich běhu. Prohloubení znalostí z oblasti operačních systémů, strojových jazyků a možností ladění a analýzy.
Prerekvizity a korekvizity
- doporučená prerekvizita
Programování na strojové úrovni - doporučená prerekvizita
Operační systémy
Základní literatura
Drake, C., Brown, K.: Panic! UNIX System Crash Dump Analysis, Prentice Hall, 1995.
Platforms, Crashdump Analysis, Operating System Internals, 2005.Hofmann, F.: The Solaris Operating System on x86
Doporučená literatura
Intel Corporation: Intel 64 and IA-32 Architectures Software Developer Manuals, 2015.
Matz, M., Hubicka, J., Mitchell, M.: System V Application Binary Interface, AMD64 Architecture Processor Supplement, 2013.
Elearning
Zařazení předmětu ve studijních plánech
Typ (způsob) výuky
Přednáška
Vyučující / Lektor
Osnova
- Úvod do předmětu. Překlad a sestavení programu. Porozumění spustitelným souborům formátu ELF.
- Dynamické linkování a spouštění programu. Dynamické relokace a interpret. PIC, ASLR, PIE, skript linkeru. Debugovací symboly formátu DWARF.
- Počítačové architektury, registry, operace na zásobníku. Správa paměti, segmentace, stránkování.
- Architektury x86 a x86_64. Binární rozhraní System V ABI. Příklady typických optimalizací při sestavování kódu, optimalizace na zásobníku. Architektura ARM.
- Živé sledování jádra: nástroje SystemTap, ftrace, strace, ltrace, perf.
- BPF (Berkeley Packet Filter), eBPF a jeho využití při sledování systému. Nástroje BCC a bpftrace.
Cvičení na počítači
Vyučující / Lektor
Osnova
- Dekompozice ELF souboru, dekódóvání jeho sekcí a jeho zpětný překlad do assembleru.
- Sledování spuštení programu pomocí nástrojů strace, ltrace, gdb.
- Použití nástroje crash(1) v Linuxu.
- Analýza obrazu paměti systému Linux po jeho pádu.
- Trasování systému za běhu pomocí SystemTap a ftrace.
- Trasování a analýza uváznutí systému.
Projekt
Vyučující / Lektor
Osnova
- Analýza ELF souborů.
- Zjištění příčiny pádu systému z obrazu systémové paměti.
- Zjištění příčiny pádu systému z obrazu systémové paměti.
- Monitorování běhu systému pomocí SystemTap.
Elearning