OEM drv64

В последнее время, многие пользователи Windows 7 или 10 обнаружили у себя проблему с драйверами oem-drv64.sys (для разрядности x64) и oem-drv86.sys (для x32). В статье мы подробно расскажем, что это за драйвер OEM и почему выдаются предупреждения, что он поврежден.

Что это за файл?

OEM-drv64.sys – это драйвер системного файла, отвечающего за наличие и проверку активации в Windows при запуске. Файл находится в архивированном виде и является компонентом ACPI Patch Driver.

При работе операционки, с данными драйверами может произойти несколько основных проблем: антивирусы (Kaspersky, Dr.Web, Malwarebytes) могут посчитать данные файлы вирусами и заблокировать или отправить в карантин. Помимо этого, часто появляются ошибки 0xc0000428 или 0xc0000221 при запуске Windows – при этом выдается сообщение, что файл поврежден, либо его цифровая подпись отсутствует.

Причина ошибок с файлами OEM-drv64.sys и OEM-drv86.sys

Причина появления указанных выше сбоев банальна – борьба Microsoft с пиратством и вирусным ПО. Дело в том, что многие пользователи семерок или десяток прибегают к помощи активаторов, которые заменяют некоторые файлы и эмулируют SLIC маркер. Естественно, если у вас был использован активатор второго сорта, то никто там не заботился о наличии цифровой подписи.

HitmanPro занес файл oem-drv86.sys при проверке в список подозрительных

Поэтому при плановом обновлении Windows, или при запуске сканирования антивирусом может выскочить ошибки, связанные с драйвером OEM. К примеру, стоял ваш активатор и спокойно работал на семерке – пришло время и вышел кумулятивный KB-апдейт, который содержит улучшенный алгоритм проверки цифровых подписей. Вот тут вы и получаете ошибку.

Как исправить ошибки с файлами OEM?

Для начала нужно разбить проблему на несколько уровней сложности: антивирус сигнализирует об OEM-вирусе и система не запускается из-за того, что OEM поврежден и выдает ошибки вида 0xc0000428 или 0xc0000221.

Если сигнализирует антивирус

  • По сути, OEM-drivers не является вирусом. Просто условный Kaspersky содержит пункт проверки ЦП. Если он его не находит – файл блокируется отправкой в карантин. Как правило, прямого удаления нет.
  • Располагается драйвер по следующему пути: C:\Windows\System32\drivers. Если в вашем случае файлик находится в иной папке – имеем дело с вирусной подменой и требуется удаление.
  • Если у вас OS лицензионная, то смело удаляйте этот драйвер, если стоит активатор – то лучше добавить файл в исключения. Надеюсь вы знаете как это делается в программах от Касперского или Доктора Веб. Если он уже занесен в карантин – необходимо его восстановить.
  • Если вы, по предложению антивиря, просто снесете из системной папки файлик OEM-drv64.sys, то ваша активация может слететь, а компьютер перестанет загружаться, либо перейдет в BSoD.

Ошибка при загрузке – OEM-drv86.sys поврежден

Если у вас эти кривые драйвера без ЦП были обнаружены и успешно заблокированы системой – то вы получаете сбой загрузки и ошибки типа 0xc0000428. В таком случае вам понадобится стереть битый файл из OS. Сделать это можно несколькими способами.

Запускаемся – жмем F8 – должны появиться варианты запуска – кликаем на безопасную загрузку без проверки подписей. Система должна запуститься, а вы войти в папку System32\drivers и стереть проблемный OEM-drv.sys.

Ошибка 0xc0000221 при запуске файла oem-drv86.sys

Если нет никаких признаков жизни, а только уведомление в начале запуска, что не удалось проверить ЦП файла, делаем следующее:

  1. Придется создать загрузчик Live-CD или Live-USB. Это такой инструмент восстановления ОС и в нем всегда присутствует проводник.
  2. Ищем надежный источник и загружаем LiveCD (USB) – записываем его ISO-образ через Rufus или Ultra-ISO.
  3. В Биосе выставляем приоритет запуска с диска (флешки), через вкладку Boot Priority.
  4. Если все запустится удачно – ищем в меню проводник и через него стираем драйвер.

    LiveCD с загрузчиком Antiwinblock – проводник Total Commaner

Если есть второй компьютер рядом – можно просто подключить туда жесткий диск с проблемной ОС и удалить драйвер так.

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

При установке Windows

Помимо основных проблем с поврежденным OEM-drv64.sys, может возникнуть сбой при установке самой системы. В таком случае, вам нужно сменить сборку. Скорее всего, вы используете образ с битой сборкой. Я рекомендую брать их с проверенных ресурсов – свои беру с all-best.pro.

Теперь вы знаете, что такое файл OEM-drv(86/64).sys и как решить проблемы, связанные с ним и быстро восстановить OS. Если вдруг, ваш антивирус начал ругаться и подозревать драйвер, добавьте его в исключения. Я бы рекомендовал изменить активатор, либо применить более свежую его версию. Остались вопросы – пишем в комментарии.

Все 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 10 такое предупреждение даже не появляется, а в консоли появляется предупреждение, что в стороннем INF файле отсутствует информация о цифровой подписи.

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

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

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

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

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

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

  • Windows SDK (или Microsoft Visual Studio 2005 или выше) для вашей версии Windows – в состав этих пакетов входит Windows SDK Signing tools for Desktop, в которую включена необходимая нам утилита — signtool.exe;
  • Windows Driver Kit 7.1.0 — ISO образа GRMWDK_EN_7600_1.ISO размером 649 Мб

Совет. В Windows 10 можно использовать более новые версии Windows SDK и Windows Driver Kit. Перед установкой этих инструментов, убедитесь, что в системе установлен .NET Framework 4.

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

Создадим в корне диска каталог 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).

Совет. Вы можете создать самоподписанный сертификат типа Code Signing без использования сторонних средств с помощью командлета PowerShell 5.0 — New-SelfSifgnedCertificate.

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

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

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

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

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

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

cd C:\WinDDK\7600.16385.1\bin\selfsign

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

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

Чтобы убедитесь, что процедура прошла корректно, проверьте, что в логе присутствуют сообщения:

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= и заменить ее на:

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-файл, защищенном паролем.

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

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

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

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

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

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

Или из графического мастера добавления сертификатов (сертификат нужно поместить в хранилища 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», вы установите драйвер в системе.

Если по каким-то причинам драйвер не устанавливается, подробный лог установки драйвера содержится в файле C:\Windows\inf\setupapi.dev.log. Этот лог позволит вам получить более подробную информацию об ошибке установки. В большинстве случаем возникает ошибка «Driver package failed signature validation» — скорее всего это означает, что сертификат драйвера не добавлен в доверенные сертификаты.

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

>>> >>> Section start 2018/07/22 23:32:57.015 cmd: Pnputil -i -a c:\DriverCert\xg\xg20gr.inf ndv: Flags: 0x00000000 ndv: INF path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf inf: {SetupCopyOEMInf: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf} 23:32:57.046 inf: Copy style: 0x00000000 inf: Driver Store Path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf inf: Published Inf Path: C:\WINDOWS\INF\oem23.inf inf: {SetupCopyOEMInf exit (0x00000000)} 23:32:57.077 <<< Section end 2018/07/22 23:32:57.155 <<<

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