Разблокируем скрытые настройки БИОС

Вопреки воле производителя получаем доступ к функциям, доступ к которым не предусмотрен
22 апреля 2021, четверг 23:52
NuJIevik для раздела Блоги

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

Естественно, пытливого юзера не может устраивать такое злодейское ограничение пользовательской свободы. В связи с чем предлагаю рассмотреть способы обхода этих искусственных препон. Рассматривать будем на примере плат Intel 100-300 чипсетов. Аспекты работы с AMIBCP общеприменимы.

 

Способ 1. Простой
требуется: программа AMIBCP и навык прошивки МП

Качаем подходящую версию AMIBCP. В нашем случае v5.02.

File → Open… (файл_биос)

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

Именно в этом блоке в соответствующих меню и подменю находятся все доступные настройки. Иерархия та же, что и в БИОС. Наряду со знакомыми наблюдаем и совершенно новые отдельные параметры и даже целые разделы!

Для открытия элемента достаточно поменять значение в колонке Access/Use на USER:


Обратите внимание, на разделы, описанные как бы наравне с главным, есть ссылки в теле главного блока. Т.е. доступ к ним получить можно. Например, по пути Setup → Advanced → System Agent (SA) Configuration → Memory Configuration большой раздел с настройками памяти.


Помимо открытия доступа к настройкам, AMIBCP позволяет изменить значения настроек по умолчанию, переименовать параметры и разделы.

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


Способ 2. Сложный (для разделов)
то же + UEFITool, IFR-Extractor и HEX-редактор

Попытаемся разблокировать тот же раздел с настройками памяти на Gigabyte. Организация БИОС здесь другая, упоминаний нужного раздела в главном блоке нет.

Подменим доступный раздел скрытым. «Пожертвуем», к примеру, подменю USB Configuration (Setup → Peripherals).

Определились с тем, что хотим открыть, определились, что хотим закрыть. К делу!



UEFITool

Ищем модуль по сигнатуре $SPF: *Ctrl+F* → Text

Извлекаем и сохраняем модуль: *ПКМ* → Extract Body (to SPF.bin)

Ищем второй модуль по GUID: *Ctrl+F* → GUID=899407D7-99FE-43D8-9A21-79EC328CAC21

GUID модуля может отличаться, в этом случае вести поиск по сигнатуре Setup.

Модуль → PE32 Image Section → *ПКМ* → Extract Body (to Setup.bin)



IFR-Extractor

*открыть* → Setup.bin → Extract (to Setup IFR.txt)



Открываем Setup IFR.txt в блокноте.

Ищем «USB Configuration»:
0x30824 Ref: USB Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x135, FormId: 0x2923 {0F 0F 78 1E 79 1E 35 01 00 00 FF FF 00 23 29}

Нас интересует FormId.

Теперь определим FormId раздела «Memory Configuration»:
0x3B628 Form: Memory Configuration, FormId: 0x2738 {01 86 38 27 72 09}



Открываем SPF.bin в HEX-редакторе.

Ищем HEX-последовательность, соответствующую FormID раздела Memory Configuration: 
*Ctrl+F* → Hex Values (3827)

Нас интересует page_id через 4 позиции – 0060 (последовательность 6000)

Аналогично ищем page_id для Usb Configuration. Сразу за page_id 005D следует parent_id 0019.

Parent_id – это page_id родительского раздела, в нашем случае раздела Peripherals.

Ищем обратную последовательность parent_id+page_id (19005D00). Это форма вызова раздела USB Configuration.
Заменяем page_id USB Configuration на page_id Memory Configuration. Вместо 19005D00 получаем соответственно 19006000:



Остается только заменить исходный SPF модуль на модифицированный в UEFITool
*ПКМ* → Replace Body…

Сохраняем: File → Save image file. Прошиваем.


Теперь вместо раздела USB Configuration будет вызываться раздел с настройками памяти.

При желании можно изменить имя раздела в AMIBCP.


Если AMIBCP не работает

С новыми материнками все чаще AMIBCP работать отказывается.

В этом случае остается лишь использовать 2 способ.


О прошивке

На Intel достаточно прошить только bios-region, если модифицировался текущий БИОС. Справятся Afuwin или Flash Programming Tool из-под винды. Должны справиться и встроенные прошивальщики.


UEFITool: https://github.com/LongSoft/UEFITool/releases
IFR-Extractor: https://github.com/LongSoft/Universal-IFR-Extractor/releases


Благодарность теме: https://forums.overclockers.ru/viewtopic.php?f=25&t=599984