Windows driver kit как установить

Обновлено: 03.07.2024

  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Программирование драйверов устройств для чайников

Введение

В этой теме я планирую дать серию уроков, которые позволят любому человеку получить базовое представление о том, как устроена система взаимодействия прикладного ПО и драйверов ОС Windows, научиться читать исходные коды существующих драйверов устройств или написать свой собственный драйвер, работающий с его собственным устройством.

Также эти уроки могут помочь аудитории владельцев видеокарт с графическими чипами, произведенными компанией 3dfx, разобраться в доступных исходных кодах драйверов этих видеокарт. Упомянутые исходники могут быть с наименьшим количеством переделок откомпилированы под Windows XP/Windows 2003 Server, которые и будут являться основной целевой системой. В более современной Windows Vista/7 несколько изменилась модель драйверов, наиболее сильно это затронуло графическую подсистему. Это означает, что для их корректной работы придется переписать весьма значительную часть кода. Кроме того, под х64 версиями Vista/7 и более старших операционных систем просто так нельзя загрузить драйвер, не имеющей цифровой подписи. Подпись стоит порядка 500 долларов в год (150, если найти купон на скидку), их не любят давать частным лицам и даже небольшим организациям. Кроме того, если в подписанном драйвере обнаружится уязвимость и ей воспользуются хакеры – то подпись данного [почти всегда юридического] лица аннулируется и у него возникают проблемы с получением новой. Еще есть такая процедура, как WHQL-сертификация, но ее я вообще не собираюсь пока здесь обсуждать.

Весьма приветствуется, если другие люди будут давать здесь свои собственные уроки, не выходящие за пределы темы. Также здесь можно задавать любые вопросы, предлагать свои идеи для следующих уроков и отписываться об своих удачных/неудачных результатах.

Для начала работы требуется иметь некоторое знакомство с любым языком программирования. Думаю, для этого вполне достаточно школьного / вузовского курса для непрограммистов. Если же в современных программах образования знакомство с программированием не было предусмотрено/за давностью лет курс забыт или просто что-то непонятно – отписывайтесь в теме, я напишу другие уроки, подробней раскрывающие непонятную тему.

Хотелось бы также видеть уроки по работе с драйверами для Windows 9x. Например, для AALchemy есть драйвер для Windows XP. Но вот для Windows 9x - нет.

Урок 0. Установка и настройка программного обеспечения

Список используемого программного обеспечения:

Все используемое мною программное обеспечение – на английском языке. В большинстве случаев можно использовать и русские версии, но может возникнуть путаница в командах или другие проблемы с совместимостью. Для начала работы потребуется компьютер с установленной обычной 32-разрядной Windows XP/2003. Продвинутые пользователи могут пользоваться необычной – отладочной, она же - checked build. Эта версия показывает больше информации при отладке устройств. Обычная же версия Windows носит название free build. Компьютер для экспериментов может быть как реальным, так и виртуальным. Разрабатываемые программы я буду проверять на одной реальной машине и одной виртуальной. На обоих установлен Windows Server 2003 R2 Enterprise Edition c SP2. Виртуальная машина запущена под VMWare Workstation 8.0.2.

Установка Visual Studio
Я буду использовать Visual Studio 2010 Ultimate. В принципе, ставить ее не обязательно, так как все необходимые инструменты, включая компилятор и заголовки есть и в WDK. Но для написания прикладных программ, в особенности для новичка, она намного удобней вызова компилятора из консоли. Если ее все же планируется установить, то лучше делать это перед установкой WDK.

Изображение


Рис 0.1 – Выбор пакетов в установщике Visual Studio

Установка WDK
Монтируем скачанный iso-образ аналогично тому, как это было сделано с Visual Studio. Запускаем KitSetup.exe, на этапе выбора пакетов устанавливаем галочки в соответствии с рисунком:

Изображение


Рис 0.2 – Выбор пакетов в установщике WDK

В дальнейшем рассмотрим и драйверы для Windows 9x. Для этого потребуется другое программное обеспечение, но программирование драйверов для Windows 9x проще.

Инструменты для разработчиков программного обеспечения от компании Microsoft включает в официальный комплект различные библиотеки, пакеты программ, специальные компиляторы кода и другие не менее важные компоненты. Microsoft Windows SDK – представляет собой пакет различных программ и библиотек, которые необходимы для разработчика пишущего программы для ОС Windows. Помимо установки по умолчанию вместе с установкой операционной системы, его можно устанавливать и вместе с программой для разработки Visual Studio. На сайте можно скачать официальный web-инсталлятор пакета, который скачивается и устанавливается через интернет с официального сайта, автоматически определяя именно Ваш тип и версию операционной системы.

Коротко о главном

