Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 5 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 21.02.2018
Используемые инструменты
BIOS Aptio V by Gigabyte http://download.gigabyte.eu/FileList/BIOS/mb_bios_ga-h110m-hd2_f24.zip
AMIBCP 5.02 by American Megatrends Inc.
Uefitool by CodeRush https://github.com/LongSoft/UEFITool/releases
IRFExtractor by Donovan6000/CodeRush/vit9696/etc https://github.com/LongSoft/Universal-IFR-Extractor/releases

Подготовка файлов
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



Партнер
 

Member
Статус: Не в сети
Регистрация: 12.01.2005
Интересная тема, как думаете, можно ли будет открыть (доделать) функционал для разгона Skylake по шине (включая Xeon E3 V5) на платах, которые разгон не поддерживают (H110, B150, B250, Z270, Z370)?


 

Member
Статус: Не в сети
Регистрация: 21.02.2018
N1ghtwish писал(а):
Интересная тема, как думаете, можно ли будет открыть (доделать) функционал для разгона 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)

Как понять откуда берётся 0xD9 и PAGES=0x0064 ?


 

Junior
Статус: Не в сети
Регистрация: 24.04.2019
Откуда: Estonia, Tallin
Disassembly: Что дальше делать если хотим менять шину и напряжение на ядре?
...
8: 01 00 add DWORD PTR [rax],eax
a: 26 27 es (bad)
c: 00 00 add BYTE PTR [rax],al
e: 07 (bad)
f: 07 (bad)
10: 18 00 sbb BYTE PTR [rax],al
12: 01 00 add DWORD PTR [rax],eax
14: 00 00 add BYTE PTR [rax],al
16: 00 00 add BYTE PTR [rax],al
18: 39 00 cmp DWORD PTR [rax],eax
1a: 00 00 add BYTE PTR [rax],al
1c: 34 00 xor al,0x0
1e: 00 00 add BYTE PTR [rax],al
20: 20 72 00 and BYTE PTR [rdx+0x0],dh
23: 00 60 72 add BYTE PTR [rax+0x72],ah
26: 00 00 add BYTE PTR [rax],al
28: a0 72 00 00 e0 72 00 movabs al,ds:0x20000072e0000072
2f: 00 20
31: 73 00 jae 0x33
33: 00 60 73 add BYTE PTR [rax+0x73],ah
36: 00 00 add BYTE PTR [rax],al
38: a0 73 00 00 e0 73 00 movabs al,ds:0x20000073e0000073
3f: 00 20
41: 74 00 je 0x43
43: 00 60 74 add BYTE PTR [rax+0x74],ah
46: 00 00 add BYTE PTR [rax],al
48: a0 74 00 00 e0 74 00 movabs al,ds:0x20000074e0000074
4f: 00 20
51: 75 00 jne 0x53
53: 00 60 75 add BYTE PTR [rax+0x75],ah
56: 00 00 add BYTE PTR [rax],al
58: a8 75 test al,0x75
5a: 00 00 add BYTE PTR [rax],al
5c: f0 75 00 lock jne 0x5f
5f: 00 38 add BYTE PTR [rax],bh
61: 76 00 jbe 0x63
63: 00 98 76 00 00 f8 add BYTE PTR [rax-0x7ffff8a],bl
69: 76 00 jbe 0x6b
6b: 00 40 77 add BYTE PTR [rax+0x77],al
6e: 00 00 add BYTE PTR [rax],al
70: 88 77 00 mov BYTE PTR [rdi+0x0],dh
73: 00 d0 add al,dl
75: 77 00 ja 0x77
77: 00 18 add BYTE PTR [rax],bl
79: 78 00 js 0x7b
7b: 00 60 78 add BYTE PTR [rax+0x78],ah
7e: 00 00 add BYTE PTR [rax],al
80: a8 78 test al,0x78
82: 00 00 add BYTE PTR [rax],al
84: f0 78 00 lock js 0x87
87: 00 38 add BYTE PTR [rax],bh
89: 79 00 jns 0x8b
8b: 00 80 79 00 00 c8 add BYTE PTR [rax-0x37ffff87],al
91: 79 00 jns 0x93
93: 00 10 add BYTE PTR [rax],dl
95: 7a 00 jp 0x97
97: 00 58 7a add BYTE PTR [rax+0x7a],bl
9a: 00 00 add BYTE PTR [rax],al
9c: a0 7a 00 00 e8 7a 00 movabs al,ds:0x3000007ae800007a
a3: 00 30
a5: 7b 00 jnp 0xa7
a7: 00 78 7b add BYTE PTR [rax+0x7b],bh
aa: 00 00 add BYTE PTR [rax],al
ac: c0 7b 00 00 sar BYTE PTR [rbx+0x0],0x0
b0: 08 7c 00 00 or BYTE PTR [rax+rax*1+0x0],bh
b4: 50 push rax
b5: 7c 00 jl 0xb7
b7: 00 98 7c 00 00 e0 add BYTE PTR [rax-0x1fffff84],bl
bd: 7c 00 jl 0xbf
bf: 00 28 add BYTE PTR [rax],ch
c1: 7d 00 jge 0xc3
c3: 00 70 7d add BYTE PTR [rax+0x7d],dh
c6: 00 00 add BYTE PTR [rax],al
c8: b0 7d mov al,0x7d
ca: 00 00 add BYTE PTR [rax],al
cc: f8 clc
cd: 7d 00 jge 0xcf
cf: 00 40 7e add BYTE PTR [rax+0x7e],al
d2: 00 00 add BYTE PTR [rax],al
d4: 88 7e 00 mov BYTE PTR [rsi+0x0],bh
d7: 00 d0 add al,dl
d9: 7e 00 jle 0xdb
db: 00 18 add BYTE PTR [rax],bl
dd: 7f 00 jg 0xdf
df: 00 60 7f add BYTE PTR [rax+0x7f],ah
e2: 00 00 add BYTE PTR [rax],al
e4: a8 7f test al,0x7f
e6: 00 00 add BYTE PTR [rax],al
e8: e8 7f 00 00 30 call 0x3000016c
ed: 80 .byte 0x80


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 5 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  



Лаборатория














Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan