Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
250
Добавлен:
20.02.2016
Размер:
108.54 Кб
Скачать

Лекция № 1. Введение

  1. Что необходимо знать. Структура курса. Список литературы.

  2. Зачем нужны драйверы. Примеры использования драйверов.

  3. Что такое драйвер, типы драйверов и характеристики

  4. Среда разработки.

  5. Утилита BUILD. Checkedи Free Build. Жизненный цикл разработки драйвера.

  6. С и С++. Интегрированная среда разработки.

  7. Установка, удаление, запуск и остановка драйвера.

[1.0] Что необходимо знать. Структура курса. Список литературы.

Необходимо знать:

  • C/C++

Крайне желательно знать:

  • Win32 API

  • Интегрированная среда Developer Studio

  • Visual С++

  • Ассемблер

  • Работа процессора в защищенном режиме, особенно – организация памяти

Настоятельная рекомендация: На л/р иметь:

  • справочник по Visual C++

  • системное программирование в Windows

  • справочник по командам ассемблера

Структура курса.

Курс рассчитан на 15 лекций (30 часов) + 4 лабораторных занятия по 4 часа, каждое разбито на 2 л/р

Форма отчетности по курсу – экзамен.

Лекция 1. Введение

Лекция 2. Общая архитектура ОС NT. Архитектура ядра. Основные компоненты ядра и предоставляемые ими сервисы.

Лекция 3. Система приоритетов. Как используются IRQL. Диспетчеризация и планирование.

Лекция 4. Структура драйвера. Точка входа DriverEntry. Точки входа Dispatch.

Лекция 5. Подробнее об установке драйвера. Открытие драйвера, взаимосвязь объектов, передача данных в драйвер, IRP.

Лекция 6. Архитектура памяти. Управление памятью. MDL. Выделение памяти. Отображение памяти.

Лекция 7. Многоуровневая модель драйверов. Уровневые драйверы и драйверы-фильтры

Лекция 8. Сериализация. System Queuingи Driver Queuing

Лекция 9. Механизмы синхронизации.

Лекция 10. Рабочие потоки (Worker Threadsи Work Queue).

Лекция 11. Таймеры (IoTimerи Timer DPC). ISRи DPC.

Лекция 12. Программируемый в/в. DMA.

Лекция 13. Сетевая архитектура. NDISи TDI

Лекция 14. FSD

В процессе изложения могут даваться ссылки на следующую литературу (доступна в электронном виде в комп. зале):

  1. Windows NT Device Driver Development. Peter G. Viscarola, W. Antony Mason

  2. Developing Windows NT Device Driver. Edward N. Dekker, Joseph M. Newcomer

[1.1] Зачем нужны драйверы. Примеры использования драйверов

Для чего нужно знание архитектуры ОС и понимание драйверов применительно к сфере защиты информации? Этот вопрос можно рассматривать с различных точек зрения:

  • С точки зрения разработчика средств защиты информации

  • С точки зрения преодоления средства защиты

Допустим, нам необходимо разработать средство защиты. Типовая структура такого средства на данный момент выглядит примерно так:

Реализация почти всех перечисленных элементов системы защиты для ОС NT возможна только с применением драйверов:

  • Защита локальных данных – либо FSD шифрующей файловой системы, либо драйвер-фильтр для прозрачного шифрования, либо перехват вызовов системных сервисов.

  • Защита сетевых данных – драйвер протокола, NDIS-драйвер промежуточного уровня, собственная сетевая служба, фильтр стандартной сетевой службы (такие службы реализованы как файловые системы - FSD), перехват вызовов системных сервисов.

  • Выявление нарушителя – для всех вышеприведенных вариантов – анализ событий, регистрация в журнале, запрос на подтверждение подозрительных действий.

Для специализированного оборудования должны быть разработаны драйверы для интеграции в эту схему.

В зависимости от конкретной постановки задачи д.б. выбран наиболее подходящий способ ее решения. Одного ответа на все случаи жизни быть не может, так как 2 основных критерия выбора решения

  1. критерий максимальной простоты реализации

  2. критерий максимальной универсальности

противоречат друг другу: чем более универсальным может быть вариант реализации, тем сложнее его реализация и наоборот.

В качестве примера можно привести задачу реализации защиты сетевого трафика. Наиболее универсальным (с точки зрения полноты контролируемого трафика) и на первый взгляд простым в этом случае будет являться NDIS-драйвер промежуточного уровня. Однако, по мере усложнения системы и приближения ее к коммерческой реализации, будут возникать все более серьезные проблемы. Например, такая система должна знать форматы всех протоколов в системе, в том числе и тех, которые в данный момент даже не созданы.

При выборе способа реализации системы также жизненно важным может быть документированность этого способа, при том, что большая часть ОС NT недокументирована.

Примеры драйверов.

Драйверы ядра можно разбить на 2 больших класса: драйверы аппаратных устройств и драйверы виртуальных устройств:

  1. архитектура NT исключает использование устройства, если для него нет драйвера. Прикладному ПО доступ к аппаратуре запрещен. Поэтому самым очевидным примером драйверов является драйвер аппаратного устройства, предоставляющий прикладным программам интерфейс доступа к устройству. В области защиты информации задача написания таких драйверов весьма актуальна.

  2. Драйвер виртуального устройства не работает с каким либо специализированным аппаратным устройством, однако предоставляет прикладным программам такие возможности по работе со стандартными ресурсами компьютера и ОС (процессор, память, порты, регистры, служебные структуры ОС), которые без драйвера были бы недоступны.

Что конкретно можно сделать с помощью драйвера виртуального устройства?

Как будет видно из следующих разделов, системная архитектура NT представляет собой набор модулей, связанных друг с другом стандартными, но далеко не всегда документированными интерфейсами. Благодаря этим интерфейсам можно производить как замену стандартных модулей на собственные, так и вставлять новые модули в «разрыв» связей между старыми. Такое устройство ОС позволяет разрабатывать новые модули (драйверы) для различных целей:

  • «прозрачная», то есть невидимая для прикладных программ, обработка данных, например, шифрование и компрессия данных на диске или в компьютерной сети;

  • расширение набора предоставляемых ОС сервисов;

  • «прозрачное» сканирование на наличие вирусов;

  • написание вирусов и закладок;

  • средства сбора статистики о событиях для различных компонентов системы.

Следует иметь ввиду, что помимо общих правил разработки и взаимодействия драйверов существуют специальные правила для особых типов драйверов. В качестве примера можно привести драйверы файловой системы – FSD и сетевые драйверы – архитектура NDIS и TDI.

На уровне ядра можно создавать не только драйвер, но и какой либо компонент ОС, например, HAL. Существуют специальные модули HAL, реализующие системы реального времени. В принципе, можно задуматься над возможностью придания ОС NT черт распределенной ОС.

Соседние файлы в папке Лабы по драйверам