Есть пример написания каркаса драйвера.
Драйвер собрал. в configuration manager поставил x64.
копирую FileSysmetFilterDriver.sys на виртуальную машину. для регистрации использую KmdManager.exe.
Регистрируется успешно! при нажатии Run -> мне возвращается (в консоли KmdManager-а) "Error number not found". и мессадж бокс
как быть?
еще одна особенность: при сборке того же солюшена Win32 и аналогичных манипуляций под WinXP — все успешно регистрируется и запускается(я вижу DbgPrint-ы в приложении DbgView)!
в 64 бит windows добавилось защиты ядра от сомнительного кода (Patchguard и Kernel-Mode Code Signing). для запуска драйвера его нужно подписать сертификатом.
Здравствуйте, dongyi, Вы писали: D>в 64 бит windows добавилось защиты ядра от сомнительного кода (Patchguard и Kernel-Mode Code Signing). для запуска драйвера его нужно подписать сертификатом.
вы имеете в виду запрос Altitude?
Здравствуйте, EreTIk, Вы писали:
_>>максимум что получилось — это сообщение про успешный Start в консили KmdManager. а DbgView так и не показал соответсвующие трэйсы методов DriverEntry ETI>OSR: Getting DbgPrint Output To Appear In Vista and Later
почистал я статью — спасибо. видел ее раньше вроде.
еще почитал то, что рекомендовано в ней Reading and Filtering Debugging Messages
я уже отправляю
и прописал в реестре "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" переменную DEFAULT типа REG_DWORD равную 8(все равно в 10-ной или hex). Все равно — при запуске(успешном) в KmdManager я не вижу никаких трейсов в DbgView. + секунд через 10 после Run выскакивает сообщение
и еще вопрос: подпись драйвера и получение Altitude — это одно и тоже?
_>и прописал в реестре "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) и все подразделы.
Здравствуйте, 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?
Здравствуйте, squid_etc, Вы писали:
_>перечитал за день дюжену ресорсов про цифровые подписи драйверов. _>в итоге с помощью тулзы "dseo13b", я выбрал опцию "Sing a System File".
Пользователям драйвера тоже будет предложено пользоваться данной утилитой для его запуска ?
_>НО — DebugView ничего при этом не показывает на Run, как он это обычно делал с тем же кодом на WinXP.
_>Что не так?
У меня вывод DbgPrint на Vista и выше работает только в том случае, если в отладчике выполнить
команду "ed Kd_DEFAULT_Mask 0xf". Причем первый раз нужно подключение к интернету для скачивания
нужных отладочных символов.
_>и объясните по-нормальному, пожалуйста, еще одну вещь: я сделал с помощью тузлы MakeCert Test Certificate файлик ContosoTest. Зачем он нужен и что с ним делать? — это аналог того, что я делаю тулзой dseo13b?
Это тестовый сертификат.
Он нужен для того, чтобы разработчик драйвера мог писать и тестировать сценарии установки драйвера,
не имея доступа к настоящему сертификату, который обычно доступен лишь узкому кругу лиц в компании.
Здравствуйте, 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-мя командами
хоть одна из них должна была бы писаться....
_>>и объясните по-нормальному, пожалуйста, еще одну вещь: я сделал с помощью тузлы MakeCert Test Certificate файлик ContosoTest. Зачем он нужен и что с ним делать? — это аналог того, что я делаю тулзой dseo13b? O>Это тестовый сертификат. O>Он нужен для того, чтобы разработчик драйвера мог писать и тестировать сценарии установки драйвера, O>не имея доступа к настоящему сертификату, который обычно доступен лишь узкому кругу лиц в компании.
интересно. получается я просто создал сертификат с помощью утилиты MakeCert
это просто сертификат и он никак не привязан к моему конкретному драйверу.
Зачем от тогда нужен в принципе?
когда этот сгенерированный ключ будет затребован у пользователя?
я нашел инетересный документ Kernel-Mode Code Signing Walkthrough, в котором описывается (в том числе), как используя тулзы можно создавать сертификат.
это вообще нужный документ? — стоит на него тратить время?
Здравствуйте, squid_etc, Вы писали:
_>на начальном этапе необходим прототип, поэтому да — можно устанавливать драйвер и таким образом. Все равно для установки необходимо будет писать ini-файл.
Запуск драйвера через утилиты данного типа — это "кривая дорожка".
Такими способами пользуются разве что всякие троянцы, нормальные производители покупают
сертификаты, либо честно сообщают, что драйвер работает только на 32-битных версиях Windows.
Во время разработки можно применять отладчик ядра, либо отключение проверки цифровых
подписей при запуске Windows. В обоих случаях неподписанный драйвер можно будет запустить.
_>меня больше беспокоит, что хотя и KmdManager показывает успешный статус регистрации и запуска — сообщения в DbgView все равно не отображаются — следовательно я не могу ни нормально отлаживать то, что написал, ни даже быть уверенным, что драйвер запущен и работает — кроме статуса в KmdManager об успешной установке мне ничего не говорит...
А отладочный режим загрузки Windows включен или нет ?
_>что имеется в виду под "отладчиком"?
WinDbg.
_>интересно. получается я просто создал сертификат с помощью утилиты MakeCert _>
_>это просто сертификат и он никак не привязан к моему конкретному драйверу. _>Зачем от тогда нужен в принципе? _>когда этот сгенерированный ключ будет затребован у пользователя?
Сертификат не привязывается к драйверу. И вообще к объекту, который им подписывается.
Сертификат — это своего рода удостоверение для пользователя (и для системы), что данные
(в данном случае файл драйвера) были созданы именно вами и не были модифицированы третьим лицом.
А тестовый сертификат нужен, повторяю, только для того, чтобы разработчик [компании] мог
свободно писать сценарии установки и тестировать драйвер так, как если бы там был реальный
сертификат. Когда драйвер будет готов и оттестирован, уполномоченное лицо компании подпишет
его настоящим сертификатом. Таким образом, с одной стороны, сохраняется удобство разработки, а
с другой — секьюрность, так как вероятность утечки сертификата уменьшается.
_>я нашел инетересный документ Kernel-Mode Code Signing Walkthrough, в котором описывается (в том числе), как используя тулзы можно создавать сертификат. _>это вообще нужный документ? — стоит на него тратить время?
Ну если Вы немного "плаваете" в теме сертификатов, то лишним точно не будет.