Короткая аббревиатура заключает в себе длинные слова — Software Development Kit (или набор программ разработчика). Многие думают, что можно любую программу для разработок софта назвать SDK, что это, например, компилятор Паскаля или Делфи. Однако, как и книгу нельзя судить по обложке, так и продукт — по его названию. SDK — это набор, расширяющий функционал программы, игры, комплекса продуктов, он дает возможность создать свою программу, уровень или дополнение, однако только с использованием наработок исходного.

Три кита SDK

SDK чаще всего заключает в себя три главных компонента. Самый важный — это сама программа или набор библиотек, позволяющих разработать новый продукт, на базе уже имеющегося.

Вторая часть — документация. Причем описано в ней все коротко, лаконично и просто. Она включает в себя Tutorial (пошаговое обучение в стиле «Сотворение мира за шесть простых шагов») и Reference — раздел, предоставляемый в виде справочника о том, что может быть сделано при помощи SDK.

Третий кусочек мозаики — самый любимый у тех, кто часто пользуется продуктом — готовые примеры. Причем почти всегда они охватывают все возможности комплекта разработчика. Благодаря их наличию часто можно пропустить любой Reference, не пытаясь вникнуть в программную среду. Образцы быстро познакомят пользователя с тем, что можно создать в предоставляемом пакете программ.

Есть такие люди, которые ленятся прочесть даже короткий Tutorial. А этого и не требуется! Возьмите пример, отредактируйте его, подгоните под свои критерии — и новый компонент программы уже готов.

sdk что это

Microsoft представила Windows 10 SDK и пролила свет на некоторые новшества

Microsoft представила предварительную версию официального набора инструментов разработчиков Windows 10. SDK (Software Development Kit) позволяет разработчикам создавать программы, используя все преимущества, API и новшества грядущей операционной системы. Например, появится возможность создания универсальных WinRT-приложений, которые смогут исполняться на ПК, планшетах, смартфонах и даже на Xbox One.


Одновременно был выпущен набор инструментов для создания эффективных и качественных драйверов аппаратной периферии с поддержкой последних возможностей Windows 10 — Windows Driver Kit (WDK). Заинтересованные разработчики могут скачать Windows 10 SDK и WDK с официального сайта.


Одним из ключевых новшеств Windows 10 SDK является инструмент Adaptive UX, который упрощает создание интерфейсов универсальных приложений и оптимизирован как для пользователей систем с клавиатурой и мышью, так и для владельцев сенсорных устройств вроде смартфонов и планшетов. Adaptive UX позволяет создавать интерфейс, который умеет подстраиваться как к небольшим экранам смартфонов, так и к дисплеям настольных ПК.


Кроме того, множество новых элементов управления в пользовательском интерфейсе Windows 10 во время работы умеют определять, каким способом пользователь взаимодействует с приложением, и соответствующим образом подстраиваются (например, на гибридном ноутбуке при нажатии пальцем на экран целевые области будут больше, чем при работе мышью).



Кроме того, в Windows 10, в том числе в мобильной версии для смартфонов и ARM-планшетов, появится новая платформа DirectInk. С её помощью разработчики смогут буквально несколькими строчками кода добавить в свои приложения поддержку перьевого ввода и распознавания рукописного текста. Microsoft считает, что расширение возможностей ОС в области естественных интерфейсов — очень важная область новаций.

Устройства Windows 10 будут выпускаться в самых разнообразных форматах и размерах, многие из них позволят рисовать на экране. Грядущая ОС наделена встроенной поддержкой нового оборудования для рукописного ввода с низкими задержками, в том числе на смартфонах. Кроме того, DirectInk поддерживает чувствительное к силе нажатия оборудование и улучшает распознавание случайных прикосновений ладонью при удерживании устройства.

Кстати, компания продолжает оптимизировать интерфейс Windows 10 для смартфонов — скриншот из недавней презентации WinHec говорит о том, что в панель Action Centre будут добавлены две новые удобные функции — вызов фонарика и инструмент Quicknote для быстрого добавления новых заметок.


От простого к сложному

После всего вышесказанного у читателя может возникнуть вопрос: «SDK — что это? Набор программ, которые не представляют интереса для настоящего разработчика и нужны только пользователям для мелкого баловства?» Отвечаем: все SDK могут быть условно разделены на две группы.

К первой нужно отнести комплекты для создания самостоятельных игр и программ. Самым хорошим примером будет DirectX, без которого сегодня не работает ни один компьютер с ОС Windows. Однако простым пользователям предоставляют только рабочие компоненты, необходимые для запуска приложений, созданных с использованием этого SDK. Для программистов же компания Microsoft предоставляет бесплатный комплекс DirectX SDK, который является компонентом более мощного продукта — Windows SDK. В нем содержатся все файлы, которые необходимы для написания нового приложения или компьютерной игры: библиотеки СИ++, компиляторы, многостраничная документация.

К подобным решениям можно отнести и Android SDK — программный комплекс, созданный для разработки приложений для смартфонов. При этом не нужно вникать в тонкости работы акселерометра или сенсора, функции уже добавлены в комплект.


