2012-06-10 3 views
4

Имея немного проблем с подписью моего драйвера режима ядра и созданием службы для него.Создание и создание драйверов Windows Kernel

Итак, я создал самозаверяющий сертификат с помощью MakeCert:

MakeCert -r -pe -n "CN = XXX" -ss "XXX" -sr LocalMachine

затем с помощью управления сертификатами оснастки я экспортировал сертификат в PFX-файл и подписал драйвер .sys с помощью SignTool:

SignTool знак/ф myCert.pfx/р ххх/т http://timestamp.comodoca.com/authenticode driver.sys

, который был успешным. При использовании SignTool для проверки, я получил:

контролирующий: driver.sys хэша файла (sha1): 9A ... 7F

Signing Certificate Chain: 
    Issued to: XXX 
    Issued by: xxx 
    Expires: Sat Dec 31 16:59:59 2039 
    SHA1 hash: 12...46 

The signature is timestamped: Sun Jun 10 03:35:21 2012 
Timestamp Verified by: 
    Issued to: UTN-USERFirst-Object 
    Issued by: UTN-USERFirst-Object 
    Expires: Tue Jul 09 11:40:36 2019 
    SHA1 hash: E1...46 

     Issued to: COMODO Time Stamping Signer 
     Issued by: UTN-USERFirst-Object 
     Expires: Sun May 10 16:59:59 2015 
     SHA1 hash: 3D...C8 

Successfully verified: driver.sys 

Number of files successfully Verified: 1 
Number of warnings: 0 
Number of errors: 0 

Однако, когда я пытаюсь создать службу для него:

СБН создать НИЗ binPath = C: \ Windows \ System32 \ Drivers \ driver.sys тип = ядро ​​

(binpath является Verifi ed для существования), сервис создается, но примерно через 10-20 секунд появляется «Помощник по совместимости программ» с раздражающим диалогом «Windows требует диалог с цифровой подписью».

Program Compatibility Assistant

Что это дает? Это подтверждается подписью. Я пробовал этот процесс три раза, без везения. Я пробовал запустить службу, но я получаю BSOD с кодом BC, который ссылается на эту проблему (неподписанный драйвер отлично работает на XP/32-bit 7).

+5

Самоподписывание недостаточно; он также должен быть кросс-подписан с сертификатом Microsoft, который поддерживает только реальные сертификаты CA. Для целей тестирования вы можете включить [подписание теста] (http://msdn.microsoft.com/en-us/library/windows/hardware/ff553484%28v=vs.85%29.aspx). – Luke

+0

@ Luke Alright понял это - я в режиме подписывания теста, и он работает нормально. Однако я нашел список сертификатов перекрестных подписей, но я не уверен, как их использовать. У меня есть zip-файл с .cer и отпечаток sha1, но диспетчер сертификатов запрашивает URL-адрес. – Qix

+1

Я не знаю точного процесса, но вам нужно: 1) подписать свой двоичный файл с помощью поддерживаемого сертификата CA (VeriSign и т. Д.), Затем 2) перекрестно подписать ваш бинарный файл с соответствующим сертификатом перекрестной подписывания, предоставленным Microsoft. – Luke

ответ

0

Некоторые полезные документы вы можете найти здесь: http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx

Как Лука говорит, что вам нужно оба шага, ссылка при условии объясняет шаг 2. И с поперечным сертификатом, полученным от Microsoft, вы должны подписать эти драйверы. Подписание выполняется с помощью инструментов Win sdk.

Смежные вопросы