Мой вопрос касается разработки драйверов для Windows 7.
Мне нужно перехватить системные вызовы драйвера.Теоретически в таких случаях рекомендуется создавать драйвер фильтра, однако в моем случае драйвер не предоставляет интерфейс, совместимый с фильтром.Точнее, это драйвер минипорта дисплея Vista / 7.
Драйвер дисплея загружается как стандартный драйвер WDM.В его DriverEntry
ожидается, что он вызовет системную подпрограмму DxgkInitialize
(я предполагаю, что она экспортирована win32k.sys).Моя цель - перехватить этот вызов.
Может кто-нибудь предложить мне какой-нибудь полезный источник, который я могу найти информацию о том, как этого добиться?
Ключ к победе, вероятно, заменяет DxgkInitialize
враздел импорта исполняемого драйвера с адресом моей функции.Проблема заключается в том, что это должно быть сделано после загрузки исполняемого файла (отображение + перемещение при необходимости + все записи таблицы импорта подготовлены), но за до вызывается точка входа драйвера.
Я подумал о следующих параметрах:
- Отобразить исполняемый файл в системную память и «подготовить» его вручную (т.е. выполнить работу загрузчика).Затем подключите необходимые функции и запустите точку входа.
- С некоторым усилием
ZwSetSystemInformation
может быть использовано для загрузки модуля (?) - Возможно, исправьте export раздел модуля, который экспортирует
DxgkInitialize
.Так что загрузчик автоматически перенаправит каждый загруженный модуль в мои руки.
Заранее спасибо.