Вторая группа SDK интереснее. Это не компоненты ОС, а огромные самодостаточные инструменты. Например, к ним можно отнести Torque или Unity — полноценные игровые движки, в которые включена поддержка самых передовых технологий. Однако отличаются подобные решения тем, что при помощи инструментов, входящих в поставку, можно создать замечательную игру или программу, не изучая программирование слишком глубоко — будет достаточно освоить азы. Очень часто в подобных продуктах используются свои скриптовые языки с упрощенными функциями.

Вывод

  1. Windows SDK AddOn — компонент для программистов.
  2. Для обычных юзеров не представляет никакой ценности.
  3. Теоритически можно удалить. Но возможно он нужен для работы каких-то программ, учитывая небольшой размер — советую оставить его.

«Узнай что такое аддоны!»

Написанный гайд больше всего подойдет новичкам которые только начали играть в World of Warcraft, но даже старые игроки смогут узнать что-то новое.

Для начала спрашивается! «А что такое Аддоны?»

Ну для начала скажем что Аддоны состоят из двух типов:
А)
В случае WoW — это дополнение к игровому интерфейсу (модификация). Разработчики игры дали нам возможность изменять весь игровой интерфейс: Изменить панели, кнопки и их расположение как вам угодно, удобство для выполнения квестов и прохождения подземелья/рейда. Так же можно увидеть, кто из игроков вашей Гильдии может создать предмет и какие реагенты для этого нужны, выведения конкретной информации в чат гильдии или на свой экран.
Б)
В другом случае игры – это дополнение к игре, которые выходят крайне редко! На данный момент в течение 5лет было выпущено два дополнения «Burning Crusade, Wrath of The Lich King», на сегодняшний день выпускается третье дополнение «Cataclysm». Другими словами добавление новых рас, классов, профессий, мобов, материков, НПС и другие всякие вещи.
Много новичков World of Warcraft сталкиваются с проблемой, «Какие аддоны использовать при прокачивания персонажа и после…»
Проще всего для нас удобно найти сайт посвященной игре (World of Warcraft) где возможно скачать те самые аддоны. Сайт который добивается высокой посещаемости, не будет делать всё в кучу, а разделит на доступные вам категории.
А)
При прокачивания персонажа – вам потребуется категория «Карты/Профессии», если вы хотите ощутить прекрасный мир игры в области PVE(игрок против монстров). Примерные аддоны:

Последняя версия не всегда лучшая

Обычно SDK, который только-только сходит с конвейера, заключает в себе не только новые наборы инструментов, но и большое количество ошибок и багов. Так, например, последний выпуск Java SDK имеет в названии цифру восемь. Однако многие не спешат обновлять свое программное обеспечение. Они остаются верны SDK 7-й версии.


Чтобы отлов багов и исправление ошибок было наиболее простым, разработчики создают сайт, на котором уютно располагается community — ассоциация разработчиков и пользователей SDK. Разные компании организуют общение разными способами, но зачастую на сайте располагается форум. Пользователи и программисты делятся на нем информацией о найденных недоработках, обсуждают тонкости работы в SDK, советуются и задают вопросы сотрудникам техподдержки.

Виртуальные машины для веб-разработчиков

Чтобы разработчики веб-приложений могли тестировать свои продукты для их идеальной работы в окнах браузеров Internet Explorer и Edge, Microsoft любезно предлагает им воспользоваться готовыми виртуальными машинами для разных гипервизоров, с разными версиями ознакомительных Windows и браузерами на их борту:

• Win7 с Internet Explorer 8, 9, 10, 11; • Win8.1 с Internet Explorer 11; • Win10 с Microsoft Edge.

Поставляются такие машины в формате их рабочих файлов для гипервизоров:

• Hyper-V; • VirtualBox; • VMware; • Vagrant; • Parallels Desktop.

Выбираем версию Windows, а в случае с 7-й еще и версию Internet Explorer.



Такие виртуальные машины полностью готовы к работе, они уже с установленными дополнениями гостевых ОС. Язык всех систем на борту машин английский, учётные записи запаролены, пароль (для всех):

Passw0rd!

Windows 10 и 8.1 в рамках этого проекта – это ознакомительные 90-дневные редакции Enterprise с предустановленными платформами Microsoft Silverlight, Microsoft Visual C++ 2008 и 2020 и ПО Puppet.


Версия «Десятки» постоянно обновляется, на данный момент это 1803. Windows 7 – это 10-дневная триалка редакции Enterprise с предустановленными платформами Microsoft Silverlight, NET Framework Client Profile и ПО OpenSSH.

Недостаток проекта – низкая скорость отдачи файлов серверов Microsoft.

Бесплатный сыр только в мышеловке?

