Главная > Цiкавi дослiди > Возможно ли загрузить вторую копию драйвера?

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


Известно, что в процесс не получится загрузить один и тот же файл через LoadLibrary(). Но что на счет драйверов? Можно ли это сделать не прибегая к «загрузке вручную»? То есть средствами самой Windows.

Как выясняется, запросто. Достаточно создать две разные службы, которые ссылаются на один и тот же бинарь. И никаких проблем.
Как это будет выглядеть в windbg:

8a642000 8a7e4000 driver_signed (private pdb symbols) c:\client\build\x86\debug\bin\driver.pdb
93a3d000 93bdf000 driver_signed_93a3d000 (private pdb symbols) c:\client\build\x86\debug\bin\driver.pdb

Вторая копия получит суффикс, который является базовым адресом. Брейкпоинты на копию ставятся без проблем, достаточно использовать имя driver_signed_93a3d000.

Как это можно использовать? А например для того, чтобы загрузить копию драйвера который Patchguard не дает хучить, но не заморачиваться с ручной загрузкой секций, импортами, экспортами, релокациями…

Рубрики:Цiкавi дослiди Метки: ,
  1. Комментариев нет.
  1. No trackbacks yet.

Оставьте комментарий