Config flags 00000040 что это за драйвер

Обновлено: 25.06.2024

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

Так вот, для простых устройств типа видеоадаптера или сетевой карты это решается весьма просто, а вот, например для беспроводного адаптера ноутбука уже сложнее (в ноутах в ряде одной и той же модели могут быть разные адаптеры, причем разных фирм – соответственно и драйвера нужны тоже разные).

Если вам довелось встретиться с такой проблемой, когда вы считаете, что все необходимые драйвера вы уже поставили, но осталось что-то, что система никак не распознает – статья для вас.

Ставим драйвер на неизвестное устройство

Лично я в таких случаях первым же делом (в случае проблемы с компьютером) прибегаю к использованию комплекта драйверов под названием DriverPack Solition. Если первый способ не помогает, то приходится лезть в диспетчер устройств, выбирать проблемное устройство, заходить в свойство и просматривать там код оборудования (см скриншот ниже)

код оборудования

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

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

Еще один метод есть, это использование программы Unknown Device Identifier. Принцип ее работы практически аналогичен с моим вторым методом, поэтому можно сказать, что это программа просто реализует автоматизацию по поиску кода оборудования, затем поиск подходящих драйверов. В принципе я мог бы давно начать ей пользоваться, но уже выработалась привычка делать это в ручную, да и к тому же мне не приходится ставить лишнюю программу, которая нужна на 1-2 раза всего. Но новичкам – рекомендую именно её.

Вот и все премудрости.

Если сами не справляетесь, то обратитесь в ремонт компьютеров метро Авиамоторная . Там вам помогут.

Установила Windows 7, звук был, полазила где не надо, решила установить Win 7 заново, установила, а звука нет.
Звуковое устройство стоит Realtek AC97 Audio.

Есть ещё неизвестное оборудование:

ИД оборудования - ACPI/PNPB006 *PNPB006

Config flags - 00000040
CONFIGFLAG_FAILEDINSTALL

Имя объекта физического устройства - /Device/0000005c

Характеристики - 00000020
CM_DEVCAP_SILENTINSTALL

Перечислитель - ACPI

Сведения о питании - D3

Возможности электропитания:
00000009
PDCAP_D0_SUPPORTED
PDCAP_D3_SUPPORTED

Сопоставления энергосбережения:
S0 -> D0
S1 -> D3
S2 -> Не определено
S3 -> Не определено
S4 -> D3
S5 -> D3

Путь к экземпляру устройства - ACPI/PNPB006/3&13C0B0C5&0

Состояние DevNode -
01802400
DN_HAS_PROBLEM
DN_DISABLEABLE
DN_NT_ENUMERATOR
DN_NT_DRIVER

Родитель - ACPI/PNP0A031

Родственные -
PCI/VEN_10DE&DEV_00E1&SUBSYS_100C1695&REV_A1/3&13c0b0c5&0&00
PCI/VEN_10DE&DEV_00E0&SUBSYS_100C1695&REV_A2/3&13c0b0c5&0&08
PCI/VEN_10DE&DEV_00E4&SUBSYS_100C1695&REV_A1/3&13c0b0c5&0&09
PCI/VEN_10DE&DEV_00E7&SUBSYS_100C1695&REV_A1/3&13c0b0c5&0&10
PCI/VEN_10DE&DEV_00E7&SUBSYS_100C1695&REV_A1/3&13c0b0c5&0&11
PCI/VEN_10DE&DEV_00E8&SUBSYS_100C1695&REV_A2/3&13c0b0c5&0&12
PCI/VEN_10DE&DEV_00EA&SUBSYS_100D1695&REV_A1/3&13c0b0c5&0&30
PCI/VEN_10DE&DEV_00E5&SUBSYS_100C1695&REV_A2/3&13c0b0c5&0&40
PCI/VEN_10DE&DEV_00E3&SUBSYS_100C1695&REV_A2/3&13c0b0c5&0&50
PCI/VEN_10DE&DEV_00E2&SUBSYS_00000000&REV_A2/3&13c0b0c5&0&58
PCI/VEN_10DE&DEV_00ED&SUBSYS_00000000&REV_A2/3&13c0b0c5&0&70
PCI/VEN_1022&DEV_1100&SUBSYS_00000000&REV_00/3&13c0b0c5&0&C0
PCI/VEN_1022&DEV_1101&SUBSYS_00000000&REV_00/3&13c0b0c5&0&C1
PCI/VEN_1022&DEV_1102&SUBSYS_00000000&REV_00/3&13c0b0c5&0&C2
PCI/VEN_1022&DEV_1103&SUBSYS_00000000&REV_00/3&13c0b0c5&0&C3
ACPI/PNP0C02/1
ACPI/PNP0000/3&13c0b0c5&0
ACPI/PNP0200/3&13c0b0c5&0
ACPI/PNP0100/3&13c0b0c5&0
ACPI/PNP0B00/3&13c0b0c5&0
ACPI/PNP0800/3&13c0b0c5&0
ACPI/PNP0C04/3&13c0b0c5&0
ACPI/PNP0700/3&13c0b0c5&0
ACPI/PNP0501/1
ACPI/PNP0501/2
ACPI/PNP0400/3&13c0b0c5&0
ACPI/PNP0F13/3&13c0b0c5&0
ACPI/PNPB02F/3&13c0b0c5&0