Бывает, что разработчики создают новостную рассылку, в которой сообщают всем желающим о развитии своих инструментов и новых версиях. На форуме почти всегда можно найти ветку с подробной документацией, которая все время обновляется и дополняется. Добавьте к этому статьи авторов SDK, их общение с рядовыми участниками сообщества и круглосуточную работу сотрудников технической поддержки, и сразу станет ясно, что комьюнити — это не сообщество бесплатных тестеров SDK, что это попытка сделать продукт лучше и качественнее.

Как установить SDK 8 на Windows 7 32/64-bit

В связи с тем, что все давным давно обновили свои смартфоны до WP8.1, рекомендуем устанавливать SDK 8.1 Lite на свой компьютер.

Представляю вам способ по установке Windows Phone SDK 8 на Windows 7 32-бит или 64-бит. Многим известно то, что SDK 8 не удается установить на Windows 7 из-за ряда ограничений, оказывается это не так, Microsoft специально якобы убрала такую возможность, а все для того чтобы разработчики положили в казну Microsoft многочисленные вознаграждения за Windows 8.

Тем не менее нам, владельцам Windows Phone пакет разработки SDK 8 нужен в основном, чтобы сделать студенческий анлок и устанавливать взломанные игры на Windows Phone 8 смартфон. Теперь вы можете получить рабочие утилиты Windows Phone Developer Registration (регистрация телефона как разработчика) и Appication Deployment (установка XAP на смартфон с компьютера) таким способом.

Тестирование проходило на Windows 7 Ultimate x86 (32-бит) сборка 7601. Ниже на скриншоте показана работа этих двух утилит:


Внимание. Ставить все пакеты в инструкции ниже нужно на ЧИСТУЮ Windows 7. Если у вас был установлен пакет SDK 7.1, необходимо вычистить систему от него вплоть до реестра!
Пошаговая инструкция:

  1. Устанавливаем Framework 4.5 ().
  2. Скачиваем архив WPV.SDK.zip (зеркало) и распаковываем его.
  3. Запускаем WPSDK_en.msi в папке WPV.SDK SDK8.0.
  4. Нажимаем дважды кнопку «ОК», когда выскочит ошибка о невозможности создать ярлык.
  5. Запускаем и устанавливаем MobileTools_WPImages_enu.msi в папке WPV.SDK WPImages.
  6. Запускаем и устанавливаем MobileTools_ProfilerARM.msi в папке WPV.SDK MobileTools_ProfilerARM.
  7. Вставляем в телефон USB кабель от компьютера, нажимаем на Мой компьютер правой кнопкой мышки и заходим в Свойства.
  8. В новом окне нажимаем на Диспетчер устройств, в котором находим устройство Windows Phone 8 (в моем случае это Windows Phone 8S by HTC) со значком восклицательного знака в желтом треугольнике. Спойлер



Запустить утилиту Windows Phone Developer Registration вы можете из папки C:Program FilesMicrosoft SDKsWindows Phonev8.0ToolsPhone Registration. Или через Пуск -> Все программы -> Windows Phone SDK 8.0 -> Windows Phone Developer Registration.

Установить XAP на смартфон с Windows Phone 8 вы можете используя утилиту Application Deployment из папки C:Program FilesMicrosoft SDKsWindows Phonev8.0ToolsXAP Deployment. Или через Пуск -> Все программы -> Windows Phone SDK 8.0 -> Appication Deployment.

Внимание. Если при запуске Application Deployment у вас выбивает ошибку «Microsoft.SmartDevice.Connectity.PlatformNotFoundException» скачайте архив sdk7.1.7z, распакуйте его и запустите файл WPSDK_en.msi, дождитесь окончания установки.


Чтобы установить XAP на Windows Phone 8 читаем инструкцию Как установить XAP (в инструкции сразу же переходим к Способу №3)

date

16.10.2018

directory

Windows 10, Windows 7, Windows 8

comments

комментариев 55

Все 64 битные версии Windows, начиная с Windows 7, по умолчанию запрещают установку драйверов устройств, которые не подписаны с помощью корректной цифровой подписи. Неподписанные драйвер блокируются операционной системой. Наличие цифровой подписи гарантирует (в какой-то мере), что драйвер выпущен конкретным разработчиком или вендором, а его код не был модифицирован после того, как он был подписан.

В Windows 10/7 x64 существует несколько способов отключить проверку цифровой подписи устанавливаемого драйвера: с помощью групповой политики или тестового режима загрузки системы (подробнее все способы описаны в статье Отключаем проверку цифровой подписи для установки неподписанных драйверов в Windows).

Сегодня мы покажем, как можно самостоятельно подписать любой неподписанный драйвер для 64 битной версии Windows 10 или Windows 7.

Предположим, что у нас имеется драйвер некого устройства для x64 Windows 10 или Windows 7, у которого отсутствует цифровая подпись (в нашем примере это будет драйвер для довольно старой видеокарты). Архив с драйверами под нашу версию Windows (мне удалось найти драйвер для Windows Vista x64) был скачан с сайта производителя и его содержимое распаковано в каталог c:\tools\drv1\. Попробуем установить драйвер, добавив его в хранилище драйверов Windows с помощью стандартной утилиты pnputil.

