Vista x64 driver signing hell

Я сделал это!

Потеряно два вечера и еще полдня, система два раза поднималась с бэкапа, но я таки подписал драйвера для Висты-x64 и они таки работают.

История вопроса

Есть такой Argyll CMS, который я уже многократно хвалил за качество CMM-модуля. И вообще, похоже что это необычайно ценный мех варез, ибо качество строимых им профилей необычайно хвалят.

Помимо этого, Argyll умеет работать с i1 Pro в точном режиме: со спектральным разрешением 3.33 нанометра вместо стандартных 10нм, что тешит мою склонность к перфекционизму.

Кроме того, тамошний дисплейный профайлер очень хвалят, хотелось попробовать самому.

Мешало пользовать эту полезную зверушку следующее обстоятельство:

  • Argyll использует libusb, которая конечно есть для Windows, но тамошние драйвера неподписаны, а значит на 64-битной висте можно этим пользоваться, только если при загрузке нажать F8 и выбрать режим, отключающий проверку подписи.
  • Если ставить кроме libusb еще и тамошний модуль фильтра (чтобы можно было использовать тот же i1 и из стандартных приложений), то без загруженного драйвера вся система не работает, а входит в вечный цикл перезагрузки.
  • Но нажимать всякий раз F8 на загрузке - мучительно и противно.

Решение

Как выяснилось, существует два решения. Одно - из форумов - неправильное, в том смысле что не работает. Второе - стандартный путь от Microsoft. Если в двух словах, то все очень просто:

  1. Ставим Windows Driver Kit. Это такой квест, примерно из десятка шагов, начало его здесь, дальше нужно зарегистрироваться на Microsoft connect и после подтверждений адресов, заполнений анкет, вам дадут таки поискать и скачать нужную ISO мегабайт на 600 (из которой нужны три маленькие программы).
  2. Дальше качаем документ Kernel-Mode Code Signing Walkthrough и выполняем первые описанные там два квеста (каждый по 6 шагов) - по подписыванию драйверов тестовым сертификатом и разрешению системе работать с такими драйверами. Подписываем все файлы libusb (как дистрибутивные, так и порожденный inf-wizard-ом .inf-файл для нашего устройства), разрешаем Висте работать с тестово-подписанными драйверами.
  3. Ставим подписанный драйвер.

PROFIT! В том смысле,что все работает как положено, ну разве по углам экрана пишет, что система в тестовом режиме, но wallpaper закрывает и не видно.

Ту же самую процедуру, очевидно, можно применять ко всяким драйверам сканеров, RAID-ов и прочей подобной фигне, работающей только через F8/Disable signature check.

Более всего меня удивляет во всем этом то, что в 32-битной висте можно отключить проверку подписи навсегда, а в 64-битной - нет. Очевидно же, что политическое решение, но в чем его причина?

Comments

Если ставить кроме libusb еще и тамошний модуль фильтра (чтобы можно было использовать тот же i1 и из стандартных приложений)
Этого не понял. Поясни. Из каких стандартных приложений и зачем использовать i1 если профиль уже построен?

Ну вот например i1 diagn, чтобы проверить что все живо. Кроме того, тулы для замера от той же Монаки или ПрофайлМейкера - очень удобные, поэтому если нужны какие-то данные типа оптической плотности (т.е. не максимально точные спектральные данные вполне устроят), то мне они вполне нравятся.

Да и вообще, если есть возможность, то хочется ее использовать

>Более всего меня удивляет во всем этом то, что в 32-битной висте можно отключить проверку подписи навсегда, а в 64-битной - нет. Очевидно же, что политическое решение, но в чем его причина?

защита интеллектуальной собственности, я думаю.

была ж какая-то история про то что сделают так, что на 64-битной винде будет проигрываться блюрей/hd-dvd HD-качество на только легальном софте или что-то в этом роде. через подписывание чего-то там (я плохо понимаю суть, например являются ли кодеки драйверами).
темы вроде далекие (драйверы и HD-кино), но почему-то думаю что корни там, в защите IP.

А на 32-битной - не будет? Фигня какая-то.

Ну надо же как-то стимулировать юзеров на апгрейд железа.

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

Стимул - это возможность смотреть HD-видео из 64-битной висты при невозможности это делать из 32-битной.

Но в настоящее время это же не так, HD показывают и из обычной висты?

а на 32-битной типа нет исторического смысла. ну это домыслы мои, я точно не знаю...