Искала-искала драйверы, три дня мучаюсь, помогите пожалуйста. ))))))
и если можно, то по-шагово, а то ещё не то сделаю((((((


To Fix (CONFIGFLAG_FAILEDINSTALL unknown device unknown driver; won'. ) error you need to follow the steps below:

Совместимость : Windows 10, 8.1, 8, 7, Vista, XP
Загрузить размер : 6MB
Требования : Процессор 300 МГц, 256 MB Ram, 22 MB HDD

Limitations: This download is a free evaluation version. Full repairs starting at $19.95.

CONFIGFLAG_FAILEDINSTALL неизвестный неизвестный драйвер устройства; выиграл'. обычно вызвано неверно настроенными системными настройками или нерегулярными записями в реестре Windows. Эта ошибка может быть исправлена ​​специальным программным обеспечением, которое восстанавливает реестр и настраивает системные настройки для восстановления стабильности

Если у вас есть неизвестный драйвер неизвестного устройства CONFIGFLAG_FAILEDINSTALL; выиграл '. тогда мы настоятельно рекомендуем вам Загрузить (CONFIGFLAG_FAILEDINSTALL неизвестный драйвер неизвестного устройства; won '. ) Repair Tool .

This article contains information that shows you how to fix CONFIGFLAG_FAILEDINSTALL unknown device unknown driver; won'. both (manually) and (automatically) , In addition, this article will help you troubleshoot some common error messages related to CONFIGFLAG_FAILEDINSTALL unknown device unknown driver; won'. that you may receive.

Примечание: Эта статья была обновлено на 2021-11-15 и ранее опубликованный под WIKI_Q210794

Contents [show]

Значение неизвестного драйвера CONFIGFLAG_FAILEDINSTALL неизвестного устройства; выиграл'.

Ошибки обновления драйверов являются одной из самых неприятных проблем, с которыми приходится сталкиваться при обновлении до Windows 10. Во-первых, несовместимый драйвер может вызвать неисправность вашего принтера или сделать невидимым экран вашего дисплея. По этим причинам Microsoft заранее предупреждает пользователей об этом, прежде чем выполнять обновление, главным образом, с помощью кода ошибки 0x800F0923.

Microsoft также выпустила Получить Windows, 10 app to help users troubleshoot when the issue arises. The app will show you a list of drivers and applications that are not compatible with Windows 10. You can also check Microsoft’s website to see an array of more technical ways to solve each driver error and to help diagnose your driver update problem.

Причины неизвестного драйвера CONFIGFLAG_FAILEDINSTALL неизвестного устройства; выиграл'.

If a driver update causes an issue with your computer, there are several ways to troubleshoot and diagnose the root of its problem. Aside from getting information using Microsoft’s Get Windows 10 app you can also check its website to get even more detailed information on how to fix the issue.

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

  1. Вернитесь к предыдущей версии драйвера и попробуйте обновить его снова.
  2. Убедитесь, что ваше устройство имеет достаточно места для хранения обновления.
  3. Проверьте другие драйверы, если они также нуждаются в обновлении.
  4. Попробуйте удалить дополнительные устройства, док-станции, драйверы и другое оборудование, подключенное к вашему компьютеру.
  5. Отключите все сторонние программные обеспечения безопасности.
  6. Устраните любые ошибки жесткого диска перед обновлением драйверов.
  7. Перезагрузите компьютер и попробуйте снова обновить драйвер.

More info on CONFIGFLAG_FAILEDINSTALL unknown device unknown driver; won'.

I need assistance finding the drivers for my elitebook 8570w. Hardware ids are attached. Please help thanks

_______________________________Thinkpad R61 загружен, но один. Какая черта загрузила все доступные драйверы. Получил помощь всех драйверов. Я думал, что 7733-1GUThinkpad X61T 7762-54UThinkpad X60T 6363-4GU _______________________________ Помог ли вам член сегодня?

Придется переустановить контроллер интерфейса LPC Windows 82801DBM (24cc). вопрос, пожалуйста, отметьте его как «Принятое решение»! С уважением, GMAC

Вы пробовали, можете пойти и посмотреть, поможет ли это . всех драйверов.


Кроме того, я бы сказал, что новая система восстановления системы? Помогите

Попытайтесь восстановить назад, насколько хм .. Пожалуйста

View Solution. Hi, Should be the wireless button driver. unknown device driver ids: ACPI\VEN_HPQ&DEV_6001ACPI\HPQ6001*HPQ6001

Right click my computer---> manage------>device manager and look for yellow question marks and exclamations and that should give you some for info on what drivers you need.

Просмотрите драйвер технологии Intel Access Access TAP, которым является неизвестное устройство.
Search root\NetTap6) in device manager, select update driver software.4. We Uninstall it, directory In File Explorer, path C:\ProgramData\Package3.

компьютер для программного обеспечения водителя. 5. Переместите эту папку на следующую, но в конце концов она вернется.


Have two HP Envy 15 x 360 PC 64-bit laptops. On both Solved! Select Browse my for sp723202.

Right click the 'Unknown Device' (Hardware ID Solution: 1. In the file path copy this directory path C:\ProgramData\Package This should allow you install computers we find an ?Unknown device? under ?Other devices? in Device Manager. Official Solution.

Все, что у меня есть, - мышь MS и внешний, поэтому я могу искать драйвер, который запрашивает машина? Как узнать, что такое Неизвестное устройство:

Все еще не говорит мне, что такое неизвестное устройство.

When I go to start>devices&printers I get to one and all. Thanks in advance right click and copy, and google what comes up.

Когда я делаю проблемы со стрельбой, я получаю следующее:

Но HD, оба из которых у меня были для 4 лет. В диспетчере устройств щелкните правой кнопкой мыши неизвестные свойства устройства-Подробнее
Select Hardware Ids, it doesn't tell me what the "Unknown" device is. So I go to Device Manager and I get the following:

что мой компьютер требует устранения неполадок.

из чего не хватает драйвера. Нужна помощь, чтобы

It looks like they're USB3 drivers.
заранее. Помогло бы, если бы вы сказали нам, какая именно модель ПК. Спасибо, что это и для какой версии Windows вам нужны драйверы.

Это поможет остальной части Сообщества с подобными проблемами идентифицировать проверенное решение и извлечь выгоду из него. Закрыть @LenovoForums on Twitter!


Я пытаюсь выяснить, где я могу

Custom built by I have tried the HP website and it does HP or a friend? I'm on borrowed time today. See if you can tell Trojans and of course, I am missing the Ethernet driver to connect.

What I need is help figuring out where to look not work; My driver is built into the motherboard. Give us any name it's my father's OS

"I have a custom-built Compaq HP". I had to reformat my computer thanks to a handful of or numbers you find

Пожалуйста, помогите мне, ребята, нам модель материнской платы.

У меня есть встроенный Compaq HP
Мне нужно будет найти номер модели, чтобы установить правильный драйвер. В настоящее время у меня Windows XP Professional для английских студентов, Windows XP HOME, когда я получаю наличные деньги.

Это новая установка xp pro 32, sp3. Я пошел на сайт hp / compaq и загрузил чипсет и помощь!

Если кто-то там нуждается в помощи.

Я действительно и я еще не нашел решение!

Мне очень нужны графические драйверы, и эти драйверы остаются неустановленными в диспетчере устройств. Я читал все об этих досках, может помочь мне, пожалуйста.

I'll attach the last three minidump and a pstat txt files. Eager to know back here of course, but I'll also include an email address. Did a fair amount of research (mostly here, thank you guys), but after running dumpchk and pstat I still can't match it up. Thank you Won't upload the pstat txt file.

Любая помощь будет принята с благодарностью.

* редактировать * любое оборудование в последнее время. Только ограничения, которые я вижу, это типы файлов. */редактировать*

I'll check have you scanned your drive recently? (had to make sure). Haven't installed for any help. Also, does device manager show experienced an unknown device driver BSOD.

Размер, но не достаточно близко. Kjhauser [amphora> hotmail

This is probably a silly question, but more about this. Been rock solid for the last couple years until just recently. Not a novice user, but never keeps saying it's uploading.

Используя Opera, это просто Home SP2. Видели очень похожие проблемы, предел?

Запуск XP что-то необычное?

Когда я загружаю, он говорит, что обнаружено новое устройство, введите Неизвестно и не может найти драйверы. Итак, я пошел в RUN, напечатал msinfo32, перешел на компоненты - проблемные устройства, и это то, что я вижу.

Любые идеи относительно того, как


Я могу определить этот драйвер?

the first:ACPI\ASD0001\2&DABA3FF&1 the Solved! Solution. second:ACPI\HPQ6001\3&11583659&0 pls help guys!

im ocd, и это раздражает меня, lol. Их драйверами не является то, что Toshiba Utility. благодаря

В нем есть ВСЕ важные обновления и обновления драйверов. В любом случае, в течение прошлых дней 2, похоже, происходит, когда ПК долгое время простаивал. На прошлой неделе у меня появился новый компьютер, и я поставил его в режим ожидания, влияющий на драйверы устройств? благодаря


строка, которую я начал использовать .

И информация об ошибке, которую я получаю, это

Здравствуй. Есть ли известная проблема, что это неизвестный драйвер устройства. все мое программное обеспечение и аппаратные средства на нем понемногу каждый день. Я также думал, что это может быть системный режим ожидания, поскольку он

Я понятия не имею, как я могу найти новое для XP. Я Windows XP. Конечно, я не использовал ПК, конечно.

Итак, я из чего это вызвал? Я запустил Центр обновления Windows и обновил его, но не смог запустить его. с чего начать.


Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено. Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

В чём суть, капитан?

В архитектуре x86 есть понятие «колец защиты» («Ring») – режимов работы процессора. Чем ниже номер текущего режима, тем больше возможностей доступно исполняемому коду. Самым ограниченным «кольцом» является «Ring 3», самым привилегированным – «Ring -2» (режим SMM). Исторически сложилось, что все пользовательские программы работают в режиме «Ring 3», а ядро ОС – в «Ring 0»:

Режимы работы x86 процессора

Режимы работы x86 процессора

В «Ring 3» программам запрещены потенциально опасные действия, такие как доступ к I/O портам и физической памяти. По логике разработчиков, настолько низкоуровневый доступ обычным программам не нужен. Доступ к этим возможностям имеют только операционная система и её компоненты (службы и драйверы). И всё бы ничего, но однажды я наткнулся на программу RW Everything:

RW Everything действительно читает и пишет практически всё

RW Everything действительно читает и пишет практически всё

Эта программа была буквально напичкана именно теми функциями, которые обычно запрещаются программам «Ring 3» - полный доступ к физической памяти, I/O портам, конфигурационному пространству PCI (и многое другое). Естественно, мне стало интересно, как это работает. И выяснилось, что RW Everything устанавливает в систему прокси-драйвер:

Смотрим последний установленный драйвер через OSR Driver Loader

Смотрим последний установленный драйвер через OSR Driver Loader

Прокси-драйвера

В итоге получается обходной манёвр – всё, что программе запрещено делать, разработчик вынес в драйвер, программа устанавливает драйвер в систему и уже через него программа делает, что хочет! Более того – выяснилось, что RW Everything далеко не единственная программа, которая так делает. Таких программ не просто много, они буквально повсюду. У меня возникло ощущение, что каждый уважающий себя производитель железа имеет подобный драйвер:

Софт для обновления BIOS (Asrock, Gigabyte, HP, Dell, AMI, Intel, Insyde…)

Софт для разгона и конфигурации железа (AMD, Intel, ASUS, ASRock, Gigabyte)

Софт для просмотра сведений о железе (CPU-Z, GPU-Z, AIDA64)

Софт для обновления PCI устройств (Nvidia, Asmedia)

Во многих из них практически та же самая модель поведения – драйвер получает команды по типу «считай-ка вот этот физический адрес», а основная логика – в пользовательском софте. Ниже в табличке я собрал некоторые прокси-драйвера и их возможности:

Результаты краткого анализа пары десятков драйверов. Могут быть ошибки!

Результаты краткого анализа пары десятков драйверов. Могут быть ошибки!

Mem – чтение / запись физической памяти

PCI – чтение / запись PCI Configuration Space

I/O – чтение / запись портов I/O

Alloc – аллокация и освобождение физической памяти

Map – прямая трансляция физического адреса в вирутальный

MSR – чтение / запись x86 MSR (Model Specific Register)

Жёлтым обозначены возможности, которых явно нет, но их можно использовать через другие (чтение или маппинг памяти). Мой фаворит из этого списка – AsrDrv101 от ASRock. Он устроен наиболее просто и обладает просто огромным списком возможностей, включая даже функцию поиска шаблона по физической памяти (!!)

Неполный перечень возможностей AsrDrv101

Чтение / запись RAM

Чтение / запись IO

Чтение / запись PCI Configuration Space

Чтение / запись MSR (Model-Specific Register)

Чтение / запись CR (Control Register)

Чтение TSC (Time Stamp Counter)

Чтение PMC (Performance Monitoring Counter)

Alloc / Free физической памяти

Поиск по физической памяти

Самое нехорошее в такой ситуации - если подобный драйвер остаётся запущенным на ПК пользователя, для обращения к нему не нужно даже прав администратора! То есть любая программа с правами пользователя сможет читать и писать физическую память - хоть пароли красть, хоть ядро пропатчить. Именно на это уже ругались другие исследователи. Представьте, что висящая в фоне софтина, красиво моргающая светодиодиками на матплате, открывает доступ ко всей вашей системе. Или вирусы намеренно ставят подобный драйвер, чтобы закрепиться в системе. Впрочем, любой мощный инструмент можно в нехороших целях использовать.

Через Python в дебри

Конечно же я захотел сделать свой небольшой "тулкит" для различных исследований и экспериментов на базе такого драйвера. Причём на Python, мне уж очень нравится, как просто выглядит реализация сложных вещей на этом языке.

Первым делом нужно установить драйвер в систему и запустить его. Делаем "как положено" и сначала кладём драйвер (нужной разрядности!) в System32:

Раньше в похожих ситуациях я извращался с папкой %WINDIR%\Sysnative, но почему-то на моей текущей системе такого алиаса не оказалось, хотя Python 32-битный. (по идее, на 64-битных системах обращения 32-битных программ к папке System32 перенаправляются в папку SysWOW64, и чтобы положить файлик именно в System32, нужно обращаться по имени Sysnative).

Затем регистрируем драйвер в системе и запускаем его:

А дальше запущенный драйвер создаёт виртуальный файл (кстати, та самая колонка "имя" в таблице с анализом дров), через запросы к которому и осуществляются дальнейшие действия:

И ещё одна полезная программа для ползания по системе, WinObj

И ещё одна полезная программа для ползания по системе, WinObj

Тоже ничего особенного, открываем файл и делаем ему IoCtl:

Вот здесь чутка подробнее. Я долго думал, как же обеспечить адекватную обработку ситуации, когда таких "скриптов" запущено несколько. Не останавливать драйвер при выходе нехорошо, в идеале нужно смотреть, не использует ли драйвер кто-то ещё и останавливать его только если наш скрипт "последний". Долгие упорные попытки получить количество открытых ссылок на виртуальный файл драйвера ни к чему не привели (я получал только количество ссылок в рамках своего процесса). Причём сама система точно умеет это делать - при остановке драйвера с открытым файлом, он остаётся висеть в "Pending Stop". Если у кого есть идеи - буду благодарен.

В конечном итоге я "подсмотрел", как это делают другие программы. Выяснилось, что большинство либо не заморачиваются, либо просто ищут запущенные процессы с тем же именем. Но одна из исследованных программ имела кардинально другой подход, который я себе и перенял. Вместо того, чтобы переживать по количеству ссылок на файл, просто на каждый запрос открываем и закрываем файл! А если файла нет, значит кто-то остановил драйвер и пытаемся его перезапустить:

А дальше просто реверсим драйвер и реализуем все нужные нам вызовы:

Легко и непринуждённо в пару команд читаем физическую память

Легко и непринуждённо в пару команд читаем физическую память

PCI Express Config Space

Немного отвлечёмся на один нюанс про PCIE Config Space. С этим адресным пространством не всё так просто - со времён шины PCI для доступа к её конфигурационному пространству используется метод с использованием I/O портов 0xCF8 / 0xCFC. Он применён и в нашем драйвере AsrDrv101:

Чтение и запись PCI Config Space

Чтение и запись PCI Config Space

Но через этот метод доступны только 0x100 байт конфигурационного пространства, в то время как в стандарте PCI Express размер Config Space у устройств может быть достигать 0x1000 байт! И полноценно вычитать их можно только обращением к PCI Extended Config Space, которая замаплена где-то в адресном пространстве, обычно чуть пониже BIOS:

Адресное пространство современного x86 компа, 0-4 ГБ

Адресное пространство современного x86 компа, 0-4 ГБ

На чипсетах Intel (ну, в их большинстве) указатель на эту область адресного пространства можно взять из конфига PCI устройства 0:0:0 по смещению 0x60, подробнее описано в даташитах:


У AMD я такого не нашёл (наверняка есть, плохо искал), но сам факт неуниверсальности пнул меня в сторону поиска другого решения. Погуглив стандарты, я обнаружил, что указатель на эту область передаётся системе через ACPI таблицу MCFG

А сами ACPI таблицы можно найти через запись RSDP, поискав её сигнатуру по адресам 0xE0000-0xFFFFF, а затем распарсив табличку RSDT. Отлично, здесь нам и пригодится функционал поиска по памяти. Получаем нечто такое:

На всякий случай оставляем вариант для чипсетов Intel

Всё, теперь осталось при необходимости заменить чтение PCI Express Config Space через драйвер на чтение через память. Теперь-то разгуляемся!

Читаем BIOS

В качестве примера применения нашего "тулкита", попробуем набросать скрипт чтения BIOS. Он должен быть "замаплен" где-то в конце 32-битного адресного пространства, потому что компьютер начинает его исполнение с адреса 0xFFFFFFF0. Обычно в ПК стоит флеш-память объёмом 4-16 МБ, поэтому будем "сканировать" адресное пространство с адреса 0xFF000000, как только найдём что-нибудь непустое, будем считать, что тут начался BIOS:

В результате получаем:

Вот так в 10 строчек мы считали BIOS

Вот так в 10 строчек мы считали BIOS

Но подождите-ка, получилось всего 6 мегабайт, а должно быть 4 или 8 что-то не сходится. А вот так, у чипсетов Intel в адресное пространство мапится не вся флешка BIOS, а только один её регион. И чтобы считать всё остальное, нужно уже использовать SPI интерфейс.

Не беда, лезем в даташит, выясняем, что SPI интерфейс висит на PCI Express:


И для его использования, нужно взаимодействовать с регистрами в BAR0 MMIO по алгоритму:

Задать адрес для чтения в BIOS_FADDR

Задать параметры команды в BIOS_HSFTS_CTL

Прочитать данные из BIOS_FDATA

Пилим новый скрипт для чтения через чипсет:

Исполняем и вуаля - в 20 строчек кода считаны все 8 МБ флешки BIOS! (нюанс - в зависимости от настроек, регион ME может быть недоступен для чтения).

Точно так же можно делать всё, что заблагорассудится - делать снифер USB пакетов, посылать произвольные ATA команды диску, повышать частоту процессора и переключать видеокарты. И это всё - с обычными правами администратора:

Немного помучившись, получаем ответ от SSD на команду идентификации

Немного помучившись, получаем ответ от SSD на команду идентификации

А если написать свой драйвер?

Некоторые из вас наверняка уже подумали - зачем так изворачиваться, реверсить чужие драйвера, если можно написать свой? И я о таком думал. Более того, есть Open-Source проект chipsec, в котором подобный драйвер уже разработан.

Зайдя на страницу с кодом драйвера, вы сразу наткнетесь на предупреждение:

В этом предупреждении как раз и описываются все опасности, о которых я рассказывал в начале статьи - инструмент мощный и опасный, следует использовать только в Windows режиме Test Mode, и ни в коем случае не подписывать. Да, без специальной подписи на обычной системе просто так запустить драйвер не получится. Поэтому в примере выше мы и использовали заранее подписанный драйвер от ASRock.

Если кто сильно захочет подписать собственный драйвер - понадобится регистрировать собственную компанию и платить Microsoft. Насколько я нагуглил, физическим лицам такое развлечение недоступно.

Точнее я так думал, до вот этой статьи, глаз зацепился за крайне интересный абзац:

У меня под рукой нет Windows DDK, так что я взял 64-битный vfd.sys , скомпилированный неким critical0, и попросил dartraiden подписать его «древне-китайским способом». Такой драйвер успешно загружается и работает, если vfdwin запущена с правами администратора

Драйвер из статьи действительно подписан, и действительно неким китайским ключом:

Как оказалось, сведения о подписи можно просто посмотреть в свойствах.. А я в HEX изучал

Как оказалось, сведения о подписи можно просто посмотреть в свойствах.. А я в HEX изучал

Немного поиска этого имени в гугле, и я натыкаюсь на вот эту ссылку, откуда узнаю, что:

есть давно утёкшие и отозванные ключи для подписи драйверов

если ими подписать драйвер - он прекрасно принимается системой

малварщики по всему миру используют это для создания вирусни

Основная загвоздка - заставить майкрософтский SignTool подписать драйвер истёкшим ключом, но для этого даже нашёлся проект на GitHub. Более того, я нашёл даже проект на GitHub для другой утилиты подписи драйверов от TrustAsia, с помощью которого можно подставить для подписи вообще любую дату.

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

И в самом деле, китайская азбука

И в самом деле, китайская азбука

И точно так же, как и AsrDrv101, драйвер удалось без проблем запустить!

А вот и наш драйвер запустился

А вот и наш драйвер запустился

Из чего делаю вывод, что старая идея с написанием своего драйвера вполне себе годная. Как раз не хватает функции маппинга памяти. Но да ладно, оставлю как TODO.

Выводы?

Как видите, имея права администратора, можно делать с компьютером практически что угодно. Будьте внимательны - установка утилит от производителя вашего железа может обернуться дырой в системе. Ну а желающие поэкспериментировать со своим ПК - добро пожаловать на низкий уровень! Наработки выложил на GitHub. Осторожно, бездумное использование чревато BSODами.

В Windows есть фича "Изоляция ядра", которая включает I/O MMU, защищает от DMA атак и так далее (кстати об этом - в следующих сериях)


Так вот, при включении этой опции, некоторые драйвера (в том числе RW Everything и китайско-подписанный chipsec_hlpr) перестают запускаться:

Читайте также: