Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2024/2025

Strojově orientované jazyky

Předmět není vypsán Nerozvrhuje se
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ů:
Platnost dat k 16. 6. 2024
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/cs/predmet3046206.html