Strojově orientované jazyky
Kód | Zakončení | Kredity | Rozsah |
---|---|---|---|
X36SOJ | KZ | 4 | 2+2c |
- Předmět je náhradou za:
- Strojově orientované jazyky (36SOJ)
- Přednášející:
- Pavel Cimbál
- Cvičící:
- Pavel Cimbál
- Předmět zajišťuje:
- katedra počítačů
- Anotace:
-
V předmětu posluchači získají (na příkladu nejrozšířenější platformy - PC) znalosti ohledně tvorby programů v assembleru, s důrazem na optimální využití funkce mikroprocesoru a efektivní řešení spolupráce SW a HW na nejnižší úrovni. Poté budou probrány základy koncepce majoritních OS z pohledu jádra, kódu aplikace i vazby k vyšším jazykům, které budou dále využity při reverzní analýze, optimalizacích a posuzování bezpečnosti kódu.
- Požadavky:
-
http://service.felk.cvut.cz/courses/X36SOJ/
prezence na cvičeních,napsaný test, minimálně 8 bodů z testu a obhajob. , minimálně 10 bodů ze sestrálních prací.
- Osnova přednášek:
-
1. Úvod, zaměření a požadavky předmětu. Historie x86, vývoj uspořádání PC.
2. Procesor i8086. Instrukční soubor, reálný režim.
3. Softwarová přerušení. Služby BIOSu a DOSu.
4. Přímý přístup k HW. Hardwarová přerušení, základní periferie.
5. Procesor i80386. Chráněný režim, ochrana paměti, stránkování.
6. Optimalizace kódu. Ladění na velikost, rychlost, refaktorizace.
7. Koncepce linuxového jádra. Zavádění, virtualizace paměti, správa procesů.
8. Koncepce jádra Windows. Virtualizace paměti, HAL, správa procesů.
9. Prostředí aplikace. Uživatelský prostor, spustitelné soubory, relokovatelné knihovny.
10. Vazba na vyšší jazyky. Volací konvence, externí moduly, reverzní analýza.
11. Bezpečnost aplikací a jádra. Havárie kódu, druhy útoků, zapouzdření kódu.
12. Moduly jádra a ovladače. Anatomie modulu, zavedení do jádra, ukrývací techniky.
13. Nestandardní režimy procesoru. Nepublikované instrukce, virtualizace.
- 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í vvbraných služeb BIOSu a DOSu, formáty COM a EXE, alokace paměti.
4. Obsluha přerušení, manipulace s vektory, kontext a reentrance, práce s řadičem.
5. Přechod z/do chráněného režimu, vytvoření a spuštění 32 bitového kódu.
6. Optimalizační úlohy pro 16/32 bitový kód, pipeline, základy optimalizačních triků.
7. Analýza setupu, fáze zavedení kernelu, rozbor klíčové čá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, vytváření jednoduché int 80h aplikace, signály, minimalizace.
10. In-line asembler, direktivy, symboly a constraints, vliv HLL optimalizace.
11. Konstrukce root-shellcode, eskalace práv, využití bezpečnostních chyb, ukrytí.
12. Analýza ovladačů jádra, konstrukce jednoduchého ovladače.
13. Použití nepublikovaných instrukcí, utajování kódu, základy polymorfismu.
- Cíle studia:
- Studijní materiály:
-
Slavík,P.: Strojově orientované jazyky, ČVUT, 1996
- Poznámka:
- Rozvrh na zimní semestr 2011/2012:
- Rozvrh není připraven
- Rozvrh na letní semestr 2011/2012:
-
06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Po Út St Čt Pá - Předmět je součástí následujících studijních plánů:
-
- Výpočetní technika- strukturované studium (povinně volitelný předmět)