Strojově orientované jazyky
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
BI-SOJ | Z,ZK | 4 | 2P+2C | česky |
- Garant předmětu:
- Přednášející:
- Cvičící:
- Předmět zajišťuje:
- katedra počítačových systémů
- 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.
- Požadavky:
- Osnova 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ů
- Osnova 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
- Cíle studia:
-
Po rekapitulaci základních informací z architektur jako např. základního cyklu počítače, ISA, režimů adresace, principů volání podprogramů a přerušení se studenti budou věnovat detailům procesoru i8086 a tzv. reálnému módu procesoru. Další část bude věnována mechanismům softwarového přerušení a službám BIOSu, které se v DOSu používají. Dále budou následovat přerušení hardwarová společně s obsluhou periferních zařízení PC. Nabyté znalosti budou dále rozšířeny o procesor i80386, jeho instrukční soubor, a chráněný režim, stránkování a mechanismy ochrany paměti, které jsou využívány v moderních operačních systémech. Část předmětu bude věnována optimalizaci a vektorizaci kódu. Studenti se dále dozvědí o anatomii typické x86 aplikace a způsoby mapování jak aplikace, tak knihoven do adresního prostoru aplikace.Dále bude studentům vysvětlena vazba na vyšší programovací jazyky a jak souvisí s volacími konvencemi. Diskutována bude také bezpečnost jádra, havárie kódu, druhy útoků a zapouzdření kódu. Zvláštní přednášky budou věnovány specifikům operačních systémů Windows a Linux, zejména po stránce virtualizace paměti, správy procesů a hardwaru.
- Studijní materiály:
-
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.
- Poznámka:
-
Informace o předmětu a výukové materiály naleznete na https://courses.fit.cvut.cz/BI-SOJ/
- Další informace:
- https://courses.fit.cvut.cz/BI-SOJ/
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů:
-
- Bc. program Informatika, pro fázi studia bez oboru, 2015-2020 (volitelný předmět)
- Bc. obor Bezpečnost a informační technologie, 2015-2020 (volitelný předmět)
- Bc. obor Teoretická informatika, 2015-2020 (volitelný předmět)
- Bc. obor Počítačové inženýrství, 2015-2020 (volitelný předmět)
- Bc. obor Informační systémy a management, 2015-2020 (volitelný předmět)
- Bc. obor Webové a softwarové inženýrství, zaměření Softwarové inženýrství, 2015-2020 (volitelný předmět)
- Bc. obor Webové a softwarové inženýrství, zaměření Webové inženýrství, 2015-2020 (volitelný předmět)
- Bc. obor Webové a softwarové inženýrství, zaměření Počítačová grafika, 2015-2020 (volitelný předmět)
- Mgr. obor Znalostní inženýrství, 2016-2017 (volitelný předmět)
- Mgr. obor Počítačová bezpečnost, 2016-2019 (volitelný předmět)
- Mgr. obor Počítačové systémy a sítě, 2016-2019 (volitelný předmět)
- Mgr. obor Návrh a programování vestavných systémů, 2016-2019 (volitelný předmět)
- Mgr. obor Webové a softwarové inženýrství, zaměření Informační systémy a management, 2016-2019 (volitelný předmět)
- Mgr. obor Webové a softwarové inženýrství, zaměření Softwarové inženýrství, 2016-2019 (volitelný předmět)
- Mgr. obor Webové a softwarové inženýrství, zaměření Webové inženýrství, 2016-2019 (volitelný předmět)
- Mgr. program Informatika, pro fázi studia bez oboru, 2016-2019 (volitelný předmět)
- Mgr. obor Systémové programování, zaměření Systémové programování, 2016-2019 (volitelný předmět)
- Mgr. obor Systémové programování, zaměření Teoretická informatika, 2016-2017 (volitelný předmět)
- Mgr. specializace Teoretická informatika, 2018-2019 (volitelný předmět)
- Bc. obor Znalostní inženýrství, 2018-2020 (volitelný předmět)
- Mgr. obor Znalostní inženýrství, 2018-2019 (volitelný předmět)
- Mgr. specializace Počítačová bezpečnost, 2020 (volitelný předmět)
- Mgr. specializace Návrh a programování vestavných systémů, 2020 (volitelný předmět)
- Mgr. specializace Počítačové systémy a sítě, 2020 (volitelný předmět)
- Mgr. specializace Manažerská informatika, 2020 (volitelný předmět)
- Mgr. specializace Softwarové inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Systémové programování, verze od 2020 (volitelný předmět)
- Mgr. specializace Webové inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Znalostní inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Teoretická informatika, 2020 (volitelný předmět)
- Mgr. program, pro fázi studia bez specializace, ver. pro roky 2020 a vyšší (volitelný předmět)
- Bc. specializace Informační bezpečnost, 2021 (volitelný předmět)
- Bc. specializace Manažerská informatika, 2021 (volitelný předmět)
- Bc. specializace Počítačová grafika, 2021 (volitelný předmět)
- Bc. specializace Počítačové inženýrství, 2021 (volitelný předmět)
- Bc. program, pro fázi studia bez specializace, 2021 (volitelný předmět)
- Bc. specializace Webové inženýrství, 2021 (volitelný předmět)
- Bc. specializace Umělá inteligence, 2021 (volitelný předmět)
- Bc. specializace Teoretická informatika, 2021 (volitelný předmět)
- Bc. specializace Softwarové inženýrství, 2021 (volitelný předmět)
- Bc. specializace Počítačové systémy a virtualizace, 2021 (volitelný předmět)
- Bc. specializace Počítačové sítě a Internet, 2021 (volitelný předmět)
- Study plan for Ukrainian refugees (volitelný předmět)
- Mgr. specializace Systémové programování, verze od 2023 (volitelný předmět)
- Mgr. specializace Teoretická informatika, 2023 (volitelný předmět)
- Bc. specializace Informační bezpečnost, 2024 (volitelný předmět)
- Bc. program, pro fázi studia bez specializace, 2024 (volitelný předmět)
- Bc. specializace Manažerská informatika, 2024 (volitelný předmět)
- Bc. specializace Počítačová grafika, 2024 (volitelný předmět)
- Bc. specializace Softwarové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Webové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Počítačové sítě a Internet, 2024 (volitelný předmět)
- Bc. specializace Počítačové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Počítačové systémy a virtualizace, 2024 (volitelný předmět)
- Bc. specializace Umělá inteligence, 2024 (volitelný předmět)
- Bc. specializace Teoretická informatika, 2024 (volitelný předmět)