С++ и проблемы безопасности

А.В. Михалев, А.А. Павлов, Г.Г. Аракелов


Аннотация курса: в курсе рассматриваются возможности и особенности языка C++, не входящие в стандартную университетскую программу. Подробно разбираются механизмы взаимодействия с операционной системой и механизмы работы с памятью. Уделяется внимание вопросам безопасности при разработке приложений на C++. В курсе рассматривается многопоточное программирование и особенности его использования. Будут изучены вопросы оптимизации и повышения производительности. Рассматриваются новые возможности привнесенные в С++ с появлением стандарта C++11.

Курс включает не только теоретическую часть, но и широкую практическую составляющую. Курс снабжается различными методическими материалами. Программа курса рассчитана на слушателей, обладающих базовыми знаниями языка C++.


Тематическое содержание курса

1. Краткий обзор языка C++ (Освежающая лекция.)

2. ООП. Разработка классов. Особенности наследования классов. Полиморфизм.

3. Исключения. Раскрутка стека. Неперехваченные исключения. Проблемы и уязвимости связанные с перехватом исключений

4. Работа с памятью. Организация памяти в современных ОС. Виртуальная память. Свопинг. Алгоритмы замещения страниц. Сегментация.

5. Структуры данных в памяти. Память и стандартные контейнеры. Сравнение и выбор оптимального контейнера.

6. Безопасность. Использование дефектов программного кода.

7. Различные атаки, использующие переполнение буфера.

8. Атаки, использующие возвращение управления от стандартной библиотеки.

9. Атаки, использующие внедрение программного кода.

10. Взаимодействие с операционной системой. Фундаментальные концепции ОС. Системные вызовы в Linux.

11. Оптимизация и повышение эффективности.

12. Параллельное программирование на C++. CUDA. MPI. Сравнение производительноcти.

13. Boost & STL. Линейная алгебра. Генерирование псевдослучайных чисел. Разбор текста. Использование регулярных выражений.

14. Boost & STL. Алгоритмы на графах. Многопоточность

15. Стандарт С++ 11.

16. Лямбда исчисления в C++11


Типовые контрольные задания

Курс предполагает проведения двух тестирований по теоретической части и выполнение одной лабораторной работы, которая делится на несколько частей.

В лабораторной работе, студентам будет предложено реализовать свой менеджер управления памятью.


Перечень учебной литературы