Pnputil –a "C:\tools\drv1\xg20gr.inf"

Примечание. Эта и все последующие команды выполняются в командной строке, запущенной с правами администратора.

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

Windows 7 ошибка при установе драйвера без цифровой подписи

В Windows 10 такое предупреждение даже не появляется, а в консоли появляется предупреждение, что в стороннем INF файле отсутствует информация о цифровой подписи.

Не удалось добавить пакет драйвера: INF стороннего производителя не содержит информации о подписи

При попытке установить драйвер из проводника Windows, если вы щелкните ПКМ по inf файлу драйвера и выберите Install / Установить появится ошибка:

Установить драйвер из inf файла

The third-party INF does not contain digital signature information.

INF стороннего производителя не содержит информации о подписи.

INF файл драйвера стороннего производителя не содержит информации о подписи

Попробуем подписать данный драйвер с помощью самоподписанного сертификата.

Утилиты, необходимые для подписывания драйвера

Для работы нам понадобится скачать и установить (с настройками по умолчанию) следующие инструменты разработчика приложений для Windows.

Создаем самоподписанный сертификат и закрытый ключ

Создадим в корне диска каталог C:\DriverCert.

Откроем командную строку и перейдем в следующий каталог:

cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin

Создадим самоподписанный сертификат и закрытый ключ, выданный, допустим, для компании Winitpro:

makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN="Winitpro" C:\DriverCert\MyDrivers.cer

Во время создания утилита попросит указать пароль для ключа, пусть это будет P@ss0wrd.

Создаем самоподписаный сертификат

На основе созданного сертификата создадим публичный ключ для сертификата издателя ПО (PKCS).

cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc

Объединим публичный ключ (.spc) и персональный ключ (.pvk) в одном файле сертификата формата Personal Information Exchange (.pfx).

pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi P@ss0wrd -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po P@ss0wrd

$cert = New-SelfSignedCertificate -Subject "Winitpro” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My

Затем нужно экспортировать данный сертфикат в pfx файл с паролем:

$CertPassword = ConvertTo-SecureString -String “P@ss0wrd” -Force –AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\DriverCert\myDrivers.pfx -Password $CertPassword

создать самоподписанный сертфикат для подписывания кода в Powershell

Совет. Несмотря на то, что сертификат имеет ограниченный срок действия, истечение срока действия сертификата CodeSigning означает, что вы не сможете создавать новые сигнатуры. Срок действия драйвера, уже подписанного этим сертификатом, бессрочен (либо старые сигнатуры действуют в течении указанного timestamp).

Генерируем CAT файл драйвера

Создадим каталог C:\DriverCert\xg и скопируем в него все файлы из каталога, в который первоначально был распакован архив с драйвером (c:\tools\drv1\). Убедить что среди файлов имеются файлы с расширением .sys и .inf (в нашем случае xg20grp.sys и xg20gr).

Перейдем в каталог:

На основе inf файла с помощью утилиты inf2cat.exe (входит в состав Windows Driver Kit -WDK) сгенерируем для нашей платформы cat файл (содержит информацию о всех файлах пакета драйвера).

inf2cat.exe /driver:"C:\DriverCert\xg" /os:7_X64 /verbose

Генерируем cat файл драйвера на основе inf файла

Signability test complete .
и
Catalog generation complete .

Совет. В моем случае команда Inf2Cat.exe вернула ошибку:

Signability test failed.

22.9.7: DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS) in \hdx861a.inf

DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS)

Для исправления ошибки нужно в секции [Version] найти строку с DriverVer= и заменить ее на:

DriverVer=05/01/2009,9.9.9.9

После выполнения команды в каталоге драйвера должен обновиться файл g20gr.cat

Подписываем драйвер самоподписанным сертификатом

Перейдите в каталог:

cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64"

Подпишем комплект файлов драйвера созданным нами сертификатом, в качестве сервиса таймстампа (штамп времени) воспользуемся ресурсом Globalsign. Следующая команда подпишет CAT файл цифровой подписью с помощью сертификата, хранящегося в PFX-файл, защищенном паролем.

signtool sign /f C:\DriverCert\myDrivers.pfx /p P@ss0wrd /t http://timestamp.globalsign.com/scripts/timstamp.dll /v "C:\DriverCert\xg\xg20gr.cat"

signtool Подписываем драйвер с помощью сертификата

Если файл подписан успешно, должна появится надпись:

Successfully signed: C:\DriverCert\xg\xg20gr.cat
Number of files successfully Signed: 1

Примечание. Цифровая подпись драйвера содержится в .cat файле, на который ссылается .inf файл драйвера. С помощью следующей команды можно проверить цифровую подпись драйвера в cat файле:

SignTool verify /v /pa c:\DriverCert\xg\xg20gr.cat

SignTool verify - проверить cat файл

