Часть 1. Основы символьного драйвера

Глава 1. Написание простого символьного драйвера misc

Содержание

Глава 1. Написание простого символьного драйвера misc
Технические требования
Приступая к написанию простейшего символьного драйвера устройства misc
Разбираемся с основами устройства
Быстрые замечания относительно Модели устройства Linux
Написание кода драйвера misc - часть 1
Разбираемся в собственно соединении между самим процессом, его драйвером и имеющимся ядром
Обработка не поддерживаемых методов
Написание кода драйвера misc - часть 2
Написание кода драйвера misc - часть 3
Тестирование нашего образца драйвера misc
Копирование данных из ядра в пространство пользователя и наоборот
Использование API ядра для выполнения переноса данных
Драйвер misc с неким секретом
Написание `безопасного` кода драйвера устройства musc
Наш безопасный драйвер - код init
Наш безопасный драйвер - метод read
Наш безопасный драйвер - метод write
Наш безопасный драйвер - очистка
Наш безопасный драйвер - проверочное прикладное приложение пространства пользователя
Проблемы и связанные с безопасностью вопросы
Взлом безопасного драйвера
Плохой драйвер - ошибочный read()
Плохой драйвер - ошибочный write() - эскалация прав!
Изменения проверочного прикладного приложения пространства пользователя
Изменения драйвера устройства
Давайте теперь получим права root
Выводы
Вопросы
Дальнейшее чтение

Технические требования

Приступая к написанию простейшего символьного драйвера устройства misc

Разбираемся с основами устройства

Быстрые замечания относительно Модели устройства Linux

Написание кода драйвера misc - часть 1

Разбираемся в собственно соединении между самим процессом, его драйвером и имеющимся ядром

Обработка не поддерживаемых методов

Написание кода драйвера misc - часть 2

Написание кода драйвера misc - часть 3

Тестирование нашего образца драйвера misc

Копирование данных из ядра в пространство пользователя и наоборот

Использование API ядра для выполнения переноса данных

Драйвер misc с неким секретом

Написание `безопасного` кода драйвера устройства musc

Наш безопасный драйвер - код init

Наш безопасный драйвер - метод read

Наш безопасный драйвер - метод write

Наш безопасный драйвер - очистка

Наш безопасный драйвер - проверочное прикладное приложение пространства пользователя

Проблемы и связанные с безопасностью вопросы

Взлом безопасного драйвера

Плохой драйвер - ошибочный read()

Плохой драйвер - ошибочный write() - эскалация прав!

Изменения проверочного прикладного приложения пространства пользователя

Изменения драйвера устройства

Давайте теперь получим права root

Выводы

Вопросы

Дальнейшее чтение