Как программа Windows загружает драйвер ядра без перезагрузки или вызова CreateService

Я знаю, что Process Explorer от Sysinternals молча загружает драйвер устройства с именем PROCEXPxxx.SYS. Мне интересно, как это происходит. Для меня это выглядит как хороший пример тихой компоновки компонента режима ядра в нашем приложении.

Во-первых, драйвер создается динамически из исполняемого файла (возможно, в качестве ресурса).

Используя Process Monitor для проверки реестра, я могу сказать, что PE использует RegCreateKey для создания ключей в HKLM\System\CurrentControlSet\Services\PROCEXPxxx вручную (и сразу же удаляет его, чтобы после запуска драйвера ничего не оставалось).

С помощью "dumpbin / import procxp.exe" я обнаружил, что PE вообще не импортирует CreateService. И с помощью API Monitor ( http://www.rohitab.com/apimonitor) я подтвердил, что CreateService не будет вызываться при его запуске.

Итак, как Process Explorer элегантно загружает драйвер без перезагрузки и вызова CreateService?

1 ответ

После некоторых исследований, мне кажется, что он вызывает NtLoadDriver() для загрузки драйвера

Другие вопросы по тегам