Лидо в свойствах файла на вкладке Digital Signatures.

показать сертфикат cat файла

CAT файл содержит цифровые подписи (отпечатки / thumbprints) всех файлов, которые находятся в каталоге драйвера (файлов, которые указаны в INF файле в секции CopyFiles). Если любой из этих файлов был изменен, то контрольная сумма файлов не будет совпадать с данными в CAT файле, в результате установка такого драйвера закончится ошибкой.

Установка сертификата

Т.к. созданный нами сертификат является самоподписанным, система по-умолчанию ему не доверяет. Добавим наш сертификат в локальное хранилище сертификатов. Сделать это можно с помощью команд:

certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DriverCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER

Или из графического мастера добавления сертификатов (сертификат нужно поместить в хранилища Trusted Publishers и Trusted Root Certification Authorities локальной машины). В домене вы можете централизованно распространить этот сертификат на рабочие станции с помощью групповой политики.

Добавляем сертификат в доверенные

самоподписанный сертфикат

Примечание. Проверить наличие созданного нами сертификата в доверенных можно, открыв оснастку управления сертификатами (certmgr.msc) и проверив наличие созданного нами сертификата (выдан для winitpro) в соответствующих хранилищах. Примечание. При проверке хранилища сертификатов с помощью утилиты Sigcheck этот сертификат будет отображаться как недоверенный, т.к. он отсутствует в списке со списком корневых сертификатов Microsoft (этот список нужно периодически обновлять).

Установка драйвера, заверенного самоподписанным сертификатом

Попробуем еще раз установить подписанный нами драйвер, выполнив команду:

Pnputil –i –a C:\DriverCert\xg20\xg20gr.inf

Теперь в процессе установки драйвера, окна-предупреждения об отсутствующей цифровой подписи драйвера не появится.

Successfully installed the driver on a device on the system.
Driver package added successfully.

установка самоподписанного драйвера

В Windows 7 появляется такое предупреждение. о том, уверены ли вы, что хотите установить этот драйвер (в Windows 10 x64 1803 такое всплывающее окно не появляется). Нажав «Install», вы установите драйвер в системе.

Установка самоподписаного драйвера в windows 7

setupapi.dev.log

Если установка драйвера прошла успешно, в файле setupapi.dev.log будут примерно такие строки:

Как вы видите, для установки самоподписанного драйвера нам даже не пришлось отключать проверку цифровой подписи драйверов с помощью bcdedit.exe, как описано здесь (команды bcdedit.exe /set loadoptions DISABLE_INTEGRITY_CHECKS и bcdedit.exe /set testsigning ON ).

Предыдущая статья Следующая статья

page

page

page

Несколько одновременных RDP сессий пользователей в Windows 10 и 11 Восстановление EFI загрузчика в Windows 10 RDS Shadow – теневое подключение к RDP сеансам пользователей в Windows Server 2016/2019 Загрузка Windows 7/10 с GPT диска на BIOS системе (без UEFI)

Инструкция отличнейшая. наконец то можно будет нормально обходится без виртуальной машины 32 битной , спасибо.

Попробовал. Получилось отлично. У драйвера показывает цифровую подпись. Установилось через devcon без всяких всплывающих окошек.

Через pnputil тоже нормально.

Спасибо за мануал. Успешно подписал TAP драйвер к OpenVPN. Ставится без проблем

Это боты-накрутчики успешно установили? Только что сделал всё по инструкции с точностью до символа: ошибка 52. Либо у людей винда 32-битная, либо TESTSIGNING включен. Либо боты-накрутчики.

кто встретился с проблемой установки SDK, удалите MS Visual C ++ 2010 года, как и 32 так и 64 битную версии

