How to Install Driver with a cat file?
I have kernel driver. When installing on 32 bit systems and Windows XP and below, I had no problem and used SetupCopyOEMInf, but 64 bit drivers are required to be signed. I have signed it and I need to have a cat file with the driver copied somewhere on the computer, and this method of install doesn’t work. How should I install it?
EDIT: Clarified the question.
2 Answers 2
In Windows Vista and Windows 7 there a new utility for handling drivers setup call PnPUtil. It handles exactly this kind of work. Just copy all your driver relevant files(*.inf, *.cat, *.sys) to a directory on the target computer and use PnPUtil -i -a <InfName>.inf
Note: You will need to be in an administrator context to successfully use this tool.
You need to get an Authenticode signature, create a catalog file, and sign it with that. Microsoft decided that, for 64-bit systems, it will require the driver to come untampered from the vendor, by checking it signature.
(Note: This is not the same as WHQL, which tests the quality of the driver. Authenticode merely indicates that the driver hasn’t been tampered with by some malicious user or virus; it doesn’t say anything about what the driver does, so it’s a relatively easy — although pricey — signature to obtain.)
Another solution is test-signing, if you don’t plan on redistributing your program. https://technet.microsoft.com/library/dd919230.aspx
-
The Overflow Blog
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.3.43277
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Как установить драйвер с файлом cat?
У меня есть драйвер ядра. При установке на 32-битных системах и Windows XP и ниже у меня не было проблем и я использовал SetupCopyOEMInf, но 64-битные драйверы должны быть подписаны. Я подписал его, и мне нужно иметь файл cat с драйвером, скопированным где-то на компьютере, и этот метод установки не работает. Как я должен установить его?
EDIT: уточнил вопрос.
2 ответов
в Windows Vista и Windows 7 появилась новая утилита для обработки вызова установки драйверов команду pnputil. Он выполняет именно такую работу. Просто скопируйте все соответствующие файлы драйвера(*.инф *.кошка, *.sys) в каталог на целевом компьютере и используйте PnPUtil -i -a <InfName>.inf
Примечание: Для успешного использования этого инструмента вам нужно быть в контексте администратора.
вам нужно Authenticode подпись, создайте файл каталога и подпишите его этим. Microsoft решила, что для 64-разрядных систем потребуется, чтобы драйвер не был изменен поставщиком, проверив его подпись.
(Примечание: это не то же самое, что WHQL, который проверяет качество водителя. Authenticode просто указывает, что драйвер не был изменен каким-либо вредоносным пользователем или вирусом; он не говорит что-нибудь о том, что делает водитель, так что это относительно легко-хотя и дорого-подпись для получения.)
Как подписать драйвер Windows с помощью самоподписанного сертификата?
15.02.2022
itpro
Windows 10, Windows 11, Windows 7, Windows Server 2019
комментариев 57
Все 64 битные версии Windows по умолчанию запрещают установку драйверов устройств, которые не подписаны с помощью корректной цифровой подписи. Неподписанные драйвер блокируются операционной системой. Наличие цифровой подписи гарантирует, что драйвер выпущен доверенным разработчиком или вендором, а его код не был модифицирован.
В Windows x64 вы можете отключить проверку цифровой подписи устанавливаемого драйвера: с помощью групповой политики или тестового режима загрузки системы (подробнее все способы описаны в статье Отключаем проверку цифровой подписи для установки неподписанных драйверов в Windows).
Сегодня мы покажем, как можно самостоятельно подписать любой неподписанный драйвер для x64 битной версии Windows (инструкция применима для Windows 11, 10, 8.1 и 7).
Предположим, что у нас имеется драйвер некого устройства для x64 Windows 10, у которого отсутствует цифровая подпись (в нашем примере это будет драйвер для довольно старого графического адаптера видеокарты). Я скачал архив с драйверами для Windows с сайта производителя (мне удалось найти драйвер только для Windows Vista x64). Архив с драйвером я распаковал в каталог c:\tools\drv1\. Попробуем установить драйвер, добавив его в хранилище драйверов Windows с помощью стандартной утилиты pnputil.
Pnputil –a «C:\tools\drv1\xg20gr.inf»
При установке драйвера в Windows 7 появляется предупреждение о том, что ОС не может проверить цифровую подпись драйвера.
В Windows 10 (21H1) появляется предупреждение:
Такая же ошибка появляется при установке драйвера из проводника Windows (щелкните ПКМ по inf файлу драйвера и выберите Install / Установить):
Попробуем подписать данный драйвер с помощью самоподписанного сертификата.
Для работы нужно скачать и установить следующие инструменты разработчика приложений для вашей версии Windows.
- WindowsSDK (или Microsoft Visual Studio 2005 или выше) для вашей версии Windows. В состав этих пакетов входит WindowsSDKSigningtoolsforDesktop, в которую включена необходимая нам утилита — signtool.exe ;
- Windows Driver Kit (WDK) — https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
Создаем самоподписанный сертификат драйвера
Создайте в корне диска каталог C:\DriverCert .
Для создания самоподписанного сертификата типа Code Signing можно использовать PowerShell командлет New-SelfSifgnedCertificate. В этом примере мы создадим самоподписанный сертификат со сроком действия 3 года.
$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
$cert = New-SelfSignedCertificate -Subject «Winitpro” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My -notafter $add3year
Затем нужно экспортировать данный сертификат в pfx файл с паролем:
$CertPassword = ConvertTo-SecureString -String “[email protected]” -Force –AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:\DriverCert\myDrivers.pfx -Password $CertPassword
Теперь нужно добавить сертификат в доверенные корневые сертификаты и в сертификаты доверенных издателей:
$certFile = Export-Certificate -Cert $cert -FilePath C:\DriverCert\drivecert.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName
Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $certFile.FullName
cd “C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin”
makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN=»Winitpro» C:\DriverCert\MyDrivers.cer
Укажите пароль для ключа (например, [email protected] ).
На основе созданного сертификата создайте публичный ключ для сертификата издателя ПО (PKCS).
cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc
Объедините публичный ключ (.spc) и персональный ключ (.pvk) в одном файле сертификата формата Personal Information Exchange (.pfx).
pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi [email protected] -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po [email protected]
Добавьте сертификат в доверенные:
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 локальной машины).
Генерируем CAT файл драйвера
Создайте каталог C:\DriverCert\xg и скопируйте в него все файлы из каталога, в который первоначально был распакован архив с драйвером (c:\tools\drv1\). Убедить что среди файлов имеются файлы с расширением .sys и .inf (в нашем случае xg20grp.sys и xg20gr.inf).
md C:\DriverCert\xg
xcopy c:\tools\drv1\ C:\DriverCert\xg /i /c /k /e /r /y
Перейдем в каталог:
cd “C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86”
На основе inf файла с помощью утилиты inf2cat.exe (входит в состав Windows Driver Kit -WDK) сгенерируйте cat файл (содержит информацию о всех файлах пакета драйвера).
inf2cat.exe /driver:»C:\DriverCert\xg» /os:7_X64 /verbose
Чтобы убедитесь, что процедура прошла корректно, проверьте, что в каталоге появился файл C:\DriverCert\xg\xg20gr.cat, и в логе есть сообщения:
Для исправления ошибки нужно в секции [Version] найти строку с DriverVer= и заменить ее на:
Если у вас появится ошибка Missing AMD64 CatalogFile entry (для 64-бит) или Missing 32-bit CatalogFile entry . Нужно в секцию [Version] .inf файла добавить строку CatalogFile=xg20gr.cat .
Подписываем драйвер самоподписанным сертификатом
Перейдите в каталог:
cd «C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64»
Подпишите комплект файлов драйвера созданным сертификатом. В качестве сервиса таймстампа (штамп времени) воспользуемся ресурсом Globalsign. Следующая команда подпишет CAT файл цифровой подписью с помощью сертификата, хранящегося в PFX-файл, защищенном паролем.
signtool sign /f C:\DriverCert\myDrivers.pfx /p [email protected] /t http://timestamp.globalsign.com/scripts/timstamp.dll /v «C:\DriverCert\xg\xg20gr.cat»
В современных версиях Windows 10 и Windows 11 при выполнении этой команды появится ошибка:
Нужно использовать другую команду:
signtool sign /tr http://timestamp.digicert.com /td SHA256 /v /f C:\DriverCert\myDrivers.pfx /p [email protected] «C:\DriverCert\xg\xg20gr.cat»
Если файл подписан успешно, должна появится надпись:
Цифровая подпись драйвера содержится в .cat файле, на который ссылается .inf файл драйвера. С помощью следующей команды можно проверить цифровую подпись драйвера в cat файле:
SignTool verify /v /pa c:\DriverCert\xg\xg20gr.cat
Также можно увидеть информацию о сертификате в свойствах CAT файла на вкладке Digital Signatures.
Если сертификат не доверенный (или не был добавлен в хранилище корневых доверенных сертификатов), то при выполнении команды SignTool verify появится ошибка:
Установка драйвера, заверенного самоподписанным сертификатом
Попробуйте еще раз установить подписанный вами драйвер, выполнив команду:
Pnputil –i –a C:\DriverCert\xg20\xg20gr.inf
В Windows 10 и 11 появляется предупреждение о том, уверены ли вы, что хотите установить этот драйвер. Нажав Install, вы установите драйвер в системе.
Если по каким-то причинам драйвер не устанавливается, подробный лог установки драйвера содержится в файле C:\Windows\inf\setupapi.dev.log. Этот лог позволит вам получить более подробную информацию об ошибке установки. В большинстве случаев возникает ошибка Driver package failed signature validation . Скорее всего это означает, что сертификат драйвера не добавлен в доверенные сертификаты.
Если установка драйвера прошла успешно, в файле setupapi.dev.log будут примерно такие строки:
Драйверы Kernel-Mode и User-Mode
Напомню, что в Windows драйвер могут выполнятся либо в режиме ядра (kernel-mode), либо в режиме пользователя (user-mode). Драйверы режима ядра, подписанные таким образом не будут загружаться при загрузке Windows в режиме UEFI Secure Boot с ошибкой:
Проверить, включен ли режим Secure Boot можно с помощью команды:
Все драйвера, режима ядра, загружаемые при включенном SecureBoot, должны быть подписаны в ходе процесса сертификации Microsoft (WHQL — Windows Hardware Quality Lab). Причина в том, что при загрузке ядра, UEFI не может проверить сертификаты в локальном хранилище Windows.
Microsoft ввела обязательную сертификацию сторонних драйверов по программе Windows Hardware Compatibility Program начиная с Windows 10 1607.
Само подписанные драйвера режима пользователя (это обычно принтеры, сканеры, плоттеры и т.д.) будут работать даже при включенном SecureBoot.
Для kernel-mode драйверов придется отключить проверку цифровой подписи при загрузке и загружаться в тестовом режиме с помощью bcdedit.exe, как описано здесь:
bcdedit.exe /set /nointegritychecks on
bcdedit.exe /set testsigning ON
Предыдущая статья Следующая статья
alt=»RDPConfig поддержка последних версий windows 10″ width=»58″ height=»56″ /> Несколько одновременных RDP сессий пользователей в Windows 10 и 11
alt=»Ошибка загрузки Windows 8: The boot configuration data for your PC is missing or contains errors. File :\EFI\Microsoft\Boot\BCD Error code: 0xc000000f» width=»58″ height=»56″ /> Восстановление EFI загрузчика в Windows 10 и 11
alt=»Новые параметры mstsc в Windows 8.1″ width=»58″ height=»56″ />RDS Shadow – теневое подключение к RDP сеансам пользователей в Windows Server 2016/2019
Инструкция отличнейшая. наконец то можно будет нормально обходится без виртуальной машины 32 битной , спасибо.
Не работает! Подписываю драйвер, в его свойствах значится, что он подписан — но при установке Винда говорит: ошибка 52, не могу проверить цифровую подпись. Если б подписывание можно было так легко обойти — кто б тогда заносил бы M$ денежки за подписи?
Попробовал. Получилось отлично. У драйвера показывает цифровую подпись. Установилось через devcon без всяких всплывающих окошек.
Через pnputil тоже нормально.
Спасибо за мануал. Успешно подписал TAP драйвер к OpenVPN. Ставится без проблем
Это боты-накрутчики успешно установили? Только что сделал всё по инструкции с точностью до символа: ошибка 52. Либо у людей винда 32-битная, либо TESTSIGNING включен. Либо боты-накрутчики.
Как связаться с автором статьи? Очень нужно. Не получается, а очень нужно… [URL=http://fastpic.ru/view/59/2015/0214/5ceb244614504aae1dd1d1fe8e607b6f.png.html][IMG]http://i59.fastpic.ru/thumb/2015/0214/6f/5ceb244614504aae1dd1d1fe8e607b6f.jpeg[/IMG][/URL]
кто встретился с проблемой установки SDK, удалите MS Visual C ++ 2010 года, как и 32 так и 64 битную версии
Точнее, проблема в VC++ 2010 Redistributable!
Их можно смело удалить — SDK поставит свои.
Спасибо большое! Наконец-то установил драйвер к своему «любимому» PROTOSS AVR910.
Просто сказочное пособие.
Руслан, расскажите, как получилось (если ещё в памяти свежо). У меня драйвер отлично установился по этим рекомендациям, но с AVR910 ошибка 43 (недопустимый дескриптор usb конфигурации. Windows10.
Здравствуйте.
Сделал всё по инструкции, в свойствах драйвера числится, что он подписан. Сертификаты установил в указанное инструкцией место.
Но при попытке установить драйвер, система отображает предупреждение о том, что не может проверить цифровую подпись данного драйвера. В итоге ошибка 52.
Переустановил сертификаты с помощью «certmgr.exe», вчера делал это через «графический мастер добавления сертификатов». Красное окошко появляться перестало, но в диспетчере устройств всё равно ОШИБКА 52.
Пожалуйста, помогите решить проблему.
Ребята никто не поможет подписать драйвер для телефона FLY IQ436? Самому повторить вышеописанную процедуру слишком сложно! Помогите пожайлуста в СКАЙПЕ Я PatronDragon.
Дохожу до пункта На основе inf файла сгенерируем для нашей платформы cat файл (содержит информацию о всех файлах пакета драйвера). и не знаю какой файл у себя выбрать!? Какой не беру всё равно пишет does not exist! ЧТО ДЕЛАТЬ?
У меня в папке с моим драйвером нет файла inf! Что делать?
Без inf файла у вас ничего не получится, т.к. в именно в нем описывается порядок установки и структура исполняемых файлов драйвера. Посмотрите, возможно он у вас в каком-нибудь архиве лежит (rar, zip, cab)
А сам автор статьи пробовал данный алгоритм?
Уж слишком он непростой, а впустую не хотелось бы всё это проделать…
Послушайте, люди, не имея цифровой подписи — невозможно подписать драйвер, чтобы он нормально устанавливался! Винда признает лишь драйвер, подписанный с помощью цифровой подписи, и то не всякой — а лишь выданной центром сертификации, кросс-сертификат которого входит в дистрибутив Виндов. И всё. Механизм там заложен такой. Никакие другие танцы с бубнами не канают, пустая трата времени. Помучавшись и убедившись в этом — пошёл и купил цифровую подпись для подписывания драйвером у GoDaddy, у них дешевле всего, 8 тыр за год. И могу целый год подписывать свои драйверы, хоть для Win7 64-битной, хоть для Win10 (потому что будет и SHA1, и SHA2).
Подписал, теперь устанавливаются в любую Винду.
Хм, зачем тогда авторы пишут такие статьи?
Если купить цифровую подпись на год, то что станет с подписанными ей драйверами через год?
Они перестанут действовать или нет?
Или год — это только срок действия подписи, а всё ей подписанное действует бессрочно?
Подписанное — бессрочно. Год — срок действия ЦП, подписывать можно в течении года.
Зачем пишут такие статьи… сложно сказать. Возможно, на именно семёрке, в дебаг-режиме, чисто для себя — оно и прокатит (хоть у меня и не заработало). Но для себя можно и по F8 грузиться, отключая проверку ЦП! А чтобы устанавливалось нормально на всех весиях ОС, включая 10ку — лучше подписать. Уж коммерческий продукт — точно!
С помощью такой подписи от GoDaddy получится сделать .cat из .inf и .sys ?
Привет !
ты правильно пишешь — этим способом как в статье тут написано можно только в тестовом режиме на 64 бит винде работать.
А чтобы без тестового режиме работать — необходимо купить драйвера.
Ты не мог бы мне помочь подписать драйвер ?
у тебя ещё год не прошёл вроде
очень нужно
Я написал свой WDF драйвер и подписал его с помощью этого мануала, за что огромное спасибо написавшему! Написал инсталлятор на wix и дрова прекрасно ставятся на x64 Винду 10.0 без включения тестмода и проверки подписей, даже предупреждение не отображается. С другой стороны 8000 это не деньги, конечно, для фирмы средней руки
Добрый день.
Перейду сразу к делу. Есть патченный драйвер х64 программы Shadow Defender — изменены пути хранения данных. Необходимо его подписать валидной подписью для Windows 7 x64. Для других систем не нужно. Да и вообще будет использоваться только в своей системе. Не для продажи распространения далее. Драйвер бут режима. Сам разработчик на связь не выходит, а очень нужно. Драйвер используется в интернет-кафе с 2014 года с включенным тестовым режимом для цифровой подписи. Но блин с недавнего времени античиты для игр стали ругаться на включенный тестовый режим.
Подскажите пожалуйста наиболее дешевый способ подписать этот драйвер. Подойдет даже чтоб кому-то его выслал и тот чел подписал своим сертификатом. Главное чтоб 7ка его признавала любым способом но без включения тестового режима.
Всё, похоже GoDaddy прикрыли лавочку продажи сертификатов подписи кода и драйверов. Вот что на сайте у них:
С 1 июня 2021 года GoDaddy больше не будет выдавать и продлевать сертификаты подписи кода и драйверов. Если у вас уже есть сертификат подписи кода или драйвера, вы не сможете повторно создать его ключ после 1 июня 2021 года. Все сертификаты, выданные до 1 июня 2021 года, будут действительны до истечения их срока действия
С помощью такой подписи от GoDaddy получится сделать .cat из .inf и .sys ?
Как раз алгоритм подписывания в статье расписан верно, этим она ценна.
Сначала, с помощью утилиты inf2cat порождается cat-файл. Он пока без подписей, но содержит хэши всех файлов, входящих в состав драйвера.
А потом этот cat-файл подписывается утилитой signtool! Но при этом мы предъявляем не самопальный pfx, а полученный от GoDaddy pfx! Точнее, они дают другие файлы, из которых формируется pfx. Тут пришлось помудохаться, их техподдержка некомпетентна и бесполезна (зато цены низкие — как-то это, наверное, связано? Но в конце-концов разобрался.
В результате подписывания исходные .inf и .sys как-то модифицируются или никак не затрагиваются?
Их исходники не нужны для подписывания драйвера?
Никакие файлы, кроме .cat — никак не модифицируются. Исходников не требуется.
Если я куплю такого типа сертификат, то получится ли с его помощью заменить подпись в некоем драйвере на свою?
Например, есть подписанный драйвер ( состоит из .inf, .sys , .cat файлов ).
Получится ли убрать от него .cat и создать новый .cat ( командами inf2cat.exe и signtool.exe ), подписанный таким сертификатом?
Такой драйвер будет нормально работать?
Другими словами , работает ли такое, что можно убрать одну цифровую подпись и вместо неё поставить другую?
Да, это возможно. Среди прочего, я так и делал, для драйвера PCI-контроллера PLX9054 — взял подписанный драйвер из SDK, и сделал к нему свои inf и cat.
Сергей, Вы получили сертификат с алгоритмом хеширования подписи SHA1, SHA2 или с SHA256?
Надо ли на винду ставить какие-то апдейты или пэтчи, чтобы подписанные драйверы не выдавали ошибку 52?
SHA1 и SHA2. Подписал с использованием SHA2, чтобы и Win10 охватить. По идее, Win7 должна понимать SHA2 только после патча, в реальности же на Win7 x64 драйвер встаёт (что без подписи невозможно), но Винда говорит, что подписи нет
Сергей, я могу обратить к Вам за помощью. Вы бы не смогли подписать всего один драйвер. Я бы Вам мог их скинуть на почту. Если сможете помочь прошу отзовитесь. Был бы Вам очень признателен!
Если бы это был мой личный сертификат — мог бы. Но он принадлежит компании, так что увы… Советую вам получить свой сертификат — это не так долго и сложно, как кажется!
А на 32 битной Windows 7 можно как-то подписать драйвер?
Сам отвечу, можно, на процессе создание cat файла нужно записать не x64, a x86. Спасибо, инструкция рабочая
А, уже подписанный кем — то файл .sys можно переподписать? Именно, сам sys?
Качаю дрова некой китайской фирмы, имею свою цифровую подпись, но, сам sys, если посмотреть в свойствах файла, имеет какую — то другую подпись(без таймштампа, кстати). cat и inf делаю сам и подписываю своей подписью. При установке вылезает «красное окно», что не удается проверить издателя(как на картинке выше), потом, вылезает второе окно, что, драйвер не установлен, поскольку, не имеет цифровой подписи,то есть, сам sys не катит, насколько я понял. Девайс в диспетчере устройств с восклицательным знаком,и, соответственно, не работает.Обращение к разработчику не рассматриваю — фирма в Китае приказала долго жить.Можно ли с sys снять подпись и его переподписать?
ЗЫ: Моя подпись действительна, проверял…
exe и dll подписываются норм., так же, подписываются драйверы, которые писали сами, без проблем… а, чужие дрова — никак…
Сколько будет стоить подписать драйвер?
Я так и сделал, правда сначала получил какую-то ошибку, исправил, и второй раз все получилось.
Спасибо, отличная статья, подписал драйвер для эмулятора юсб ключей, теперь отлично ставятся на вин10 и вин2016, не смотря на то что все утилиты после установки лежат в совершенно других каталогах и их пришлось искать поиском, и еще в статье ошибка — создается каталог с дарйвером c:\DriverCert\Crystal, а все команды обращаются к другому каталогу c:\DriverCert\xg
Внимательнее, кто будет пользоваться.
Спасибо за отзыв! Поправил путь
В инструкции нашел 2 ошибки
1)вместо Pnputil –i –a C:\DriverCert\xg20\xg20gr.inf
надо Pnputil –i –a C:\DriverCert\xg\xg20gr.inf
2) вместо cd «C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64»
надо путь который ниже в замечании
И одно замечание
путь cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin
бывает и такой cd C:\Program Files\Microsoft SDKs\Windows\v7.1\bin
И еще выполнил всю эту инструкцию, подписывал измененный драйвер для видео встройки UHD 630 для 8600к под Win7 64 бит(он есть тока под win 10 64bit) перед этим пользовался pnputil и он сгенерил oem95.inf, а потом по этой инструкции pnputil перестал работать просто хелп пишет , хотя все пути и имена нормальные. Драйвер рабочий я его загружал в режиме без проверки цифровой подписи и тестировал в играх.
Для того, чтобы драйвер был загружен на Vista-64 и выше, а также на
Windows 8 и выше в режиме Secure Boot, вне тестовых режимов и т.п.,
он должен быть подписан, причем в подписи обязательно должен быть
соответствующий кросс-сертификат от Microsoft. Таких кросс-сертификатов
существует всего порядка 20, каждый для конкретной конторы, которая
продает сертификаты — Symantec, Thawte, GlobalSign, DigiCert и т.п.
Если у вас самопальный сертификат, созданный каким-нибудь makecert.exe,
то к нему просто не существует кросса. И система такой драйвер загружать не будет.
Существует лишь 4 легальных способа загрузки драйвера на обозначенных системах:
1) Подписать драйвер настоящим сертификатом, купленным у одной из организаций типа Symantec
(с кросс-сертификатом)
2) Загружать систему в тестовом режиме, используя самопальный сертификат.
3) Нажимать при загрузке F8 и отключать проверку цифровых подписей.
4) Перевести систему в режим отладки и загружать ее с подключенным отладчиком ядра (например, WinDBG).
Других путей нет (ну если только не считать всякие там патчи ядра, уязвимости и т.п.).
Авторы этой статьи и комментаторы гонят гон. Просто из-за сложности проверки написанного создаётся иллюзия, что кто-то тут что-то сумел сделать. Если бы оно было так, тысячи пользователей не покупали бы себе право подписывать драйвера, а деньги там — немаленькие. Да и создатели вирусов бы подписывали этой ерундой самопальной свою вирусню спокойно.
Боже… Сколько жопной боли…. И ради каких-то пары строчек, с помощью которых, «злоумышленники» совершенно другими путями, всё-равно, стабильно ломают системы…. Микрософт……
Всё получилось. Инструкция рабочая.
Ставил драйвер на Win10 x64 pro.
Была ошибка
Errors:
22.9.4: Missing AMD64 CatalogFile entry (CatalogFile.ntamd64, CatalogFile.nt, CatalogFile) from [Version] section in \xxx.inf
Но она легко правиться
Вставить строку: CatalogFile=xxx.cat
в inf файле в блоке [Version] можно внизу.
Пути SDK естественно менять под свои.
Сделал все как описано. Подписал драйвер старого оборудования для сетевой карты. Все работает на сервер 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
может кто встречался с такой проблемой?
пишет что сервер временной метки дает неправильный ответ
Добавление драйвера устройства в Linux
Обычно в системах Unix и Linux установка драйверов для новых устройств не вызывает трудностей. Даже для неопытных пользователей этих систем. Но это в том случае, если производители устройства (и/или разработчики драйверов) позаботились об этом. И оснастили пакет драйвера специальными установочными и конфигурационными скриптами. А также протестировали всё это в нескольких системах. Однако бывают случаи, когда «удобной» возможности установить драйвер устройства нет, но есть исходные коды драйвера. В таком случае можно попытаться собрать драйвер самостоятельно. Конечно, это далеко не так просто, нужно поэкспериментировать. Но успешный результат возможен с высокой вероятностью. И главное, что для этого требуется — это знать и понимать общий порядок действий в случае ручной сборки драйвера. С такими задачами часто сталкиваются администраторы систем, обслуживающих технологические процессы на производствах, хостинг-площадки и т. д.
Способы установки драйверов
Для Linux-систем установка драйверов устройств происходит тремя основными способами:
- установка патча для определённых версий ядра;
- использование специальных сценариев для установки и конфигурации драйвера;
- с помощью загружаемого модуля ядра.
Надо признать, что для Linux ручная установка драйверов представляет собой довольно сложную и трудоёмкую работу. Поэтому разработчики стремятся всё чаще обеспечивать автоматическую установку и настройку для своих драйверов/устройств. Ведь они заинтересованы в максимально эффективном распространении своих разработок. По этой причине самым распространённым способом установки драйверов является использование сценариев установки. Для самых популярных типов устройств, например для видеокарт, аудиоустройств и даже для сетевого оборудования в настоящее время трудно найти драйверы без автоматической установки.Установка таких драйверов ничем не отличается от установки обычных пакетов. Вся инструкция описана в файле README, подробнее об установке из исходников читайте здесь.
Но есть оборудование (всевозможные адаптеры, преобразователи интерфейсов) и ситуации, для которых есть только исходные коды драйвера (часто не официальные) и необходимость интеграции его с ядром.
Если в качестве драйвера используются патчи ядра, то установить их (собственно и сам драйвер) можно выполнив следующие команды:
Расположение «каталог_исходных_кодов_ядра» зависит от системы, в CentOS это /usr/lib/modules/<версия ядра>/kernel, Например
В случае с ручной установкой, необходимо для начала интегрировать драйвер некоего устройства (исходные коды) в дерево каталогов исходных кодов ядра.
Ручная установка драйвера
Для примера, пусть требуется добавить в ядро драйвер некоего сетевого устройства netdevice. Драйвер этого устройства нужно (как уже известно) поместить в один из каталогов с исходными кодами ядра. А именно — в каталог drivers, внутри которого может быть следующее содержимое:
Драйверы чаще всего помещаются в подкаталоги scsi, char, block, net, а также sound и usb. Эти подкаталоги отражают схему размещения драйверов в зависимости от их типа: блочные — для дисков IDE, символьные — для последовательных портов например, для сетевых устройств, звуковых плат и USB-устройств — USB-адаптеры, USB-модемы и т. д. Другие подкаталоги служат для размещения драйверов других категорий, в частности для системных и разного рода шин (pci, pcie, nubus, zorro), а также для платформенно-зависимых драйверов — acorn, macintosh.
Таким образом, драйверы для сетевого устройства netdevice следует поместить в следующий каталог:
Исходные коды драйвера представляют собой набор файлов *.c, *.cpp и *.h, которые могут быть объединены в дерево каталогов, в зависимости от того, как составлен проект «исходников» драйвера.
Теперь необходимо включить исходные коды драйвера netdevice в процесс компиляции ядра. Для этого нужно отредактировать следующие файлы:
- /drivers/net/Makefile – для сборки самого драйвера;
- /drivers/net/Kconfig – для того, чтобы имя нового устройства было доступно для конфигурирования.
Файлы Makefile и Kconfig содержатся в каждом каталоге дерева каталогов с исходными кодами ядра Linux. Это необходимо для организации универсальной разработки и расширения функционала и возможностей ядра при его сборке из исходных кодов путём независимого дополнения новым кодом. В данном случае кодом драйвера для устройства netdevice.
В файл Makefile следует добавить следующий код:
Таким образом, при сборке ядра в его составе будет собран и сам драйвер netdevice. После дополнения файла Kconfig следующим кодом:
устройство netdevice будет доступно для использования конфигурационным макросом (необходимо на этапе конфигурирования сборки ядра). Здесь команда config использует ключевое слово NETDEVICE_DEV, которое обязательно должно совпадать с фразой, следующей после CONFIG, которое ранее было указано в файле Makefile.
Команда tristate указывает, что драйвер может быть собран как загружаемый модуль, если это поддерживается. Если нет, то вместо tristate следует указать bool – драйвер будет частью ядра. Фраза ‘Netdevice support’ будет отображаться в выводе конфигурационного скрипта на этапе конфигурирования сборки ядра. Это может быть любой текст, идентифицирующий устройство, для которого добавляется драйвер.
Использование нового драйвера
В современных версиях ядра Linux задействование новых драйверов существенно упрощено. В отличие версий, выпущенных раньше 2.6. Тогда это было настоящей головоломкой и требовало знаний в программировании. Но архитектурные изменения в модели драйверов и устройств, пришедшие в версии 2.6 позволяют теперь связывать драйверы с ядром на более высоком «общепользовательском» уровне. Для этого используется специальный конфигурационный макрос MODULE_DEVICE_TABLE. Он создаёт соответствия, которые позволяют утилите modprobe (и ей подобным) задействовать новые драйверы ядра.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.