1) С помощью Uefitool/Uefitool NE открываем файл с биосом, внутри ищем первый модуль, содержащий текстовую сигнатуру $SPF (File->Search->Text), сохраняем модуль без заголовка(extract body) под именем mySPF.bin, также запомним guid (может быть другой guid, главное чтобы этот модуль был внутри секции AMITSESetupData) - Ищем второй модуль по guid (File->Search->GUID=899407D7-99FE-43D8-9A21-79EC328CAC21), сохраняем модуль без заголовка (PE32 image section=>extract body) под именем mySetup.bin, (модуль может иметь другой guid, тогда нужно искать по названию Setup)
2) C помощью IRFExtractor открываем mySetup.bin, извлекаем декодированный скрипт в файл mySetup_IFR.txt
3) Открываем mySPF.bin в hex-редакторе - проверяем что по смещению 0x00 находится сигнатура "$SPF" - по смещению 0x2C находится адрес описания СТРАНИЦ (0x00000060, первые 4 байта по этому адресу хранят количество страниц (0xD9), поэтому адрес первой (отсчет с нуля) страницы PAGES=0x0064) - по смещению 0x30 находится базовый адрес ЭЛЕМЕНТОВ (ELEMENTS=0x6B34) #77
Иерархия хранения меню
Открываем в AMIBCP файл с биосом, раскрываем вложенные меню, пока не увидим меню Setup #77
Выясним почему меню "CPU Configuration" программа AMIBCP показывает внутри меню "Setup", а не где-то еще. 4) В скрипте mySetup_IFR.txt ищем строку "CPU Configuration": Form: CPU Configuration, FormId: 0x2726 {01 86 26 27 07 07} (labelid=0x0707 идентификатор строки "CPU Configuration") - по FormId=0x2726 ищем это значение в файле mySPF.bin (последовательность двух байт "26 27"), поиск находит адрес 0x0DAE, от этого адреса отнимаем 0x0A и получаем адрес начала страницы 0x0DA4 #77 - проверяем что это действительно начало страницы, переместитесь по адресу 0x0064 (PAGES), прибавим к этому адресу pageid страницы (см. ниже), умноженный на 4, 64+(18*4)= С4, по адресу 0x00C4 находится значение 0x0DA4, значит расчет положения начала страницы правильный - возращаемся к адресу 0x0DA4, смотрим интересующие нас поля: 0x00 byte - 8 пустых байт 0x08 word - всегда 0001 0x0A word - formid (2726) 0x0C word - title (0000) ???? 0x0E word - subtitle (0707) = labelid 0x10 word - pageid (0018) 0x12 word - parentid (0001) - ссылка на вышестоящую страницу 0x14 dword - flags (00000000) 0x18 dword - variable_id (всегда 00000039) 0x1C dword - количество элементов (34) 0x20 dword - смещение первого элемента (смещение относительно адреса ELEMENTS) 0x24 dword - смещение второго элемента ... - найдем вышестоящую страницу с pageid=x0001, 0x0064 (PAGES) + (1*4) = 0x0068, по этому смещению находится значение 0x0414 - адрес страницы, переходим по адресу, видим formid = 0x2710 #77
- в скрипте mySetup_IFR.txt ищем строку "FormId: 0x2710", это меню "Setup", что и требовалось выяснить.
Как открыть экран подменю
Выясним как элементы меню открывают вложеные подменю В качестве примера возьмем "Peripherals" и его подменю "USB Configuration", на снимке видно что почти в самом конце "Peripherals" есть элемент, вызывающий это подменю #77 - в скрипте mySetup_IFR.txt ищем строку "USB Configuration" Ref: USB Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x117, FormId: 0x2920 {0F 0F A1 1E A2 1E 17 01 00 00 FF FF 00 20 29} labelid = 0x1EA1 help_label = 0x1EA2 - идентификатор строки "USB Configuration Parameters" questionId = 0x0117 - в mySPF.bin ищем 0x2920, поиск находит байты по адресу 0x28CE, отнимаем 0x0A, получаем адрес начала страницы 0x28C4 поля внутри страницы: 0x10 word - pageid (x005C) "USB Configuration" 0x12 word - parentid (x0015) - в скрипте mySetup_IFR.txt ищем строку "Peripherals" Form: Peripherals, FormId: 0x2713 {01 86 13 27 1D 00} - в mySPF.bin ищем 0x2713, поиск находит байты по адресу 0x0C1E, отнимаем 0x0A, получаем адрес начала страницы 0x0C14 поля внутри страницы: 0x10 word - pageid (x0015) 0x1C dword - количество элементов (0x1B) 0x20 dword - смещение первого элемента - в amibcp считаем сверху вниз номер элемента начиная с нуля (0 - Initial Diplay Output,..., 25(0x19) - USB Configuration) вычисляем смещение где хранится адрес элемента 19*4 + 0x20 + 0x0C14 = 0xC98, по смещению находится адрес элемента = 0x64B0, прибавляем к нему базовое смещение 0x6B34(ELEMENTS) и получаем абсолютный адрес элемента = 0xCFE4 #77 - смотрим поля 0x00 byte - 8 пустых байт 0x08 dword - Variable (00000000) 0x0С word - questionId (0117) 0x0E word - DevicePathId (0000) ? 0x10 byte - DefaultStoreCount (00) ? 0x11 byte - Reserved (00) ? 0x12 word - DestQuestionID (0000) ? 0x14 word - type (0001) 0001=submenu 0x16 word - pageid (0015) "Peripherals" 0x18 word - destination_pageid (005C) =>"USB Configuration" 0x1A word - ???? (0000) 0x1C dword - flags (00000001) visible=1 ? 0x20 word - help_label (1EA2) ... - ссылки на этот же элемент и его свойства внутри mySetup_IFR.txt 0x3C word - labelid (1EA1)
поле destination_pageid определяет какой экран будет открыватся при входе в подменю
Связь между AMITSESetupData и IFR
- amibcp для показа текста элементов меню и строк помощи использует информацию из AMITSESetupData, игнорирует IFR - bios использует текст из IFR, игнорирует AMITSESetupData - amibcp игнорирует условия отображения элементов из IFR, показывает все возможные элементы - amibcp может глобально переопределять доступность элементов, bios после этого игнорирует условия в IFR
Интересная тема, как думаете, можно ли будет открыть (доделать) функционал для разгона Skylake по шине (включая Xeon E3 V5) на платах, которые разгон не поддерживают (H110, B150, B250, Z270, Z370)?
_________________ Солдатушки-ребятушки, нашему царю показали фигу. Умрём все до последнего!
Интересная тема, как думаете, можно ли будет открыть (доделать) функционал для разгона Skylake по шине (включая Xeon E3 V5) на платах, которые разгон не поддерживают (H110, B150, B250, Z270, Z370)?
в не Z-чипсетах шина не гонится, icc залочен на <=100Mhz
на Z270, Z370 трудоемко добавить в bios то, чего там не было. в моем гигабайтовском bios есть некие закрытые подменюшки связанные с разгоном, т.е. если менюшки остались, возможно сам функционал не вырезан, можно даже выбирать профили icc. если в другом bios нету даже менюшек, то и функционала видимо тоже. в общем одна морока с bios когда есть универсальный Intel XTU
Junior
Статус: Не в сети Регистрация: 24.04.2019 Откуда: Estonia, Tallin
- по смещению 0x2C находится адрес описания СТРАНИЦ (0x00000060, первые 4 байта по этому адресу хранят количество страниц (0xD9), поэтому адрес первой (отсчет с нуля) страницы PAGES=0x0064)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения