Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы_ОСиСП.docx
Скачиваний:
55
Добавлен:
20.04.2019
Размер:
623.57 Кб
Скачать

43. Перехват вызова функций ос Windows в режиме ядра. Встроенная защита от перехвата в новейших версиях ос Windows.

Перехват основан на модификации структур данных ядра и функций. Главными мишенями воздействия являются таблицы:

  1. IDT Таблица диспетчеризации прерываний. Довольно важным для перехвата является прерывание, обрабатывающее обращение к таблице служб SSDT.

  2. SSDT (System Service Dispatch Table) Таблица диспетчеризации системных сервисов. Обращаясь к ней, система по номеру запрещенного сервиса может получить адрес соответствующего сервиса ядра и вызвать его. А таблица SSPT содержит общий размер параметров, передаваемых системному сервису. psActiveprocess Структура ядра, хранящая список процессов в системе.

  3. IRP Таблица драйвера, которая хранит указатели на функции обработки IRP-пакетов. EPROCESS Структура ядра, хранящая большое количество информации о процессе, включая, например, PID (идентификатор процесса).

Перехват функций в режиме ядра (kernel mode). Для того, чтобы понять суть метода, будет полезным рассмотреть принципы взаимодействия библиотек user mode и kernel-mode. Базовое взаимодействие с ядром осуществляется посредством ntdll.dll, большинство функций которой обращаются к ядру через прерывание INT 2Eh. Дальнейшее обращение к функциям ядра базируется на структуре, именуемой KeServiceDescriptorTable (сокращенно SDT). SDT представляет собой таблицу, содержащую адреса точек входа сервисов ядра NT. Грубо говоря, можно сказать, что для перехвата функций необходимо написать драйвер, который и произведет модификацию таблицы SDT. Перед модификацией драйверу необходимо сохранить адреса перехватываемых функций и записать в таблицу SDT адреса своих обработчиков.

Данный метод часто называют перехватом Native API, и работает он на NT-линейке (W2K, XP, W2003).

42