Регистрация драйвера под Win7 x64
От: squid_etc  
Дата: 20.05.13 07:25
Оценка:
Добрый день!

Есть пример написания каркаса драйвера.
Драйвер собрал. в configuration manager поставил x64.
копирую FileSysmetFilterDriver.sys на виртуальную машину. для регистрации использую KmdManager.exe.
Регистрируется успешно! при нажатии Run -> мне возвращается (в консоли KmdManager-а) "Error number not found". и мессадж бокс

как быть?

еще одна особенность: при сборке того же солюшена Win32 и аналогичных манипуляций под WinXP — все успешно регистрируется и запускается(я вижу DbgPrint-ы в приложении DbgView)!

Спасибо!
Re: Регистрация драйвера под Win7 x64
От: dongyi  
Дата: 20.05.13 07:37
Оценка:
в 64 бит windows добавилось защиты ядра от сомнительного кода (Patchguard и Kernel-Mode Code Signing). для запуска драйвера его нужно подписать сертификатом.
Re[2]: Регистрация драйвера под Win7 x64
От: squid_etc  
Дата: 20.05.13 08:11
Оценка:
Спасибо за оперативный ответ!

Здравствуйте, dongyi, Вы писали:
D>в 64 бит windows добавилось защиты ядра от сомнительного кода (Patchguard и Kernel-Mode Code Signing). для запуска драйвера его нужно подписать сертификатом.
вы имеете в виду запрос Altitude?

также можно выключить реагирование системы на необходимость подписывать драйвера http://www.vistax64.com/drivers/166307-driver-signings.html — я использовал тулзу EasyBCD 1.7.2.exe
его настройки

также я выбирал отключение подписывания драйвера при загрузке по F8.


максимум что получилось — это сообщение про успешный Start в консили KmdManager. а DbgView так и не показал соответсвующие трэйсы методов DriverEntry
DbgPrint("Hello, world!\n");

и FileSysmetFilterDriverUnload
DbgPrint("Goodbye, world!\n");
Re[3]: Регистрация драйвера под Win7 x64
От: EreTIk EreTIk's Box
Дата: 20.05.13 08:25
Оценка:
_>максимум что получилось — это сообщение про успешный Start в консили KmdManager. а DbgView так и не показал соответсвующие трэйсы методов DriverEntry
OSR: Getting DbgPrint Output To Appear In Vista and Later
Re[4]: Регистрация драйвера под Win7 x64
От: squid_etc  
Дата: 20.05.13 08:59
Оценка:
Здравствуйте, EreTIk, Вы писали:

_>>максимум что получилось — это сообщение про успешный Start в консили KmdManager. а DbgView так и не показал соответсвующие трэйсы методов DriverEntry

ETI>OSR: Getting DbgPrint Output To Appear In Vista and Later
почистал я статью — спасибо. видел ее раньше вроде.
еще почитал то, что рекомендовано в ней Reading and Filtering Debugging Messages
я уже отправляю
DbgPrintEx(DPFLTR_IHVVIDEO_ID, DPFLTR_INFO_LEVEL, "First message.\n");

и прописал в реестре "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" переменную DEFAULT типа REG_DWORD равную 8(все равно в 10-ной или hex). Все равно — при запуске(успешном) в KmdManager я не вижу никаких трейсов в DbgView. + секунд через 10 после Run выскакивает сообщение

и еще вопрос: подпись драйвера и получение Altitude — это одно и тоже?
Re[5]: Регистрация драйвера под Win7 x64
От: EreTIk EreTIk's Box
Дата: 20.05.13 09:11
Оценка:
_>и прописал в реестре "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" переменную DEFAULT типа REG_DWORD равную 8(все равно в 10-ной или hex).
Значение DEFAULT нужно выставить в 0xf, тогда можно вернуться к использованию DbgPrint.

_>Все равно — при запуске(успешном) в KmdManager я не вижу никаких трейсов в DbgView. + секунд через 10 после Run выскакивает сообщение...

