Моддинг UEFI BIOS, инкапсуляция SLIC таблицы.
Вкратце поясню, о чем идет речь, что такое SLIC (Software Licensing Description Table) таблица. Таблица SLIC 2.1 нужна для оffline OEM активации Windows 7. Интеграция SLIC-таблицы в BIOS используется для того, чтобы реализовать механизм OEM-активации операционной системы Windows 7 точно так же, как это делают OEM-партнеры Microsoft для активации предустановленных копий Windows без проверки. Данный метод позволяет offline активировать систему при соблюдении трех условий: использование специального OEM-ключа и OEM-сертификата, а также наличие SLIC-таблицы в BIOS компьютера.
Сама по себе процедура прошивки SLIC-таблицы в BIOS вполне законна (Microsoft).
Таблица SLIC 2.1 состоит из трех частей, кроме заголовка (ACPIHeader) она содержит публичный ключ (PublicKey) и маркер версии Windows 7 (WinMarker), размер таблицы 374 байт. Соответствующие таблице серийный номер и сертификат дожны быть прописаны в Windows 7. Все три составляющие и дают оффлайн активацию.
Жесткой привязки OEM-ключа к SLIC-таблице и сертификату нет. Ключ привязан только к редакции Windows и позволяет активировать как x86-, так и x64-версии ОС. Файлы-сертификаты и SLIC-таблицы взаимосвязаны, и для успешной активации оба компонента должны быть от одного OEM-партнера.
Disclaimer of Warranties (отказ от ответственности).
Прошу обратить внимание на то, что модификация и прошивка BIOS’а производится на ваш страх и риск, и я не несу никакой ответственности за возможную порчу данных и неработоспособность платы после прошивки. Материал приведен исключительно в ознакомительных целях.
Таблица SLIC в работающей Windows 7 находится в ОЗУ, в таблице ACPI. Способов ее туда поместить несколько:
- Инкапсулировать таблицу SLIC в BIOS материнской платы. Там же должен находиться код, который при загрузке перенесет таблицу в ОЗУ. Такой способ применяют OEM производители компьютеров при продаже моделей с предустановленной Windows 7.
- Заменить стандартный UEFI загрузчик Windows 7 своим. При загрузке он должен перенести таблицу в ОЗУ и затем или передать управление стандартному загрузчику, или продолжить загрузку сам. Не требуется манипуляций с BIOS, таблица в ОЗУ появляется до загрузки системы.
- Различные активаторы, помещающие таблицу SLIC в ОЗУ, и работающие из под самой Windows 7. Самый ненадежный и не всегда срабатывающий способ, но самый распостраненный.
Последним способом не пользовался, вернее пользовался даже не его вариантом, а скорее антиподом «RemoveWAT», где WAT — Windows Activation Technologies — основной модуль, отвечающий за проверку лицензии в Windows. Программа блокирует проверку активации Windows 7, на странице свойств системы даже пропадает проверка подлинности. Работает хорошо, но только если компьютер не подключен к инету. Если подключить, во время обновления активация сразу слетает. Я пользовался ей на рабочем ноутбуке ASUS, который выдали с предустановленной Windows 8. Выдали для контроля и поддержания в рабочем состоянии оборудования SIEMENS, а значит мне был нужен установленный пакет Step 7 v.5.5, который на Windows 8 не встает. Пользовался RemoteWAT около двух лет, но подключение к инету иногда было нужно, стал искать другой способ.
Нашел «WindSLIC», он активирует систему вторым способом, т.е. через загрузчик. Я посчитал этот способ безопасным (как позднее выяснилось зря, код написан довольно давно и не обновляется). Но на рабочем ноутбуке (ASUS X751L, Intel Core i5, AMI UEFI BIOS имеет только текстовое оформление (2012)) он интегрировался в один клик, встал идеально. Поставил года четыре назад, работает без проблем до сих пор.
Я попробовал применить этот способ активации и на свежекупленной материнке ASUS PRIME X370-A (Ryzen R7 1700X, красочный AMI UEFI BIOS со звездным небом (2018)). Еще раз повторюсь, считал такой способ активации полностью безопасным, подумаешь при необходимости вернуть назад родной загрузчик. Инсталировал и превратил материнку в «кирпич». При включении не издает звуков, не появляются строчки из BIOS, на нажатия клавиш не реагирует. О том что плата жива и включилась можно судить только по вспыхиванию светодиодов клавиатуры и по работе процессорного кулера.
Короткое отступление, обьяснение причины, как я ее понял:
Параметры меню, относящиеся к загрузке системы, у современных UEFI BIOS хранятся в области NVRAM на той же микросхеме BIOS. Возможно установщик WindSLIC при внесении информации о новом загрузчике испортил эту область, давно не обновлялся, что то сделал не так. BIOS перестал понимать как загружаться и плата «окирпичилась», способов обнулить область NVRAM при нестартующем BIOS нет.
Почитав форум по WindSLIC (чего зараннее не почитал. ), узнал что я не первый и не единственный «окирпиченный», пришла пора плату «оживлять»…
Если что-то пошло не так.
Любые манипуляции с BIOS потенциально опасны, после перепрошивки возможно вместо рабочей материнской платы получить «кирпич». Я рекомендую озаботиться этим сразу.
Технология ASUS USB BIOS Flashback.
На некоторых материнских платах с процессорами Intel в составе южного моста присутствует дополнительный контроллер. Он обеспечивает работу технологии удаленного мониторинга, диагностики и управления «Inter vPro» даже в ситуациях, когда компьютер выключен или на нем не работает операционная система (дежурное напряжение должно быть подано). Инженеры ASUS научили этот контроллер еще и обновлять BIOS. На сайте ASUS появление этой технологии обьяснено так:
Покупая набор новых комплектующих, может возникнуть ситуация, что процессор настолько новый, что материнская плата его еще «не знает». Раньше бы для обновления BIOS потребовался бы старый процессор или пришлось бы тратить время на поход в сервисный центр. Но теперь с появлением технологии ASUS USB BIOS Flashback проблема решается гораздо проще.
USB BIOS Flashback – самый простой способ обновления BIOS на материнских платах ASUS. Для обновления теперь достаточно только USB-накопителя с записанным на него файлом BIOS и блока питания. Ни процессор, ни оперативная память и другие комплектующие теперь не нужны.
У материнских плат с поддержкой этой технологии обычно на задней панели должны присутствовать кнопка с подсветкой и специализированный USB порт.
- Первым делом готовим флешку, форматируем ее в FAT16, FAT32. Некоторые платы поддерживают и NTFS, необходимо уточнить по руководству пользователя или сайту техподдержки.
- Загружаем новейший BIOS с сайта техподдержки ASUS.
- Переименовываем файл предопределенным коротким именем, имя необходимо уточнить по руководству пользователя, записываем на флешку.
- Подключаем разьемы блока питания (если они еще не подключены), основной 24-пин и доподнительный питания процессора 8-пин к материнской плате, сам процессор не требуется.
- Подключаем USB накопитель в разъем USB BIOS Flashback/ROG Connect (для плат на Intel X79 – это разъем USB 2.0 белого цвета, для плат на других чипсетах – это разъем USB 2.0, отмеченный цветом и надписью USB BIOS Flasback/ROG Connect на панели Q-Shield), нажимаем и удерживаем кнопку 3 секунды до запуска световой индикации.
- Ждем завершения световой индикации кнопки USB BIOS Flashback/ROG Connect, которое означает, что обновление успешно выполнено.
Если индикатор мигает в течение 5 секунд и отключается, это означает, что BIOS flashback работает неправильно. Пожалуйста, попробуйте шаги ниже:
- Мы рекомендуем вам использовать USB 2.0 флешку для сохранения последней версии BIOS для лучшей совместимости и стабильности процедуры;
- Подключите USB устройство в порт USB Flashback;
- Выключите компьютер;
- Нажмите кнопку BIOS Flashback в течение 3 секунд, пока Flashback индикатор не моргнет 3 раза. Это будет означать, что BIOS Flashback приступил к работе;
- Подождите, пока индикатор не потухнет, что будет означать, что обновление BIOS завершено;
- не отключайте внешний диск/устройство, не запускайте компьютер, не нажимайте на кнопку CLR_CMOS, пока выполняется обновление BIOS, в противном случае, обновление будет прервано;
- Если процесс прервался, повторите шаги выше еще раз;
- Если индикатор моргает в течение 5 секунд и после горит постоянным белым светом, это означает, что BIOS Flashback произвел операцию неверно. Это может быть вызвано неправильной установкой USB устройства и неправильным наименованием /форматом файла. Если это так, пожалуйста, перезагрузите систему;
- Обновление BIOS — это всегда риск. Если программа BIOS повредилась во время процесса и как результат ОС не запускается, пожалуйста, обратитесь к продавцу по месту покупки, чтобы сдать плату в сервисы ASUS;
Моя материнка предназначена для процессоров Ryzen, имеет южный мост от AMD. Поэтому технологию Intel не поддерживает и технологией ASUS USB BIOS Flashback обделена. Что делать? Берем руководство пользователя и ищем пункт относящийся к восстановлению BIOS. У меня он называется:
ASUS CrashFree BIOS 3 utility.
Ее работа основывается на том, если BIOS вы запороли, но бут-блок остался целым, эта утилита запустится автоматически и будет искать прошивку на всех доступных носителях (DVD и Flash дисках).
Первые три пункта проделываем аналогично ASUS USB BIOS Flashback, т.е. готовим флешку, скачиваем свежий BIOS, переименовываем и пишем на флешку. Имя файла, по которому утилита будет искать файл BIOS указано в описании утилиты в руководстве пользователя, для моей материнки это PRX370A.CAP. Последовательность действий для восстановления BIOS:
- Выключите компьютер.
- Вставьте DVD в привод, или флешку в USB порт. Файл BIOS должен быть предварительно подготовлен и записан в корневой раздел.
- Включите компьютер, при невозможности загрузки утилита CrashFree запустится автоматически. Если она обнаружит файл BIOS с предопределенным именем, он будет обновлен автоматически. Плохо тут то, что трудно определить началось ли обновление, только по активности индикатора DVD. Флешки сейчас этим индикатором чаще всего обделены.
- После обновления BIOS выключите и включите компьютер, если обновление прошло удачно, нужно будет войти в BIOS и установить настройки по умолчанию.
К сожалению мне эти манипуляции не помогли, материнка не ожила.
Если ничего не помогло.
На материнских платах ASUS всегда рядом с микросхемой BIOS устанавливается разьем ISP (Internal System Programming). Прошивка ведется аппаратным программатором по протоколу SPI:
Программатор SPI с Ali у меня уже был, но здесь дело осложнилось тем, что микросхема BIOS W25Q128FW питается от 1,8V. Такие раньше программировать не приходилось, пришлось там-же на AliExpress дозаказать преобразователь уровней для него (лучше делать это заранее). У этого же продавца на всякий случай заказал и второй экземпляр того-же самого программатора.
Весь нужный комплект для перепрошивки BIOS программатором выглядит так:
Из самодельного здесь только кабель. Строго говоря его применение вовсе не обязательно, можно использовать отдельные проводочки, но раз я все равно заказывал 1.8V-adapter, одновременно заказал и десяток разьемов IDC2-10 (2мм). К кабелем работать значительно удобнее, да и стабильность и отказоустойчивость такого соединения выше.
Всегда по возможности использую «idiot proof«, или защиту от дурака (и себя в том числе). Расположение первого вывода, чтобы не разглядывать платы и кабель каждый раз, маркировал красной краской. В неиспользуемые IDC гнезда на кабеле забил обрезки заточенных спичек.
Все действия по работе с SPI программатором производятся на обесточенной материнской плате. Именно со снятыми разьемами питания, наличие процессора, ОЗУ и т.д. некритично. Встречал совет вынимать даже батарейку CMOS, но это наверное перебор, я не вынимал.
Подключил шлейф программатора к ISP разьему на материнке, затем к программатору, воткнул программатор в другой компьютер, именно в такой последовательности, запустил на комьютере программу AsProgrammer. Первым делом надо проверить связь, прочитать SREG регистры микросхемы BIOS. Если все нормально и регистры читаются, можно приступать непосредственно к самой перепрошивке BIOS.
Для этого надо скачать с сайта ASUS прошивку нужного BIOS, я скачал самый последний (на момент написания статьи это был PRIME-X370-A-ASUS-4207.CAP (07.12.2018)). Здесь надо заметить, что моя Desktop плата для AMD процессоров и для розничной продажи, кроме региона BIOS в прошивке ничего нет, и можно заливать ее напрямую. Устройство UEFI BIOS это отдельная тема, и не мне ее обьяснять, если кто интересуется, обратитесь к статьям CodeRush на Хабре.
- Устройство файла UEFI BIOS, часть первая: UEFI Capsule и Intel Flash Image;
- Устройство файла UEFI BIOS, часть полуторная: UEFI Platform Initialization;
- Устройство файла UEFI BIOS, часть вторая: UEFI Firmware Volume и его содержимое;
- Модификация UEFI BIOS, часть первая: знакомство с UEFITool;
- Модификация UEFI BIOS, часть вторая: полезные модификации;
Краткое обьяснение что такое формат CAP файлов BIOS ASUS:
Файл *.CAP, это контейнер UEFI Capsule. От обычного бинарного файла прошивки он отличается только наличием в начале файла 2-х килобайтного заголовка. Ни одного байта из этого заголовка в микросхему BIOS’а не попадает, и используется он только для проверки валидности файла перед прошивкой стандартными утилитами ASUS. При прошивке аппаратным программатором, а также низкоуровневыми утилитами вроде Intel Flash Programming Tool или FlashRom этот заголовок нужно просто удалить.
Нам необходим файл BIOS в бинарном формате, поэтому от файла CAP необходимо отрезать 0x800 байт заголовка и сохранить получившийся файл с расширением ROM или BIN. Отрезать можно и руками в любом HEX редакторе, но возможность допустить ошибку тут все же присутствует, поэтому лучше использовать специализированную утилиту ASUS_BIOS_CAP_to_BIN.
Несмотря на «фирменное» название утилита отношения к программистам ASUS не имеет и написана на основе исходных кодов редактора FD44Editor-0.9.2 от Николая Шлея (aка CodeRush). Ее дополнительным преимуществом является дешифровка оригинального имени BIOS из бут-блока. При конвертации файла PRIME-X370-A-ASUS-4207.CAP утилита определяет его правильное имя PRX370A.
Читаем программатором и сохраняем текущую прошивку BIOS (хоть она и нерабочая, но чтение и сохранение должно стать инстинктом, да и мало ли, сравнить потом тоже интересно). Следующим действием стираем микросхему BIOS. Только теперь можно загрузить в программу-прошивальщик новую версию BIOS и прошивать. Ну а потом вынимаем программатор, отключаем шлейф от программатора (подключение к разьему ISP я оставил, мало ли), при необходимости дособираем материнку и подаем на нее питание. Затаить дыхание, скрестить пальцы (вставте свое по необходимости) и запустить.
У меня материнка запустилась сразу, ругнулась на неверную чексумму и сама вошла в BIOS. Осталось загрузить настройки по умолчанию и выйти, вторая загрузка прошла идеально.
Вот только теперь я добрался наконец до цели статьи, до моддинга UEFI BIOS с целью инкапсуляции SLIC таблицы. Все предыдущее было только преамбулой, довольно длинной, но необходимой.
Т.к. у меня на материнке остался шлейф, подключенный к ISP разьему, рядом стоял работающий компьютер, то все модификации BIOS программой PhoenixTool я производил на этом компьютере, тут же прошивая модифицированный BIOS программатором и проверяя эффект от модификации. Это сильно экономило время, не забывайте только о трех простых действиях перед перепрошикой.
- Полностью обесточить прошиваемую материнскую плату;
- Сначала соединить шлейф с программатором;
- Потом вставить программатор в USB разьем;
Только в такой последовательности, итак начнем сам моддинг:
Внесение таблицы SLIC в BIOS.
Запускаем PhoenixTool, в нем активна одна верхняя строчка Original BIOS. Нажав справа кнопку с двоеточием загружаем BIOS в программу, формат CAP она понимает. Программа начинает анализ BIOS, и раскладку его на модули. В папке с оригинальным BIOS создается папка DUMP, в которой каждый модуль разложен в отдельный файл. Процесс анализа и разборки заносится в файл SLIC.log (очень подробно, размер файла после анализа 184429 байт).
Процесс довольно длительный, в статусном окне в это время высвечивается WORKING.
Новые UEFI BIOS от AMI уже подготовлены к инжекции таблицы OEM SLIC, в этом случае программа в конце разбора предупредит об этом:
Более подробно об этом же написано в конце SLIC.log:
- Finished Extracting
- LZMA compression method used
- EFI / Insyde BIOS
- Full SLIC table found in A1902AB9-5394-45F2-857A-12824213EEFB_896.ROM at 18A0
- ‘SLIC’ string found in B1DA0ADF-4F77-4070-A88E-BFFE1C60529A_2022.ROM at C7F48
- OEM/Table IDs identified are:
- 1. A M I OEMSLIC
- Complete SLIC (2.0) (A M I OEMSLIC ) (x1)
- SLIC digital signature valid
Программа нашла одну таблицу SLIC v2.0 (Windows Vista) с идентификатором AMI OEMSLIC. Искать к этой таблице ключ и сертификат бесполезно, это просто заглушка не содержащая PublicKey и WinMarker. Чтобы в этом убедится, достаточно открыть эту таблицу в Hex редакторе:
Разбирать SLIC таблицу по Hex редактору сложно и требует навыка. Чтобы это упростить была написана утилита парсинга SLIC таблицы SlicView. Вырежем таблицу и сохраним под именем Slic.bin, затем загрузим в SlicView. Справа для примера SLIC таблица ASUS из каталога SLIC21 PhoenixTool. Заголовок:
Поле Modulus публичного ключа фиктивной таблицы содержит одни нули, ключа нет:
Поля OEM ID и OEMTableID маркера версии Windows пустые, поле Signature содержит одни нули, маркера нет:
Простая замена этого фиктивного SLIC на валидный от OEM производителя не проходит, в BIOS ASUS есть код его блокирующий. Программа PhoenixTool позволяет и заменить фиктивный SLIC и разблокировать его.
PhoenixTool, метод Dynamic
Для этого в программе предназначен метод Dynamic. Этот метод используется, если EFI уже содержит SLIC ACPITable (где-то в EFI) или он подготовлен к его инкапсуляции.
Программа сравнивает версию загружаемой SLIC таблицы и ее OEM и OEMTableID, присутствие таблицы в пространстве имен ACPI и соответствие имен с OEM и OEMTableID таблицы RSDT, при необходимости изменяет OEM и OEMTableID таблицы XSDT.
Примечание по PhoenixTool:
- Начиная с версии 1.92 применение отчета программы RW Everything для UEFI BIOS не обязательно.
- Начиная с версии 1.93 ALASKAAMI OEM/Table ID теперь всегда заменяется в соответствии с OEM/Table ID вшиваемого SLIC.
Для активации Windows 7, OEM и OEMTableID вшиваемого SLIC в RSDT и, если таблица присутствует в XSDT, должны совпадать.
Windows зависит от прошивки UEFI для загрузки аппаратной платформы. Следовательно, Windows будет использовать системную таблицу EFI для определения местоположения RSDP. Если указаны оба табличных адреса, Windows предпочтет XSDT.
Вернемся к программе PhoenixTool, после анализа BIOS и разборки его на модули стал доступен выпадающий список Manufactured. Здесь надо выбрать производителя материнской платы. Дело в том, что у многих производителей есть свои фишки в плане внесения изменений в стандартный образец BIOS. PhoenixTool о многих знает и учитывает при внесении изменений в BIOS.
Например выбрав производителя ASUS, PhoenixTool использует метод, который разблокирует SLIC путем исправления кода (Блокировка ASUS EFI (тип 1) будет обнаружена в модуле A1902AB9-5394-45F2-857A-12824213EEFB, там же, где и фиктивная SLIC таблица).
Таким образом выбираем производителя -> ASUS, SLIC File -> ASUS, больше ничего не заполняем, выбираем Method -> Dynamic, нажимаем кнопку Go. Программа спросит, продолжать ли модифицировать BIOS без отчета RW Everything, соглашаемся.
Начнется корректировка файла BIOS, ждем, в конец файла SLIC.log программа будет продолжать дописывать операции с BIOS (размер файла после корректировки 557780 байт).
Через некоторое время PhoenixTool сообщит, что таблица SLIC успешно интегрирована в BIOS. Имя модифицированного файла BIOS соответствует имени изначального с добавлением префикса _SLIC и находится там-же.
SLIC performed successfully. BIOS file is C:\Temp\PRIME-X370-A-ASUS-4207_SLIC.CAP
Finished Extracting
LZMA compression method used
EFI / Insyde BIOS
Full SLIC table found in A1902AB9-5394-45F2-857A-12824213EEFB_896.ROM at 18A0
‘SLIC’ string found in B1DA0ADF-4F77-4070-A88E-BFFE1C60529A_2022.ROM at C7F48
OEM/Table IDs identified are:
1. _ASUS_Notebook
Complete SLIC (2.1) (_ASUS_Notebook’ MSFT) (x1)
Т.е программа заменила в BIOS фиктивный SLIC на нормальный, можно приступать к прошивке…
…
Итак BIOS со вшитой таблицей SLIC мы прошили, Для проверки запускаем программу SLIC_ToolKit_V3.2, если таблица SLIC доступна, программа это покажет:
Не тут-то было, программа не нашла SLIC таблицу, чтобы узнать в чем дело переходим на страницу «Advanced»:
Видно, что в разделах XSDT и RSDT присутствует сигнатура SLIC «ASUS_Notebook», но публичный ключ и маркер не доступны, очевидно PhoenixTool на этом BIOS не смог разблокировать код, переносящий их в ACPI таблицу.
PhoenixTool, метод NewModule
Ничего страшного, PhoenixTool поддерживает еще один вариант инкапсуляции SLIC таблицы в UEFI BIOS.
Для многих OEM-производителей существует стандартный способ добавления постоянных данных SLIC в прошивку Aptio предоставляемую AMI, вставляя их в качестве модулей EFI и передавая капсулу в капсулу с помощью своего закрытого ключа. Часть из этих ключей «утекли» в инет, и используя эти ключи метод New Module в PhoenixTool может имитировать описанную выше процедуру на современных прошивках ASUS.
Начинаем как и в первом случае, загружаем BIOS для анализа в PhoenixTool, после анализа выбираем производителя -> ASUS, SLIC File -> ASUS. После выбора Method -> NewModule станет доступна строка «Key File», где надо выбрать ключ. В PhoenixTool 2.66 он всего один, в PhoenixTool 2.73 добавлен еще один, какой выбирать, без разницы.
Начнется процесс интеграции SLIC таблицы в BIOS, в конце снова увидите репорт типа этого:
SLIC performed successfully. BIOS file is C:\Temp\PRIME-X370-A-ASUS-4207_SLIC.CAP
Finished Extracting
LZMA compression method used
EFI / Insyde BIOS
Full SLIC table found in A1902AB9-5394-45F2-857A-12824213EEFB_900.ROM at 18A0
Pubkey and Marker found in CDFFEBFB-17DC-46BC-9B75-59B861920913_101.ROM at 0
‘SLIC’ string found in B1DA0ADF-4F77-4070-A88E-BFFE1C60529A_2026.ROM at C7F48
OEM/Table IDs identified are:
1. A M I OEMSLIC
2. _ASUS_Notebook
Complete SLIC (2.0) (A M I OEMSLIC ) (x1)
Pubkey and marker (2.1) (_ASUS_Notebook) (x1)
Т.е. фиктивный SLIC остался как и был с идентификатором A M I OEMSLIC, а публичный ключ и маркер с идентификатором _ASUS_Notebook вшиты отдельным EFI модулем.
Прошиваем и запустив SLIC_ToolKit_V3.2 проверяем:
Ну наконец то, программа нашла SLIC таблицу, чтобы узнать подробности переходим на страницу «Advanced»:
Разделы имеют нужный идентификатор и соответствуют друг другу, публичный ключ и маркер также соответствуют идентификатору и доступны системе, SLIC Status — Validated. Теперь Offline активация Windows 7 пройдет успешно.
На этом можно было бы и остановиться, но у меня остался осадок. Дело в том, что в BIOS находится два разных идентификатора, A M I OEMSLIC и _ASUS_Notebook. И хотя первый не используется, люблю что бы все было по феншую и желательно сделать их одинаковыми.
Это несложно, берем BIOS, который мы подготовили методом Dynamic, и накатываем поверх ту же SLIC таблицу методом NewModule. Или иными словами применяем два метода Dynamic и NewModule последовательно к одному и тому же BIOS.
Если загрузить для контроля созданный таким образом файл PRIME-X370-A-ASUS-4207_SLIC.CAP в PhoenixTool, после анализа он сообщит:
Finished Extracting
LZMA compression method used
EFI / Insyde BIOS
Full SLIC table found in A1902AB9-5394-45F2-857A-12824213EEFB_900.ROM at 18A0
Pubkey and Marker found in CDFFEBFB-17DC-46BC-9B75-59B861920913_101.ROM at 0
‘SLIC’ string found in B1DA0ADF-4F77-4070-A88E-BFFE1C60529A_2026.ROM at C7F48
OEM/Table IDs identified are:
1. _ASUS_Notebook
Complete SLIC (2.1) (_ASUS_Notebook’ MSFT) (x1)
Pubkey and marker (2.1) (_ASUS_Notebook) (x1)
В системе такой BIOS ничем не отличается от предыдущего.
Но даже такая SLIC таблица меня не устроила. Дело в том, что SLIC таблица ASUS имеет идентификатор _ASUS_Notebook, а у меня Desktop, никакой не Notebook. Как то странно выглядит процессор ноутбука с 8 ядрами и 16 потоками. Поэтому идентификатор я взял другой, не ноутбучный. Для этого надо всего лишь выбрать SLIC таблицу другого производителя (но Manufactured по прежнему ASUS).
PhoenixTool, метод DMI
Необходимо учитывать что использование методов Dynamic и NewModule делает не постоянную SLIC таблицу. Не постоянную в том смысле, что если выйдет новая версия BIOS, перед перепрошивкой будет необходимо проделать с ним те-же действия для инжекции SLIC таблицы. PhoenixTool имеет возможность сделать SLIC таблицу постоянной, для этого предназначен метод DMI. DMI (Desktop Management Interface) — программный интерфейс (API), позволяющий программному обеспечению собирать данные о характеристиках аппаратуры компьютера. Сам я этим методом никогда не пользовался, поэтому опишу коротко, как сам понял.
Использование этого метода немного сложнее, требуемые действия:
- С помощью инструмента Universal BIOS Backup ToolKit создать копию BIOS вашего компьютера с заполненной областью DMI. У BIOS скачанных с сайта производителя эта область отсутствует и фирменные прошивальщики из BIOS (EZFlash 3) в эту область не пишут. При попытке выбрать метод DMI для такого BIOS получите сообщение:
Инжектированная таким образом таблица SLIC становится постоянной, последующие перепрошивки свежих версий BIOS фирменным прошивальщиком EZFlash 3 ее не затрагивают.
Вкратце о трех оставшихся методах:
- Module. При попытке применить этот метод, PhoenixTool у меня вылетает с ошибкой:
SSV2. После анализа файла моего BIOS этот пункт менялся на Code, и если выбрать этот способ выскакивает ошибка:
NVRAM. Тут даже не знаю что сказать, побаиваюсь я этого метода. Ведь он работает не с файлом на диске, а напрямую с областью NVRAM. Я еще когда собирался оживлять материнку, почитал статьи от CodeRush:
Все действия по перепрошивке вариантов моддингового BIOS я производил в помощью программатора SPI. Сначала по необходимости, ну а затем по удобству, грех не воспользоваться уже подключенным и настроенным соединением. Но обычно так не делают, это форс-мажор, обычно пользуются программным флешером, немного о них.
О флешерах из под Windows говорить не буду, считаю ненадежным баловством, хотя вроде и удобно, не пользовался. Не менее удобно использовать встроенный в UEFI BIOS ASUS программный флешер EZFlash 3. Он выполнен как модуль EFI, пользуется всеми преимуществами взаимодействия с другими модулями EFI (поиск и распознавание дисков, работа с файловыми системами). Но есть один минус, этот флешер работает только с форматом САР, выше я уже кратко рассказывал что это такое. Добавлю что в заголовок UEFI Capsule входит зашифрованная цифровая подпись изготовителя с контрольной суммой BIOS. А т.к. при моддинге мы вносим изменения в бинарную прошивку контрольная сумма меняется и цифровая подпись становится недествительной, EZFlash 3 просто откажется прошивать такой BIOS.
Интересная особенность по прошивке BIOS есть у некоторых плат для процессоров Intel и поддержкой технологии Intel vPro, это технология BIOS Flashback. По сути в южный мост встроен аппаратный программатор с програмным флешером управляемым одной кнопкой. Такие платы встречаются не часто, я в руках не держал.
Выход один, преобразовать САР в ВIN (отбросить заголовок UEFI Capsule) и прошить подходящим программным флешером с загрузочной USB флешки. Их много разных для разных операционных и файловых систем, но лучше использовать такой, работоспособность которого неоднократно проверена в инете на вашей серии материнских плат, а еще лучше от самого производителя материнской платы. Для ASUS это Bupdater, рекомендуется в руководстве пользователя материнки, работает из под DOS, выше при описании метода DMI я уже говорил о нем.
Для линуксоидов выбора особого нет (в смысле он им и не особо нужен), это встроенный программный флешер Flashrom. Он имеет поддержку более 200 типов южных мостов, поддержку множества самых разных аппаратных программаторов, входит в репозитории многих популярных сборок Linux. Программа постоянно развивается и обновляется.