Руслан, расскажите, как получилось (если ещё в памяти свежо). У меня драйвер отлично установился по этим рекомендациям, но с AVR910 ошибка 43 (недопустимый дескриптор usb конфигурации. Windows10.

Здравствуйте.
Сделал всё по инструкции, в свойствах драйвера числится, что он подписан. Сертификаты установил в указанное инструкцией место.
Но при попытке установить драйвер, система отображает предупреждение о том, что не может проверить цифровую подпись данного драйвера. В итоге ошибка 52.

Ребята никто не поможет подписать драйвер для телефона FLY IQ436? Самому повторить вышеописанную процедуру слишком сложно! Помогите пожайлуста в СКАЙПЕ Я PatronDragon.

Дохожу до пункта На основе inf файла сгенерируем для нашей платформы cat файл (содержит информацию о всех файлах пакета драйвера). и не знаю какой файл у себя выбрать!? Какой не беру всё равно пишет does not exist! ЧТО ДЕЛАТЬ?

У меня в папке с моим драйвером нет файла inf! Что делать?

Без inf файла у вас ничего не получится, т.к. в именно в нем описывается порядок установки и структура исполняемых файлов драйвера. Посмотрите, возможно он у вас в каком-нибудь архиве лежит (rar, zip, cab)

Хм, зачем тогда авторы пишут такие статьи?

С помощью такой подписи от GoDaddy получится сделать .cat из .inf и .sys ?

Ты не мог бы мне помочь подписать драйвер ?
у тебя ещё год не прошёл вроде
очень нужно

Я написал свой WDF драйвер и подписал его с помощью этого мануала, за что огромное спасибо написавшему! Написал инсталлятор на wix и дрова прекрасно ставятся на x64 Винду 10.0 без включения тестмода и проверки подписей, даже предупреждение не отображается. С другой стороны 8000 это не деньги, конечно, для фирмы средней руки

Всё, похоже GoDaddy прикрыли лавочку продажи сертификатов подписи кода и драйверов. Вот что на сайте у них:

С 1 июня 2021 года GoDaddy больше не будет выдавать и продлевать сертификаты подписи кода и драйверов. Если у вас уже есть сертификат подписи кода или драйвера, вы не сможете повторно создать его ключ после 1 июня 2021 года. Все сертификаты, выданные до 1 июня 2021 года, будут действительны до истечения их срока действия

С помощью такой подписи от GoDaddy получится сделать .cat из .inf и .sys ?

В результате подписывания исходные .inf и .sys как-то модифицируются или никак не затрагиваются?
Их исходники не нужны для подписывания драйвера?

Если я куплю такого типа сертификат, то получится ли с его помощью заменить подпись в некоем драйвере на свою?
Например, есть подписанный драйвер ( состоит из .inf, .sys , .cat файлов ).
Получится ли убрать от него .cat и создать новый .cat ( командами inf2cat.exe и signtool.exe ), подписанный таким сертификатом?
Такой драйвер будет нормально работать?
Другими словами , работает ли такое, что можно убрать одну цифровую подпись и вместо неё поставить другую?

Сергей, Вы получили сертификат с алгоритмом хеширования подписи SHA1, SHA2 или с SHA256?
Надо ли на винду ставить какие-то апдейты или пэтчи, чтобы подписанные драйверы не выдавали ошибку 52?

SHA1 и SHA2. Подписал с использованием SHA2, чтобы и Win10 охватить. По идее, Win7 должна понимать SHA2 только после патча, в реальности же на Win7 x64 драйвер встаёт (что без подписи невозможно), но Винда говорит, что подписи нет 🙂

Сергей, я могу обратить к Вам за помощью. Вы бы не смогли подписать всего один драйвер. Я бы Вам мог их скинуть на почту. Если сможете помочь прошу отзовитесь. Был бы Вам очень признателен!

А на 32 битной Windows 7 можно как-то подписать драйвер?

Сам отвечу, можно, на процессе создание cat файла нужно записать не x64, a x86. Спасибо, инструкция рабочая

Я так и сделал, правда сначала получил какую-то ошибку, исправил, и второй раз все получилось.

Спасибо за отзыв! Поправил путь

Сделал все как описано. Подписал драйвер старого оборудования для сетевой карты. Все работает на сервер 2012 r2 без тестового режима.

Отличная статья, получилось сделать на Windows server 2012.
Проблемы возникли такие:
22.9.4: Missing 32-bit CatalogFile entry (CatalogFile.ntx86, CatalogFile.nt, CatalogFile) from [Version] section in \skeyusb.inf

но все решил добавлением в файл inf строчки CatalogFile(или разкоментированием).
даже установка сертификата на сервер не нужна была. Спасибо огромное. Как вы это придумываете))

Решил разобраться в технологии сертификации. Второй день читаю горы материала в интернете и нигде нет простого и четкого объяснения, как Windows работает с цифровыми подписями и сертификатами. Что с чем сравнивается и когда? Везде куски специальной информации или бесконечные переписывания одних и тех же вещей. Ощущение, что никто до конца не понимает этой темы.

потому что это секрет Майков

Done Adding Additional Store
SignTool Error: The specified timestamp server either could not be reached or
returned an invalid response.
SignTool Error: An error occurred while attempting to sign: C:\DriverCert\xg\gn246hl.cat

может кто встречался с такой проблемой?
пишет что сервер временной метки дает неправильный ответ


Процессорные архитектуры x86 и x64 имеют четыре кольца защиты, из которых в Windows по факту используются всего два — это ring 3 (режим пользователя) и ring 0 (режим ядра). Бытует мнение, что код режима ядра — самый привилегированный и «ниже» ничего нет. На самом деле архитектура x86/x64 позволяет опускаться еще ниже: это технология виртуализации (hypervisor mode), которая считается кольцом −1 (ring −1), и режим системного управления (System Management Mode, SMM), считающийся кольцом −2 (ring −2), которому доступна память режима ядра и гипервизора.