_>и еще вопрос: подпись драйвера и получение Altitude — это одно и тоже?
Нет. Signing Drivers during Development and Test (Windows Vista and Later) и все подразделы.
Re[6]: Регистрация драйвера под Win7 x64
От: squid_etc  
Дата: 20.05.13 14:46
Оценка:
Здравствуйте, EreTIk, Вы писали:
ETI>Нет. Signing Drivers during Development and Test (Windows Vista and Later) и все подразделы.
спасибо за ссылку.
перечитал за день дюжену ресорсов про цифровые подписи драйверов.
в итоге с помощью тулзы "dseo13b", я выбрал опцию "Sing a System File". и драйвер зарегистрировался и запустился у спешно — KmdManager вернул Success на Register и на Run.

НО — DebugView ничего при этом не показывает на Run, как он это обычно делал с тем же кодом на WinXP.

Что не так?

и объясните по-нормальному, пожалуйста, еще одну вещь: я сделал с помощью тузлы MakeCert Test Certificate файлик ContosoTest. Зачем он нужен и что с ним делать? — это аналог того, что я делаю тулзой dseo13b?
Re[7]: Регистрация драйвера под Win7 x64
От: okman Беларусь https://searchinform.ru/
Дата: 20.05.13 15:31
Оценка:
Здравствуйте, squid_etc, Вы писали:

_>перечитал за день дюжену ресорсов про цифровые подписи драйверов.

_>в итоге с помощью тулзы "dseo13b", я выбрал опцию "Sing a System File".

Пользователям драйвера тоже будет предложено пользоваться данной утилитой для его запуска ?

_>НО — DebugView ничего при этом не показывает на Run, как он это обычно делал с тем же кодом на WinXP.


_>Что не так?


У меня вывод DbgPrint на Vista и выше работает только в том случае, если в отладчике выполнить
команду "ed Kd_DEFAULT_Mask 0xf". Причем первый раз нужно подключение к интернету для скачивания
нужных отладочных символов.

_>и объясните по-нормальному, пожалуйста, еще одну вещь: я сделал с помощью тузлы MakeCert Test Certificate файлик ContosoTest. Зачем он нужен и что с ним делать? — это аналог того, что я делаю тулзой dseo13b?


Это тестовый сертификат.
Он нужен для того, чтобы разработчик драйвера мог писать и тестировать сценарии установки драйвера,
не имея доступа к настоящему сертификату, который обычно доступен лишь узкому кругу лиц в компании.
Re[8]: Регистрация драйвера под Win7 x64
От: squid_etc  
Дата: 20.05.13 15:53
Оценка:
Здравствуйте, okman, Вы писали:
Спасибо за советы- замечания.
_>>перечитал за день дюжену ресорсов про цифровые подписи драйверов.
_>>в итоге с помощью тулзы "dseo13b", я выбрал опцию "Sing a System File".
O>Пользователям драйвера тоже будет предложено пользоваться данной утилитой для его запуска ?
на начальном этапе необходим прототип, поэтому да — можно устанавливать драйвер и таким образом. Все равно для установки необходимо будет писать ini-файл.
меня больше беспокоит, что хотя и KmdManager показывает успешный статус регистрации и запуска — сообщения в DbgView все равно не отображаются — следовательно я не могу ни нормально отлаживать то, что написал, ни даже быть уверенным, что драйвер запущен и работает — кроме статуса в KmdManager об успешной установке мне ничего не говорит...

_>>НО — DebugView ничего при этом не показывает на Run, как он это обычно делал с тем же кодом на WinXP.

_>>Что не так?
O>У меня вывод DbgPrint на Vista и выше работает только в том случае, если в отладчике выполнить
O>команду "ed Kd_DEFAULT_Mask 0xf". Причем первый раз нужно подключение к интернету для скачивания
O>нужных отладочных символов.
что имеется в виду под "отладчиком"?
и я, например, дублирую все мои сообщения дебагеру 2-мя командами
    DbgPrint("DbgPrint: Hello, world!\n");
    DbgPrintEx(DPFLTR_IHVVIDEO_ID, DPFLTR_INFO_LEVEL, "DbgPrintEx: Hello, world!\n");

