Detail předmětu
Analýza binárního kódu
FIT-IANAk. rok: 2017/2018
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
Výsledky učení předmětu
Prohloubení znalostí z oblasti operačních systémů, strojových jazyků a možností ladění a analýzy.
Prerekvizity
Způsob a kritéria hodnocení
Osnovy výuky
- Osnova přednášek:
- Architektury počítačů, registry, implicitní a explicitní operace na zásobníku. Architektury x86 a x86_64. System V ABI na architektuře x86_64, červená zóna.
- Sestavení, linkování a spoušténí kódu. Příklady typických optimalizací při sestavování kódu, optimalizace na zásobníku. Porozumění Unixovým spustitelným souborům formátu ELF a objdump.
- Analýza obrazů systémové paměti po pádu systému, symboly DWARF, použití nástroje crash(8).
- Analýza obrazů systémové paměti po pádu systému, chyby typu Oops, příznaky jádra, sysrq.
- Správa procesů a paměti v jádře, task_struct, vmas, SLAB allocator.
- Zpracování přerušení, odkládání práce, spodní poloviny, softirqs, tasklets, pracovní fronty.
- Živé sledování jádra (SystemTap, ftrace), zámky, problém uváznutí a zamrznutí systému a jejich analýza a opakované vyvolání.
- Dekompozice ELF souboru, dekódóvání jeho sekcí a jeho zpětný překlad do assembleru.
- Použití nástroje crash(1) v Linuxu.
- Analýza obrazu paměti systému Linux po jeho pádu na architektuře IA-32.
- Analýza obrazu paměti systému Linux po jeho pádu na architektuře AMD64.
- Trasování systému za běhu pomocí SystemTap a ftrace.
- Trasování a analýza uváznutí systému.
- Zjištění příčiny pádu systému z obrazu systémové paměti na architektuře IA-32.
- Zjištění příčiny pádu systému z obrazu systémové paměti na architektuře AMD64.
- Monitorování běhu systému pomocí SystemTap.
Osnova počítačových cvičení:
Osnova ostatní - projekty, práce:
Učební cíle
Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky
Prerekvizity a korekvizity
- doporučená prerekvizita
Programování na strojové úrovni - doporučená prerekvizita
Operační systémy
Základní literatura
Zařazení předmětu ve studijních plánech
Typ (způsob) výuky
Přednáška
Vyučující / Lektor
Osnova
- Architektury počítačů, registry, implicitní a explicitní operace na zásobníku. Architektury x86 a x86_64. System V ABI na architektuře x86_64, červená zóna.
- Sestavení, linkování a spoušténí kódu. Příklady typických optimalizací při sestavování kódu, optimalizace na zásobníku. Porozumění Unixovým spustitelným souborům formátu ELF a objdump.
- Analýza obrazů systémové paměti po pádu systému, symboly DWARF, použití nástroje crash(8).
- Analýza obrazů systémové paměti po pádu systému, chyby typu Oops, příznaky jádra, sysrq.
- Správa procesů a paměti v jádře, task_struct, vmas, SLAB allocator.
- Zpracování přerušení, odkládání práce, spodní poloviny, softirqs, tasklets, pracovní fronty.
- Živé sledování jádra (SystemTap, ftrace), zámky, problém uváznutí a zamrznutí systému a jejich analýza a opakované vyvolání.
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.
- Použití nástroje crash(1) v Linuxu.
- Analýza obrazu paměti systému Linux po jeho pádu na architektuře IA-32.
- Analýza obrazu paměti systému Linux po jeho pádu na architektuře AMD64.
- Trasování systému za běhu pomocí SystemTap a ftrace.
- Trasování a analýza uváznutí systému.