именно так. на 64 бит "полный DRM". чтобы посмотреть любой DRM контент нужно чтобы все компоненты поддерживали DRM, это означает: все дрова, которые используются подписаны, все устройства, которые используются имеют специальный чип, софт тоже должен быть подписанный и тп.
на 32 бит сделали послабление, можно без спецдров. видимо не хотели усложнять пользователям жизнь, т.к. пришлось бы заставить поменять все старые дрова.

Ну подожди. Способ загрузить неподписанный драйвер - есть, официальный, но неудобный (при каждой загрузке нужно жать пимпу). В 32-битах можно это же место включить навсегда через bcdedit, в 64 - нет.

Я вижу тут только какие-то ошметки логики, а не ее саму.

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

Чтобы увидеть всю логику, нужно понять как именно при использовании "официального, но неудобного" способа
будет смотреться DRM-видео. Если при включении этой фигни через bcdedit оно смотреться перестанет - логика налицо.

Логики все равно нету. Что мешает раздавать разработчикам сертификаты для тестирования драйверов, как это делает Apple?

так текст от MS - это описание того, как сделать самоподписанный сертификат

загрузить-то можно, вот только работать DRM с ним всё равно не будет.

ну типа публика не станет парицца с ходами через зад а станет вместо этого платить бабло. щас же как? установил klite, установил vlc - и смотри себе. а тама будет как? ну например - подписанный драйвер дисковода, обнаружив в ём блюрей, станет отдавать считанное только подписанному проигрывателю. и всё на этом.
или типа того.

помню что наталкивался на объяснение. нашел у себя в журнале запись 3хгодичной давности. хорошая вещь этот ЖЖ.

вот ссылка: http://www.reghardware.co.uk/2006/08/25/hollywood_demands_64-bit_pcs/

"Speaking in Australia this week, Microsoft Senior Program Manager Steve Riley effectively revealed..." [...]
"According to Riley, 32-bit mode is too open to hacks designed to bypass the optical discs' copy-protection mechanisms."

и вот (they - Голливуд):

"they don't want any of their HD content to play in [32-bit] at all, because of all of the unsigned malware that runs in kernel mode can get around content protection".

а к линуксу ты его случайно не прикручивал? :)

А под линуксом должен же просто взять и заработать?

Я как-то давно пробовал и оно как-то совсем невнятно работало, и вроде как ай ван вообще не видело ... Надо, будет, конечно, как-нить взять и еще раз попробовать ...

Мне просто интересно услышать что оно у кого-нить нормально работает :) А то как-то надоедает менять настроки монитора после перезагрузки из винды в линукс и обратно (виртуальную машину не предлагать:)

Ну я тебе подтвердить не могу - у меня линукс только в виртуальной машине. Но судя по использованию libusb, в Linux должно работать лучше чем в виндах (с учетом описанного выше секса в винде x64).

У меня i1-Pro (спектрофотометр), а вообще список поддержаного оборудования - у Argyll на сайте, список довольно печальный ибо практически все что поддержано - снято с производства (и ничего хорошего взамен - не производят, увы).

Это был я, авторизация сбилась.

Ну в реальности на подходе поддержка ColorMunki и Spyder3. Бета-версия уже есть. Да и i1 Display 2 еще можно купить.

Неужели не очевидно? Чтобы всякие китайцы перестела прикладывавать нетестеные написанные на коленке драйвера к своим поделкам.

Интересно, что в бете windows7 вариант с отключением проверки подписи через bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS вполне работает - хотя и непонятно, доживет ли до релиза.

Из занятного по теме: Грэм лелеет идею перенести часть кода из Argyll в libusb. То-то наступит веселье :)

Только сейчас наткнулся на ваш блог Алексей в хотя c LibRaw ковыряюсь с давних времен и статьи ваши с Ильей почитываю обоих LibRaw сайтах.

Посему хотел поделиться опытом аналогичным совместного использования Argyll и basICColor c i1. Я пробовал и тестовые сертификаты (кстати есть где-то программулина которая их по желанию подписывает и эту подпись убирает - типа чтобы народу не качать DDK) но меня жутко доставали эти надписи на десктопе а патчить системные ресурсы не хотелось. Так вот посде продолжительных поисков я наткнулся на SIXAXIS libusb-win64 - она подписанная и не тестовой подписью а как надо. Эти хлопцы из SIXAXIS использовали libusb для своего продукта и после долгой тягомотины подписали драйвера у M$. Я попробовал - все работает замечательно (у меня Vista 64). Как всегда, чтобы поставить i1'овский драйвер надо этот удалить ручками (в Device manager) и наоборот (но это мелкое неудобство да и перегружаться не надо).