Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2012, 19:06   #1
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию Блокирование драйвера при установке

Доброго времени суток. Имеется драйвер. Произвожу его установку при помощи SCM - менеджера. В WinXP все работает. В Win7 x64 StartService() падает, при этом GetLastError() возвращает ERROR_DRIVER_BLOCKED (1275). Создал сертификат и выполнил подписание пакета драйвера для тестового использования как описано в Подписывание пакета драйвера. Однако ошибка осталась. Кто-нибудь сталкивался с подобным? Подскажите как инсталлировать свои драйвера в Win7 x64?
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 11.02.2012, 19:12   #2
Rock-n-Rolla
Форумчанин
 
Регистрация: 11.01.2012
Сообщений: 178
По умолчанию

извиняюсь, а драйвер скомпилирован как x64?
progromore.i2p - первый русскоязычный портал программистов в скрытосети
Rock-n-Rolla вне форума Ответить с цитированием
Старый 11.02.2012, 20:22   #3
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
Сообщение от Rock-n-Rolla Посмотреть сообщение
извиняюсь, а драйвер скомпилирован как x64?
Да.................
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 13.02.2012, 00:11   #4
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Цитата:
одскажите как инсталлировать свои драйвера в Win7 x64?
в случае 64х битной винды, для kernel mode driver нужно выполнять подпись не только каталога, но и всех связаных бинарников. путь верификации сертификата обязан содержать перекрестный сетрификат.

общая рекомендация: пишите user mode driver, требования к нему менее строгие.


да. в случае test sign нужно его включить:
Цитата:
Bcdedit.exe -set TESTSIGNING ON

Последний раз редактировалось f.hump; 13.02.2012 в 00:19.
f.hump вне форума Ответить с цитированием
Старый 13.02.2012, 16:27   #5
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
Сообщение от f.hump Посмотреть сообщение
в случае 64х битной винды, для kernel mode driver нужно выполнять подпись не только каталога, но и всех связаных бинарников. путь верификации сертификата обязан содержать перекрестный сетрификат.
Можно по подробнее о том, как это сделать.

Цитата:
Сообщение от f.hump Посмотреть сообщение
общая рекомендация: пишите user mode driver, требования к нему менее строгие.
Для решаемой задачи необходим kernel-mode драйвер
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 13.02.2012, 16:44   #6
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

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

Bcdedit.exe -set TESTSIGNING ON

и перезагрузить винду.


а если делать релиз то есть вот эта тема
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
они конечно говорят, что бинарники нужно подписывать только для бут-лоад драйверов, но я предпочитаю подписывать kernel-mode бинарники в любом случае.
f.hump вне форума Ответить с цитированием
Старый 14.02.2012, 11:45   #7
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Цитата:
путь верификации сертификата обязан содержать перекрестный сетрификат.
Насколько я понял, в приведенном мной руководстве этого не было
Подписал также бинарник драйвера, разместил пакет драйвера в хранилище драйверов . Запустил винду в тестовом режиме. Но драйвер по прежнему блокируется
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 14.02.2012, 12:01   #8
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

а установка драйвера была успешной?

у винды есть такой интересный файл setupapi.log или setupapi.dev.log в котором она пишет все, что она думает про установку разных драйверов. рекомендую почитать.



Цитата:
Насколько я понял, в приведенном мной руководстве этого не было
. это от того, что для работы в тестовом режиме перекрестный сертификат не требуестся. весь метериал с того ресурса просто перевод материала c MSDN. только не нашел, чтобы они указывали на необходимость включения тестового режима.

Последний раз редактировалось f.hump; 14.02.2012 в 12:16.
f.hump вне форума Ответить с цитированием
Старый 14.02.2012, 14:05   #9
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Глянул setupapi.dev.log: там вылезают следующие ошибки
Цитата:
{_VERIFY_FILE_SIGNATURE} 11:07:15.861
sig: Key = testdriver.inf
sig: FilePath = C:\Windows\System32\DriverStore\Tem p\{07f17905-58b7-12c2-2fff-bf7fccf1bc5f}\testdriver.inf
sig: Catalog = C:\Windows\System32\DriverStore\Tem p\{07f17905-58b7-12c2-2fff-bf7fccf1bc5f}\testdriver.cat
! sig: Verifying file against specific (valid) catalog failed! (0x800b0109)
! sig: Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
sig: {_VERIFY_FILE_SIGNATURE exit(0x800b0109)} 11:07:15.922
sig: {_VERIFY_FILE_SIGNATURE} 11:07:15.922
sig: Key = testdriver.inf
sig: FilePath = C:\Windows\System32\DriverStore\Tem p\{07f17905-58b7-12c2-2fff-bf7fccf1bc5f}\testdriver.inf
sig: Catalog = C:\Windows\System32\DriverStore\Tem p\{07f17905-58b7-12c2-2fff-bf7fccf1bc5f}\testdriver.cat
sig: Success: File is signed in Authenticode(tm) catalog.
sig: Error 0xe0000241: The INF was signed with an Authenticode(tm) catalog from a trusted publisher.
sig: {_VERIFY_FILE_SIGNATURE exit(0xe0000241)} 11:07:15.946
sto: Validating driver package files against catalog 'testdriver.cat'.
sto: Driver package is valid.
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 14.02.2012, 17:25   #10
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

печально.

предложение 1 (если тестовый СА сертификат не был установлен в Local Machine). удалить тестовый CA сертификат. Добавить его опять. при довлении в хранилище чекануть "показать физические хранилища", установить в Local Machine "доверенные корневые CA".

предложение 2 (если драйвера используются на машине на которой они были подписаны). удалить тестовый CA сертификат. выполнить подпись драйвера. установить тестовый CA как в "предложении 1".
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при установке U4-nik Общие вопросы C/C++ 4 23.09.2011 20:43
ошибка при установке SLAVON3101 Софт 9 16.03.2011 00:33
ошибка при исполнении (что то при установке компонентов) designer999 Компоненты Delphi 0 18.10.2010 22:03
F8 при установке Sparky Свободное общение 7 15.09.2009 09:51
Блокирование при работе с TList. Riman Общие вопросы Delphi 7 31.05.2007 15:28