Předmět je základní jednotka výuky, jejímž prostřednictvím si student osvojí ucelenou část souboru znalostí a dovedností, potřebnou pro zvládnutí studijního oboru/specializace. Za věcný obsah předmětu zodpovídá garant předmětu. Časovou náročnost předmětu zhruba vyjadřuje atribut předmětu rozsah kontaktní výuky. Například rozsah = 2+2 značí, že předmět bude mít týdně dvě hodiny přednášek a dvě hodiny cvičení týdně. Na závěr semestru musí vyučující provést vyhodnocení, nakolik si ten který student osvojil poznatky a dovednosti, kterých měl během výuky nabýt. Jakým způsobem toto hodnocení vyučující provedou určuje atribut způsob zakončení. U předmětu lze definovat, že předmět je zakončen pouze zápočtem(Z), klasifikovaným zápočtem(KZ), pouze zkouškou(ZK), nebo zápočtem a zkouškou(Z,ZK). Náročnost úspěšného absolvování předmětu je vyjádřena ECTS kreditními body. Výuka předmětu probíhá během semestru. Opakovaně se předmět vyučuje vždy v zimním(Z), nebo v letním(L) semestru každého akademického roku. Výjimečně může předmět být nabízen studentům v obou semestrech(Z,L). Za organizační zajištění výuky zodpovídá přiřazená katedra, která zejména vytvoří časový rozvrh předmětu a zajistí pro předmět vyučující. Někteří přednáší a zkouší, jiní vedou cvičení a udělují zápočty.
Obsahová náplň a další organizační informace, týkající se předmětu je popsána pomocí různých popisných textů(anotace, týdenní osnova, literatura, apod.)
$DODATEK_POPIS
BI-SOJ | Strojově orientované jazyky | Rozsah kontaktní výuky: | 2P+2C | ||
---|---|---|---|---|---|
Vyučující: | Způsob zakončení: | Z,ZK | |||
Zodpovědná katedra: | 18104 | ECTS Kredity: | 4 | Semestr: | L |
Anotace:
V předmětu posluchači získají znalosti potřebné k tvorbě assemblerových programů pro nejrozšířenější platformu PC. Důraz je kladen na optimální využívání vlastností mikroprocesoru a efektivní řešení spolupráce HW a SW. Dále budou probrána x86 specifika majoritních OS z pohledu jádra kódu aplikace i návaznosti k vyšším jazykům. Tyto znalosti budou dále využity při reverzní analýze, optimalizacích a posuzování bezpečnosti kódu.
Osnovy přednášek:
1. | Základní cyklus počítače, ISA, kódování instrukcí, režimy adresace | |
2. | Principy volání podprogramu a přerušení | |
3. | Procesor i8086, instrukční soubor, registry a reálný režim | |
4. | Softwarová přerušení, moduly periferií, služby BIOSu, funkce DOSu | |
5. | Přímý přístup k HW, HW přerušení, obsluha základních periferií PC | |
6. | Procesor i80386, instrukční soubor, chráněný režim, ochrana paměti, překlad adresy, stránkování, segmentace | |
7. | Optimalizace a vektorizace kódu | |
8. | Anatomie x86 aplikace, uživatelský prostor, spustitelné soubory, knihovny, relokace | |
9. | Vazba na vyšší jazyky a reverzní analýza, volací konvence, externí moduly | |
10. | Bezpečnost aplikací a jádra, havárie kódu, druhy útoků, zapouzdření kódu | |
11. | Specifika x86 linuxového jádra, zavádění, virtualizace paměti, správa procesů | |
12. | Specifika x86 jádra Windows, virtualizace paměti, HAL, správa procesů |
Osnovy cvičení:
1. | Základní instrukce, použití registrů, vztah strojového kódu k syntaxi assembleru | |
2. | Větvení, podprogramy, instrukce IN a OUT, interakce s uživatelem | |
3. | Použití vybraných služeb BIOSu, soubory COM a EXE, práce s pamětí | |
4. | Obsluha přerušení, manipulace s vektory, kontext a reentrance, práce s řadičem | |
5. | Mechanismy chráněného režimu, vytvoření a spuštění 32bitového kódu | |
6. | Optimalizační úlohy pro 16/32 bitový kód, pipeline, základy optimalizačních triků | |
7. | Start počítače, fáze zavedení kernelu, rozbor klíčových části jádra, (ne)známé chyby | |
8. | Rozbor klíčových částí jádra Windows, proces zavádění, anatomie aplikace | |
9. | Konvence volání jádra, ELF, vytváření jednoduché int 80h aplikace, signály, minimalizace | |
10. | In-line asembler, direktivy, symboly a constraints, vlivy HLL optimalizace | |
11. | Konstrukce root-shellcode, eskalace práv, využití bezpečnostních chyb, skrytí | |
12. | Použití nepublikovaných instrukcí, utajování kódu, mechanismy polymorfismu |
Literatura:
Brandejs, M. Mikroprocesory Intel 8086 - 80486. Brno : Fakulta informatiky, Masarykova univerzita, 2010. Dostupný z WWW: http://www.fi.muni.cz/usr/brandejs/Brandejs_Mikroprocesory_Intel_8086_80486_2010.pdf.
Brandejs, M. Mikroprocesory Intel - Pentium. Brno : Fakulta informatiky, Masarykova univerzita, 2010. Dostupný z WWW: http://www.fi.muni.cz/usr/brandejs/Brandejs_Mikroprocesory_Intel_Pentium_2010.pdf.
Požadavky:
|
Předmět je zahrnut do těchto studijních plánů:
Stránka vytvořena 19. 4. 2024, semestry: Z/2021-2, Z/2023-4, Z/2022-3, Z/2019-20, Z/2024-5, L/2021-2, L/2020-1, L/2022-3, L/2023-4, Z/2020-1, L/2019-20, připomínky k informační náplni zasílejte správci studijních plánů | Návrh a realizace: J. Novák, I. Halaška |