хоть одна из них должна была бы писаться....

_>>и объясните по-нормальному, пожалуйста, еще одну вещь: я сделал с помощью тузлы MakeCert Test Certificate файлик ContosoTest. Зачем он нужен и что с ним делать? — это аналог того, что я делаю тулзой dseo13b?

O>Это тестовый сертификат.
O>Он нужен для того, чтобы разработчик драйвера мог писать и тестировать сценарии установки драйвера,
O>не имея доступа к настоящему сертификату, который обычно доступен лишь узкому кругу лиц в компании.
интересно. получается я просто создал сертификат с помощью утилиты MakeCert
MakeCert -r -pe -ss PrivateCertStore -n "CN=Contoso.com(Test)" testcert.cer

это просто сертификат и он никак не привязан к моему конкретному драйверу.
Зачем от тогда нужен в принципе?
когда этот сгенерированный ключ будет затребован у пользователя?

я нашел инетересный документ Kernel-Mode Code Signing Walkthrough, в котором описывается (в том числе), как используя тулзы можно создавать сертификат.
это вообще нужный документ? — стоит на него тратить время?

спасибо!
Re[9]: Регистрация драйвера под Win7 x64
От: okman Беларусь https://searchinform.ru/
Дата: 20.05.13 16:46
Оценка:
Здравствуйте, squid_etc, Вы писали:

_>на начальном этапе необходим прототип, поэтому да — можно устанавливать драйвер и таким образом. Все равно для установки необходимо будет писать ini-файл.


Запуск драйвера через утилиты данного типа — это "кривая дорожка".
Такими способами пользуются разве что всякие троянцы, нормальные производители покупают
сертификаты, либо честно сообщают, что драйвер работает только на 32-битных версиях Windows.

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

_>меня больше беспокоит, что хотя и KmdManager показывает успешный статус регистрации и запуска — сообщения в DbgView все равно не отображаются — следовательно я не могу ни нормально отлаживать то, что написал, ни даже быть уверенным, что драйвер запущен и работает — кроме статуса в KmdManager об успешной установке мне ничего не говорит...


А отладочный режим загрузки Windows включен или нет ?

_>что имеется в виду под "отладчиком"?


WinDbg.

_>интересно. получается я просто создал сертификат с помощью утилиты MakeCert

_>
_>MakeCert -r -pe -ss PrivateCertStore -n "CN=Contoso.com(Test)" testcert.cer
_>

_>это просто сертификат и он никак не привязан к моему конкретному драйверу.
_>Зачем от тогда нужен в принципе?
_>когда этот сгенерированный ключ будет затребован у пользователя?

Сертификат не привязывается к драйверу. И вообще к объекту, который им подписывается.
Сертификат — это своего рода удостоверение для пользователя (и для системы), что данные
(в данном случае файл драйвера) были созданы именно вами и не были модифицированы третьим лицом.

А тестовый сертификат нужен, повторяю, только для того, чтобы разработчик [компании] мог
свободно писать сценарии установки и тестировать драйвер так, как если бы там был реальный
сертификат. Когда драйвер будет готов и оттестирован, уполномоченное лицо компании подпишет
его настоящим сертификатом. Таким образом, с одной стороны, сохраняется удобство разработки, а
с другой — секьюрность, так как вероятность утечки сертификата уменьшается.

_>я нашел инетересный документ Kernel-Mode Code Signing Walkthrough, в котором описывается (в том числе), как используя тулзы можно создавать сертификат.

_>это вообще нужный документ? — стоит на него тратить время?

Ну если Вы немного "плаваете" в теме сертификатов, то лишним точно не будет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.