Итак, мы решили писать собственный драйвер. Начнем с выбора инструментария. Я советую использовать Microsoft Visual Studio, как наиболее user-friendly IDE. Также необходимо будет установить Windows SDK и Windows Driver Kit (WDK) для твоей версии ОС. Кроме того, я крайне рекомендую запастись такими утилитами, как DebugView (просмотр отладочного вывода), DriverView (позволяет получить список всех установленных драйверов) и KmdManager (удобный загрузчик драйверов).

Драйверы в Windows начиная с Vista могут быть как режима пользователя (User-Mode Driver Framework, UMDF), так и режима ядра (Kernel-Mode Driver Framework, KMDF). Более ранние драйверы Windows Driver Model (WDM) появились в Windows 98 и сейчас считаются устаревшими.

Драйверы UMDF имеют намного более ограниченные права, чем KMDF, однако они используются, например, для управления устройствами, подключенными по USB. Помимо ограничений, у них есть очевидные плюсы: их намного проще отлаживать, а ошибка в их написании не вызовет глобальный системный сбой и синий экран смерти. Такие драйверы имеют расширение dll.

Что до драйверов режима ядра (KMDF), то им дозволено куда больше, а расширение файлов, закрепленное за ними, — это sys. В этой статье мы научимся писать простые драйверы режима ядра, напишем драйвер для скрытия процессов методом DKOM (Direct Kernel Object Manipulation) и его загрузчик.

Создание драйвера KMDF

После того как ты создашь проект драйвера, Visual Studio автоматически настроит некоторые параметры. Проект будет компилироваться в бинарный файл в соответствии с тем, какая выбрана подсистема. Наш вариант — это NATIVE, подсистема низкого уровня, как раз для того, чтобы писать драйверы.

Точка входа в драйвер

Строго говоря, точка входа в драйвер может быть любой — мы можем сами ее определить, добавив к параметрам компоновки проекта -entry:[DriverEntry] , где [DriverEntry] — название функции, которую мы хотим сделать стартовой. Если в обычных приложениях основная функция обычно называется main, то в драйверах точку входа принято называть DriverEntry.

Выглядеть это будет так:

Давай пройдемся по параметрам, которые передаются DriverEntry . pDriverObject имеет тип PDRIVER_OBJECT , это значит, что это указатель на структуру DRIVER_OBJECT , которая содержит информацию о нашем драйвере. Мы можем менять некоторые поля этой структуры, тем самым меняя свойства драйвера. Второй параметр имеет тип PUNICODE_STRING , который означает указатель на строку типа UNICODE . Она, в свою очередь, указывает, где в системном реестре хранится информация о нашем драйвере.

WARNING

Любая ошибка в драйвере может вызвать общесистемный сбой и BSOD. Вероятна потеря данных и повреждение системы. Все эксперименты я рекомендую проводить в виртуальной машине.

Interrupt Request Level (IRQL)

IRQL — это своеобразный «приоритет» для драйверов. Чем выше IRQL, тем меньшее число других драйверов будут прерывать выполнение нашего кода. Существует несколько уровней IRQL: Passive, APC, Dispatch и DIRQL. Если открыть документацию MSDN по функциям WinAPI, то можно увидеть примечания, которые регламентируют уровень IRQL, который требуется для обращения к каждой функции. Чем выше этот уровень, тем меньше WinAPI нам доступно для использования. Первые три уровня IRQL используются для синхронизации программных частей ОС, уровень DIRQL считается аппаратным и самым высоким по сравнению с программными уровнями.

Пакеты запроса ввода-вывода (Input/Output Request Packet)

IRP — это запросы, которые поступают к драйверу. Именно при помощи IRP один драйвер может «попросить» сделать что-то другой драйвер либо получить запрос от программы, которая им управляет. IRP используются диспетчером ввода-вывода ОС. Чтобы научить программу воспринимать наши IRP, мы должны зарегистрировать функцию обратного вызова и настроить на нее массив указателей на функции. Код весьма прост:

А вот код функции-заглушки, которая всегда возвращает статусный код STATUS_SUCCESS . В этой функции мы обрабатываем запрос IRP.

Теперь любой запрос к нашему драйверу вызовет функцию-заглушку, которая всегда возвращает STATUS_SUCCESS . Но что, если нам нужно попросить драйвер сделать что-то конкретное, например вызвать определенную функцию? Для этого регистрируем управляющую процедуру:

Здесь мы объявили процедуру с именем IRP_MY_FUNC и ее кодом — 0x801 . Чтобы драйвер ее обработал, мы должны настроить на нее ссылку, создав таким образом дополнительную точку входа в драйвер:

После этого нам нужно получить указатель на стек IRP, который мы будем обрабатывать. Это делается при помощи функции IoGetCurrentIrpStackLocation , на вход которой подается указатель на пакет. Кроме этого, необходимо будет получить от диспетчера ввода-вывода размеры буферов ввода-вывода, чтобы иметь возможность передавать и получать данные от пользовательского приложения. Шаблонный код каркаса обработчика управляющей процедуры:

Продолжение доступно только участникам

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Читайте также: