Strojově orientované jazyky
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
BI-SOJ | Z,ZK | 4 | 2P+2C | česky |
- Přednášející:
- Pavel Cimbál (gar.)
- Cvičící:
- Pavel Cimbál (gar.)
- 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, studijní plán pro fázi studia bez oboru, verze 2015 až 2020 (volitelný předmět)
- Bc. obor Bezpečnost a informační technologie, verze 2015 až 2020 (volitelný předmět)
- Bc. obor Teoretická informatika, verze 2015 až 2020 (volitelný předmět)
- Bc.obor Počítačové inženýrství, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor Informační systémy a management, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor Znalostní inženýrství, verze 2015, 2016 a 2017 (volitelný předmět)
- Bakalářský obor WSI, zaměření Softwarové inženýrství, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor WSI, zaměření Webové inženýrství, verze 2015 až 2020 (volitelný předmět)
- Bakalářský obor WSI, zaměření Počítačová grafika, verze 2015 až 2020 (volitelný předmět)
- Znalostní inženýrství, verze 2016 a 2017 (volitelný předmět)
- Počítačová bezpečnost, verze 2016 až 2019 (volitelný předmět)
- Počítačové systémy a sítě, verze 2016 až 2019 (volitelný předmět)
- Návrh a programování vestavných systémů, verze 2016 až 2019 (volitelný předmět)
- Zaměření Informační systémy a management, verze 2016 až 2019 (volitelný předmět)
- Zaměření Softwarové inženýrství, verze 2016 až 2019 (volitelný předmět)
- Zaměření Webové inženýrství, verze 2016 až 2019 (volitelný předmět)
- Společný magisterský plán před přiřazením do oboru, verze 2016 až 2019 (volitelný předmět)
- Zaměření Systémové programování, verze 2016 až 2019 (volitelný předmět)
- Zaměření Teoretická informatika, verze 2016-2017 (volitelný předmět)
- Specializace Teoretická informatika, verze 2018 až 2019 (volitelný předmět)
- Bakalářský obor Znalostní inženýrství, verze 2018 až 2020 (volitelný předmět)
- Znalostní inženýrství, verze 2018 to 2019 (volitelný předmět)
- Počítačová bezpečnost, verze 2020 (volitelný předmět)
- Návrh a programování vestavných systémů, verze 2020 (volitelný předmět)
- Počítačové systémy a sítě, verze 2020 (volitelný předmět)
- Manažerská informatika, verze 2020 (volitelný předmět)
- Softwarové inženýrství, verze 2020 (volitelný předmět)
- Systémové programování, verze 2020 (volitelný předmět)
- Webové inženýrství, verze 2020 (volitelný předmět)
- Znalostní inženýrství, verze 2020 (volitelný předmět)
- Specializace Teoretická informatika, verze 2020 (volitelný předmět)
- Magisterský program Informatika, plán pro studenty bez specializace, verze 2020 (volitelný předmět)