MENU
Introduction
CoursesCourses
Binární programování
new Interest in course

Binární programování (C9)

Kurz se zaměřuje zejména na práci s binárními daty – na binární soubory, jejich formáty (popis a knihovny na práci s nimi) a komunikaci na binární úrovni. Kurz začíná popisem fází překladu. Následuje vysvětlení a vytvoření parseru a interpretu jednoduchého jazyka. Poté se cvičení věnuje binárním souborovým formátům (zejména práce s linker skripty a ELF, a.out a PE soubory – readelf, objdump) a linkerem. Setkáme se s jazykem C od základů, tj. bez knihovny libc: pouze assembler, jádro a C kód. To zahrnuje zejména popis principu systémových volání na instrukční úrovni a použití některých důležitých systémových volání.

The course is included in the following categories: ProgramováníC/C++
Ostatní

Difficulty of the course: Advanced

Course duration: 3 days

Contents of the course:

  • Úvod do problematiky: nástroje git, gcc, objcopy, objdump
  • Parsery: malá teorie okolo parserů, popis Antlr a jeho vstupní formát, akce a pravidla
  • Binární objektové soubory: popis objektových souborů, přehled jejich formátů, knihovna ibbfd a její použití
  • ELF a libelf: ELF a jeho struktura, libelf, sekce, jejich obsah, programové hlavičky
  • DWARF: ladicí informace, DWARF, libdw a libdwfl
  • Linker skripty: použití, syntaxe, verzování knihoven
  • C bez libc: systémová volání, volací konvence, data z jádra, virtuální systémová volání (vsyscall, vdso)
  • Ladění funkčnosti: tracery strace, ltrace, systémové volání ptrace, valgrind, gdb, analýza coredumpů
  • Ladění výkonnosti: gcov, gprof, perf
  • Komunikace s HW: I/O porty, mmap a PCI, knihovny pro komunikaci jako libusb, libpciaccess

Expected knowledge: Prerekvizitou je znalost jazyka C a látky probírané na kurzu Programování systému UNIX/LINUX (C3).

V ceně školení je tištěný materiál

Course dates:

16.12. 18.12.2020
guaranteed date
ONLINE
12 900 CZK (without VAT)
16.12. 18.12.2020
guaranteed date
Praha
12 900 CZK (without VAT)

Recommended previous and follow-up courses: