Interaktivní osnova
Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++
-
Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++
-
Nyní studovatProgramování s využitím C++11 (vyučující Vladimír Štill, Jiří Weiser)
-
Nyní studovatZpracování obrazu (vyučujicí Vladimír Ulman)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Týden 1.: Můj první program pracující s obrazem
-
•Týden 2., 3.10.: Prahování a značkování
-
•Týden 3., 10.10.: Histogramy a automatické prahování
-
•Týden 4., 17.10.: Zpracování obrazu po blocích, lokální prahování
-
•Týden 5., 24.10.: Zpracování obrazu po blocích, trochu lepší lokální prahování
-
•Týden 6., 31.10.: Filtrování obrazu
-
•Týden 7., 7.11.: Zpracování opravdu velkých obrazů
-
•Týden 8., 14.11.: Registrace a spojování obrazů
-
•Týden 9., 21.11.: Ladění, optimalizace a vizualizace, část I.
-
•Týden 10., 28.11.: Ladění, optimalizace a vizualizace, část II.
-
•Týden 11., 5.12.: Praktický úkol: počítání ptáků na obloze
-
•Týden 12., 12.12.: Praktický úkol: trackování brouka ve videu
-
•Týden 13., 19.12.: Šachovnice, týmové programování
-
LETOS NE: Týden 14., 18.12.: Dokumentace, licence a GUI nadstavby
-
-
Nyní studovatSystémové programování Windows (vyučující Roman Štěpánek)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Organizace tématické skupiny
-
•Podmínky dokončení
-
•Téma 1: Úvod do Windows API
-
•Téma 2: Procesy
-
•Téma 3: Vlákna
-
•Téma 4: Dynamic-link library
-
•Téma 5: Registry
-
•Téma 6: Paměť
-
•Téma 7: Event Log
-
•Téma 8: Služby
-
•Téma 9: Security Descriptor
-
•Téma 10: Data Protection API
-
•Téma 11: Kam dál?
-
-
Nyní studovatOvladače jádra -- Linux (vyučující Jiří Slabý)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Téma 1: Úvod do problematiky dle tématické skupiny
-
•Téma 2: Rozhraní s uživatelem
-
•Téma 3: Ladění chyb (debugging)
-
•Téma 4: Chyby souběhu
-
•Téma 5: Práce s pamětí
-
•Téma 6: Datové struktury
-
•Téma 7: Komunikace s HW
-
•Téma 8: Časovače, přerušení
-
•Téma 9: Paměť trochu jinak I.
-
•Téma 10: Paměť trochu jinak II.
-
•Téma 11: Komunikace mezi procesy
-
•Téma 12: Síťové rozhraní & oops
-
•Téma 13: Výroba exploitu
-
-
Nyní studovatBinární programování Linux (vyučující Jiří Slabý)
-
•Informace ke cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Téma 1: Úvod do problematiky
-
•Téma 2: Parsery
-
•Téma 3: Binární objektové soubory
-
•Téma 4: ELF a libelf
-
•Téma 5: DWARF
-
•Téma 6: Linker skripty
-
•Téma 7: C bez libc
-
•Téma 8: Ladění funkčnosti
-
•Téma 9: Gdb a ladění výkonnosti
-
•Téma 10: Komunikace s HW
-
•Téma 11: Komunikace mezi procesy
-
•Téma 12: Netlink a RPC
-
•Téma 13: Výroba exploitu
-
-
Nyní studovatSystémové programování Linux (vyučujicí Petr Velan, Martin Drašar, Martin Husák, Jiří Novosad)
-
Nyní studovatAplikovaná kryptografie a bezpečné programování (vyučujicí Petr Švenda)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•1. týden / 1st week 16.9.2014 (úvod, kryptografické knihovny / introduction, cryptographic libraries)
-
•2. týden / 2nd week 23.9.2014 (základní algoritmy, rng, délky klíčů / basic algorithms, RNG, key lengths)
-
•3. týden 30.9.2014 (API, authenticated encryption)
-
•4. týden 7.10.2014 (ODPADLO)
-
•5. týden 14.10.2014 (Presentation of architectures)
-
•6. týden 21.10.2014 (Presentation of attacks against architectures)
-
•7. týden 28.10.2014 (National holidays)
-
•8. týden 4.11.2014 (Basic networking)
-
•9. týden 11.11.2014 (Client 2 client networking)
-
11. týden 18.11.2014 (PKCS#11)
-
12. týden 25.11.2014 (Prezentace architektur)
-
13. týden 2.12.2014
-
-
Téma 3: Binární objektové soubory
Teoretická část
- Popis objektových souborů
- Přehled jejich formátů
- ELF a jeho struktura
- Knihovna
libbfd
a její použití
Praktický úkol pro cvičení
- Práce s binárními formáty
- Práce s
libbfd
Domácí úkol
- Vytvořte program, který bude pracovat s binárními soubory
- Bude akceptovat parametry na příkazové řádce
- Jeden parametr (soubor): výstup se bude podobat co nejvíce
objdump -f -h
- Navíc, pokud se v libovolných sekcích najdou řetězce
hello
aworld
, vypíše se informace o tom, že jde pravděpodobně o hello world program - Musí to fungovat opravdu i pro void hello() { puts("world"); }
- Navíc, pokud se v libovolných sekcích najdou řetězce
- Dva parametry (vstup a vystup): projdou se všechny
.data
sekce souboru vstup a všechny, které obsahují texthello
se zkopírují do souboru vystup do stejně pojmenované sekce ahello
se změní naholla
- Vytvořte sekci
.comment.my_objcopy
s libovolným obsahem
- Vytvořte sekci
- Jeden parametr (soubor): výstup se bude podobat co nejvíce
- Pokud se něco někde nezdaří, vypíše se chyba a program se korektně ukončí
- V nově vytvořeném souboru musíte nastavit
format
aarch_info
- Nejlépe zkopírovat z původního
- Při vytváření sekce použijte
bfd_make_section_with_flags
sSEC_HAS_CONTENTS
- Potom je třeba nastavit velikost sekce a nahrát data
- POZOR:
SEC_HAS_CONTENTS
veflags
u sekcí musíte kontrolovat před použitímbfd_get_section_contents()
- Při vytváření více sekcí musíte nejdříve vytvořit všechny tyto sekce a potom až tyto sekce plnit daty. Jinak
libbfd
nefunguje.
-
Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++
-
Nyní studovatProgramování s využitím C++11 (vyučující Vladimír Štill, Jiří Weiser)
-
Nyní studovatZpracování obrazu (vyučujicí Vladimír Ulman)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Týden 1.: Můj první program pracující s obrazem
-
•Týden 2., 3.10.: Prahování a značkování
-
•Týden 3., 10.10.: Histogramy a automatické prahování
-
•Týden 4., 17.10.: Zpracování obrazu po blocích, lokální prahování
-
•Týden 5., 24.10.: Zpracování obrazu po blocích, trochu lepší lokální prahování
-
•Týden 6., 31.10.: Filtrování obrazu
-
•Týden 7., 7.11.: Zpracování opravdu velkých obrazů
-
•Týden 8., 14.11.: Registrace a spojování obrazů
-
•Týden 9., 21.11.: Ladění, optimalizace a vizualizace, část I.
-
•Týden 10., 28.11.: Ladění, optimalizace a vizualizace, část II.
-
•Týden 11., 5.12.: Praktický úkol: počítání ptáků na obloze
-
•Týden 12., 12.12.: Praktický úkol: trackování brouka ve videu
-
•Týden 13., 19.12.: Šachovnice, týmové programování
-
LETOS NE: Týden 14., 18.12.: Dokumentace, licence a GUI nadstavby
-
-
Nyní studovatSystémové programování Windows (vyučující Roman Štěpánek)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Organizace tématické skupiny
-
•Podmínky dokončení
-
•Téma 1: Úvod do Windows API
-
•Téma 2: Procesy
-
•Téma 3: Vlákna
-
•Téma 4: Dynamic-link library
-
•Téma 5: Registry
-
•Téma 6: Paměť
-
•Téma 7: Event Log
-
•Téma 8: Služby
-
•Téma 9: Security Descriptor
-
•Téma 10: Data Protection API
-
•Téma 11: Kam dál?
-
-
Nyní studovatOvladače jádra -- Linux (vyučující Jiří Slabý)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Téma 1: Úvod do problematiky dle tématické skupiny
-
•Téma 2: Rozhraní s uživatelem
-
•Téma 3: Ladění chyb (debugging)
-
•Téma 4: Chyby souběhu
-
•Téma 5: Práce s pamětí
-
•Téma 6: Datové struktury
-
•Téma 7: Komunikace s HW
-
•Téma 8: Časovače, přerušení
-
•Téma 9: Paměť trochu jinak I.
-
•Téma 10: Paměť trochu jinak II.
-
•Téma 11: Komunikace mezi procesy
-
•Téma 12: Síťové rozhraní & oops
-
•Téma 13: Výroba exploitu
-
-
Nyní studovatBinární programování Linux (vyučující Jiří Slabý)
-
•Informace ke cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•Téma 1: Úvod do problematiky
-
•Téma 2: Parsery
-
•Téma 3: Binární objektové soubory
-
•Téma 4: ELF a libelf
-
•Téma 5: DWARF
-
•Téma 6: Linker skripty
-
•Téma 7: C bez libc
-
•Téma 8: Ladění funkčnosti
-
•Téma 9: Gdb a ladění výkonnosti
-
•Téma 10: Komunikace s HW
-
•Téma 11: Komunikace mezi procesy
-
•Téma 12: Netlink a RPC
-
•Téma 13: Výroba exploitu
-
-
Nyní studovatSystémové programování Linux (vyučujicí Petr Velan, Martin Drašar, Martin Husák, Jiří Novosad)
-
Nyní studovatAplikovaná kryptografie a bezpečné programování (vyučujicí Petr Švenda)
-
•Informace pro cvičení
-
•Používané nástroje, knihovny, důležité zdroje...
-
•1. týden / 1st week 16.9.2014 (úvod, kryptografické knihovny / introduction, cryptographic libraries)
-
•2. týden / 2nd week 23.9.2014 (základní algoritmy, rng, délky klíčů / basic algorithms, RNG, key lengths)
-
•3. týden 30.9.2014 (API, authenticated encryption)
-
•4. týden 7.10.2014 (ODPADLO)
-
•5. týden 14.10.2014 (Presentation of architectures)
-
•6. týden 21.10.2014 (Presentation of attacks against architectures)
-
•7. týden 28.10.2014 (National holidays)
-
•8. týden 4.11.2014 (Basic networking)
-
•9. týden 11.11.2014 (Client 2 client networking)
-
11. týden 18.11.2014 (PKCS#11)
-
12. týden 25.11.2014 (Prezentace architektur)
-
13. týden 2.12.2014
-
-