Редактор BIOS Inside ZIP: как использовать программу для настройки системы

Программа «Редактор BIOS Inside ZIP» позволяет пользователям модифицировать и обновлять BIOS на материнских платах. Она предлагает интуитивно понятный интерфейс, который упрощает процесс настройки параметров системы и добавления новых функций в BIOS.

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

Доступ к скрытым настройкам UEFI BIOS от Insyde

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

Сегодняшние процессоры от Intel и AMD имеют встроенную поддержку технологий аппаратной виртуализации [1]. У меня был ноутбук с чипсетом H77 и процессором Intel® Core™ i7-3820QM. Согласно данным производителя, мой процессор поддерживает технологии Intel® Virtualization Technology (VT-x) и Intel® Virtualization Technology for Directed I/O (VT-d). Первая из них присутствует почти на всех новых ноутбуках, тогда как вторая доступна только в высококлассных моделях. Тем не менее, это приносит множество выгод, таких как прямой проброс графического процессора в виртуальную среду, позволяя клиентской машине полностью использовать возможности 3D. Однако давайте не будем углубляться в детали технологий, которые выходят за рамки данного материала.

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

В расстроенных чувствах, я стал бродить по разным ресурсам в интернете и наткнулся на два очень интересных ресурса: mydigitallife [2] и bios-mods [3] .

Выяснилось, что большинство параметров BIOS недоступны для простых пользователей. Это связано с тем, что разработчики не хотят позволять людям вмешиваться в настройки инициализации оборудования, чтобы избежать появления множества обращений в сервисные центры от любопытных пользователей с «кирпичами» в руках.

Первоначальное знакомство с технологией повергло меня в некоторое замешательство. Куча незнакомых мне утилит, новые термины, непонятные трактовки… Я решил не мучиться и написал на обоих ресурсах, что готов заплатить тому, кто мне поможет открыть скрытые от меня меню. Для этого было необходимо покопаться в ассемблерном коде, убрать несколько проверок, прошить патченный биос и у вас полное меню вашего биоса.

Так я waited неделю, но никто не пожелал заработать или просто не смог.

Собравшись с мыслями, я решил самостоятельно разобраться в работе биоса и создать патч. Спустя две недели и с помощью русского сообщества IXBT [4], я разработал свой первый патч для биоса моего тестового ноутбука. Перекрещивая пальцы на руках и с замиранием сердца, я перепрошил свой ноутбук…

Вы помните, в далекие времена, когда мы обновляли свои системные блоки новыми биосами для материнских плат? На экране выводилась предупреждающая надпись: «Ни в коем случае не отключайте компьютер до завершения прошивки». Бывали случаи, когда по нелепой случайности в этот самый момент отключали электричество… В итоге мы получали большой неработающий ящик. Что происходило дальше — остается загадкой.

Мой ноутбук не запускается. Энергетические перебои с аккумулятором ему не страшны. Однако, я допустил какую-то ошибку. Я был вне себя от горя. К счастью, я обнаружил, что в BIOS есть функция восстановления, и с помощью простых сочетаний клавиш и заранее подготовленной флешки можно вернуть ноутбук к жизни.

Я пошел другим путем: пропатчил те места, которые ну ни как не могли повлиять на функционал биоса, а точнее заменил логотип. Снова прошил и снова получил кирпич. Размышляя и советуясь с опытными дельцами в этом деле мы пришли к выводу, что современные UEFI биосы имеют вторичную проверку на контрольную сумму образа прошивки. Первая проверка происходит когда вы пытаетесь прошить, а вторая когда биос запускается. Если в первом случае я также пропатчил прошивальщик, чтобы он не проверял контрольную сумму, то вторую проверку мне не преодолеть, так как она зашита в самом железе.

На текущий момент ситуация выглядит следующим образом: мы можем модифицировать EFI-биросы, однако с UEFI это невозможно. В моем случае как раз наблюдается второй вариант. Снова начинаются долгие поиски в сети, и я натыкаюсь на статью под названием Enable VT on InsydeH2O based Sony Vaio laptops, the EFI way [5]. Суть подхода заключается в следующем: вы загружаетесь в EFI-режим с использованием специального загрузчика, который предоставляет доступ к памяти VSS, где хранятся настройки вашего BIOS. Я протестировал этот метод на своем ноутбуке и убедился в его работоспособности, снова открыл замечательный дизассемблер IDA, скачал последние спецификации [6] и в полном вооружении начал исследовать свой BIOS.

Успешным итогом двухнедельных усилий стало получение модифицированного меню.

небольшая его часть

╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Main’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Size: ‘900’, Name: ‘SystemConfig’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Form Name: ‘Main’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ┌- Grayout IF: | Question [ ID: ‘0x08’ ] == 0x02 | Question [ ID: ‘0x07’ ] == 0x01 | AND expression └- END IF Grayout; Time: ‘System Time’ [ QuestionId: ‘0x01’, VarStore: ‘0xffff’, Help: ‘ selects field.’ ] Default value: ’00:00:00′, Type: 0x05 Date: ‘System Date’ [ QuestionId: ‘0x02’, VarStore: ‘0xffff’, Help: ‘ selects field.’ ] Default value: ‘2010/05/01’, Type: 0x06 ┌- Grayout IF: | EQ == TRUE | Text: ‘Notebook Model’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘Product Number’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘System Board ID’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘Born On Date’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘Processor Type’ Default: ‘[Not Detected]’ Help: ‘ ‘ | ┌- Suppress IF: | | Question [ ID: ‘0x06’ ] == 0x00 | | Text: ‘Processor Speed’ Default: ‘[Not Detected]’ Help: ‘ ‘ | └- END IF Suppress; | Text: ‘Total Memory’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘BIOS Version’ Default: ‘Fake Data’ Help: ‘ ‘ | Text: ‘BIOS Vendor’ Default: ‘Insyde’ Help: ‘ ‘ | Text: ‘Serial Number’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘UUID Number’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘Product configuration ID’ Default: ‘[Not Detected]’ Help: ‘ ‘ | Text: ‘System Board CT Number’ Default: ‘C AAAA RR SS WW XXX’ Help: ‘ ‘ | Text: ‘Factory installed OS’ Default: ‘[Not Detected]’ Help: ‘ ‘ | ┌- Suppress IF: | | Question [ ID: ‘0x05’ ] == 0x00 | | Text: ‘Primary Battery SN’ Default: ‘N/A’ Help: ‘ ‘ | └- END IF Suppress; | ┌- Suppress IF: | | Question [ ID: ‘0x04’ ] == 0x00 | | Text: ‘Secondary Battery SN’ Default: » Help: ‘ ‘ | └- END IF Suppress; | | | ┌- Suppress IF: | | EQ == TRUE | | | | | └- END IF Suppress; └- END IF Grayout; Reference: ‘System Log’ [ FormID: ‘0x0540’, QuestionId: ‘0x03’, VarStore: ‘0xffff’ ] ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Form Name: ‘System Log’ [ ID: ‘0x0540’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Subtitle: ‘System Log’ Action: ‘ ‘ [ QuestionId: ‘0xfffe’, VarStore: ‘0xffff’, Help: View the system diagnostic failure results. ] Text: ‘Result:’ Default: ‘Time:’ Help: ‘View the system diagnostic failure results.’ ┌- Grayout IF: | EQ == TRUE | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ | Text: ‘ ‘ Default: ‘- No Data -‘ Help: ‘View the system diagnostic failure results.’ └- END IF Grayout; Text: ‘ ‘ Default: ‘ ‘ Help: ‘View the system diagnostic failure results.’ ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Security’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Size: ‘900’, Name: ‘SystemConfig’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Form Name: ‘Security’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Password: Administrator Password [ VarStore: ‘0x9d’, Help: ‘Administrator Password controls access to the setup utility.’] Password: Power-On Password [ VarStore: ‘0xa1’, Help: ‘Power-On Password controls access to the system at boot.’] ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Main’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Size: ‘900’, Name: ‘SystemConfig’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Form Name: ‘Main’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ┌- Grayout IF: | VALUE = 1 | VALUE = 1 | EQUAL expression └- END IF Grayout; Text: ‘InsydeH2O Version’ Default: ‘Fake Data’ Help: ‘ ‘ ┌- Grayout IF: | VALUE = 1 | VALUE = 1 | EQUAL expression └- END IF Grayout; Text: ‘System Memory Speed’ Default: ‘[Not Detected]’ Help: ‘ ‘ ┌- Grayout IF: | VALUE = 1 | VALUE = 1 | EQUAL expression └- END IF Grayout; ┌- Grayout IF: | VALUE = 1 | VALUE = 1 | EQUAL expression └- END IF Grayout; Text: ‘Total Memory’ Default: ‘[Not Detected]’ Help: ‘ ‘ ┌- Grayout IF: | Question [ ID: ‘0x05’ ] == 0x02 | Question [ ID: ‘0x04’ ] == 0x01 | AND expression └- END IF Grayout; Time: ‘System Time’ [ QuestionId: ‘0x01’, VarStore: ‘0xffff’, Help: ‘This is the help for the hour, minute, second field. Valid range is from 0 to 23, 0 to 59, 0 to 59. INCREASE/REDUCE : +/-.’ ] Default value: ’00:00:00′, Type: 0x05 Date: ‘System Date’ [ QuestionId: ‘0x02’, VarStore: ‘0xffff’, Help: ‘This is the help for the month field, day field, year field. Valid range is from 1 to 12, 1 to 31, 2000 to 2099. (Error checking will be done against month/day/year combinations that are not supported.) INCREASE/REDUCE : +/-.’ ] Default value: ‘2011/05/01’, Type: 0x06 Action: ‘About this Software’ [ QuestionId: ‘0x1059’, VarStore: ‘0xffff’, Help: ] ┌- Suppress IF: | LIST [ ID: ‘0x04’ ] in (‘0x00′,’0x01’) | Select option: ‘Debug Reclaim’ [ VarStore: ‘0x1d7’, QuestionId: ‘0x03’, Help: ‘ ‘] | Option: ‘Enabled’ [ Value: ‘1’ Default: ‘false’ Type: ‘int8’ ] | Option: ‘Disabled’ [ Value: ‘0’ Default: ‘true’ Type: ‘int8’ ] └- END IF Suppress; ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ┌- Suppress IF: | EQ == TRUE | └- END IF Suppress; ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Advanced’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Size: ‘900’, Name: ‘SystemConfig’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Form Name: ‘Advanced’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Reference: ‘Boot Configuration’ [ FormID: ‘0x0021’, QuestionId: ‘0x01’, VarStore: ‘0xffff’ ] Reference: ‘Peripheral Configuration’ [ FormID: ‘0x0022’, QuestionId: ‘0x02’, VarStore: ‘0xffff’ ] Reference: ‘IDE Configuration’ [ FormID: ‘0x0023’, QuestionId: ‘0x03’, VarStore: ‘0xffff’ ] Reference: ‘Thermal Configuration’ [ FormID: ‘0x0024’, QuestionId: ‘0x04’, VarStore: ‘0xffff’ ] Reference: ‘Video Configuration’ [ FormID: ‘0x0025’, QuestionId: ‘0x05’, VarStore: ‘0xffff’ ] Reference: ‘USB Configuration’ [ FormID: ‘0x0026’, QuestionId: ‘0x06’, VarStore: ‘0xffff’ ] Reference: ‘Chipset Configuration’ [ FormID: ‘0x0027’, QuestionId: ‘0x07’, VarStore: ‘0xffff’ ] Reference: ‘ACPI Table/Features Control’ [ FormID: ‘0x0028’, QuestionId: ‘0x08’, VarStore: ‘0xffff’ ] Reference: ‘PCI Express Configuration’ [ FormID: ‘0x0030’, QuestionId: ‘0x09’, VarStore: ‘0xffff’ ] Reference: ‘Intel(R) Anti-Theft Technology Support’ [ FormID: ‘0x0038’, QuestionId: ‘0x0a’, VarStore: ‘0xffff’ ] Reference: ‘Extended ICC’ [ FormID: ‘0x1cc0’, QuestionId: ‘0x0b’, VarStore: ‘0xffff’ ] Reference: ‘DPTF Configuration’ [ FormID: ‘0x3610’, QuestionId: ‘0x0c’, VarStore: ‘0xffff’ ] Reference: ‘Intel(R) Smart Connect Technology Configuration’ [ FormID: ‘0x1e00’, QuestionId: ‘0x0d’, VarStore: ‘0xffff’ ]

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

Ну а теперь о том как это сделать вам.

Подготовка инструментария

1. Сначала необходимо загрузить PhoenixTool [7] с этого форума, где регулярно публикуется актуальная версия. Этот инструмент понадобится для разбора файла прошивки на его компоненты. 2. Вам потребуется perl. Если у вас есть система UNIX, то это не составит труда, в противном случае используйте ActivePerl [8] или Cygwin [9] на Windows. 3. Не забудьте про последнюю версию биоса от вашего производителя.

4. Вам понадобится любой архиватор.

Извлечение образа прошивки

1. Откройте архиватором exe файл вашей прошивки, найдите там файл с расширением bin или fd и распакуйте в удобное для вас место. Лучше в отдельную папку. 2. Запустите PhoenixTool и попробуйте открыть файл прошивки. 3. Если при попытке открыть вы видите такое окно то скорее всего ваш образ от производителя зашифрован. Decrypt метод пока не придумали, но это только дело времени.

Если ваша ситуация совпадает, переходите к следующему этапу; в противном случае пропустите этот шаг и перейдите к пункту 8. 4. Извлеките программу для прошивки в удобное для вас место на компьютере и начните обновление BIOS до последней версии. 5. Когда ваш ноутбук перезагрузится, снова откройте эту папку и найдите файл platform.ini. 6. Откройте его с помощью текстового редактора и внесите следующие изменения:

[BackupROM] Flag=1 FilePath=c: FileName=0183AF24.BIN

Это позволит вам прошить еще раз ваш биос, но при этом будет создана резервная копия текущего биоса.

7. После перезагрузки откройте полученную резервную копию с помощью PhoenixTool 8. Через пару секунд вы должны будете увидеть окошко похожее на это:

9. Теперь можете закрыть окошко. 10. В папке, где у вас лежал образ появится папка DUMP, а в ней множество файлов. Нас интересует, который начинается на FE3542FE и имеет самый большой размер: 11. Теперь скачиваем исходный код моего

анализатора

12. Сохраняете его себе на компьютер туда, где у вас лежит файл из пункта 10 и даете ему удобное для вас название, например uefidump.pl 13. Переходите в консольный режим и даете команду perl uefidump.pl FE3542FE-C1D3-4EF8-657C-8048606FF670_2_514.ROM > uefidump.log 14. По окончанию вы найдете дамп меню вашего биоса в файле uefidump.log.

Подготовка загрузочной дискеты

1. Вставляем флешку, размер значения не имеет. 2. Форматируем ее в файловую систему FAT32. 3. Создаем папку EFIBoot. 4. Загружаем файл BOOTX64.EFI [10]. 5. Перемещаем его в папку Boot. 6. Переходим в BIOS, активируем Legacy и отключаем Secure Boot. 7. Сохраняем настройки и загружаемся с флешки. 8. По завершении загрузки на экране появится желтый текст на черном фоне.

> Добро пожаловать в GRUB! > > Вход в режим восстановления. > ошибка: файл не найден > grub rescue >

9. К модификации настройки биоса все готово.

Изменение параметров

Изменения происходят с использованием полей VarStore и Value. Значение Value в логе представлено в десятичной системе, а при внесении изменений необходимо указывать шестнадцатеричное представление.

1. Предположим, вам нужно переключить режим работы диска с IDE на AHCI. Это может потребоваться кому-то для хакинтошей, а кто-то приобрел твердотельный накопитель, который не распознается ноутбуком. Мы ищем в лог-файле соответствующую информацию и находим следующие строки:

Select option: ‘HDC Configure As’ [ VarStore: ‘0x39’, QuestionId: ‘0x1a’, Help: ‘Set Harddisk Controller Configure Type’] Option: ‘IDE’ [ Value: ‘0’ Default: ‘true’ Type: ‘int8’ ] Option: ‘AHCI’ [ Value: ‘1’ Default: ‘false’ Type: ‘int8’ ] Option: ‘RAID’ [ Value: ‘2’ Default: ‘false’ Type: ‘int8’ ]

Для того чтобы вам изменить настройку, необходимо сперва дать команду setup_var 0x39 . Результатом данной команды будет текущее значение данной переменной. Чтобы ее изменить и поставить в AHCI, надо дать команду setup_var 0x39 0x1 . Учтите, что если у вас стоит Windows, то потребуется его переустановка, так как однажны настроенный Windows на IDE не сможет понять, что теперь ему надо работать с AHCI.

2. К примеру, вам нужно отключить дискретный видеопроцессор. За данный параметр отвечают следующие строки:

Выберите опцию: ‘Специальные функции’ [ VarStore: ‘0x1e6’, QuestionId: ‘0x92’, Help: ‘Включить функцию переключения графики’] Опция: ‘Отключено’ [ Значение: ‘0’ По умолчанию: ‘false’ Тип: ‘int8’ ] Опция: ‘Включено’ [ Значение: ‘1’ По умолчанию: ‘true’ Тип: ‘int8’ ]

Команда setup_var 0x1e6 0x0 отключит дискретный и будет работать только встроенный.

3. Мы хотим, чтобы Numlock не активировался

Выберите опцию: ‘Numlock’ [ VarStore: ‘0x08’, QuestionId: ‘0x10’, Help: ‘Выбор состояния Numlock при включении’] Опция: ‘Выключено’ [ Value: ‘0’ Default: ‘false’ Type: ‘int8’ ] Опция: ‘Включено’ [ Value: ‘1’ Default: ‘true’ Type: ‘int8’ ]

Команда setup_var 0x08 0x0 деактивирует его во время загрузки.

Заключение

Данное руководство составлено как оно есть и так как я делаю это на практике. Я не несу ответственности за испорченные материнские платы или утерянную информацию. Все что мы можете сделать — вы делаете на свой страх и риск.

Если возникли проблемы, первым шагом может стать извлечение батарейки BIOS для очистки VSS памяти. Если это не дает результата, вам следует найти способ восстановления вашего BIOS. Для устройств HP можно ознакомиться с инструкцией здесь [11]. Что касается других производителей, информация также доступна там, но я не проводил поиск.

Моя тема, где я нет нет помогаю страждущим находится здесь [12] . Благодарности от пользователей в доказательство тому, что это все работает.

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

Также, настоятельно рекомендую перед тем, как приступить к оверклокингу и настройке BIOS, убедиться, что для вашего ноутбука предусмотрен способ восстановления BIOS на случай сбоя. Пока таких ситуаций не возникало, но лучше быть готовым.

Сайт-источник PVSM.RU: https://www.pvsm.ru

Ссылка на источник: https://www.pvsm.ru/noutbuk/36155

Ссылки в тексте:

[1] виртуализации на аппаратном уровне: https://ru.wikipedia.org/wiki/VT-d

[2] mydigitallife: http://forums.mydigitallife.info/forums/25-BIOS-Mods

[3] bios-mods: http://www.bios-mods.com/forum/

[4] IXBT: http://forum.ixbt.com/

[5] Enable VT on InsydeH2O based Sony Vaio laptops, the EFI way: http://feature-enable.blogspot.com/2009/07/enable-vt-on-insydeh2o-based-sony-vaio.html

[6] технические характеристики: http://www.uefi.org

[7] PhoenixTool: http://forums.mydigitallife.info/threads/13194-Инструмент-для-вставки-замены-SLIC-в-Phoenix-Insyde-Dell-EFI-BIOS

[8] ActivePerl: http://www.activestate.com/activeperl

[9] Cygwin: http://www.cygwin.com

[10] BOOTX64.EFI: http://www.mediafire.com/download.php?81vegw2aw0pxcib

[11] доступно по адресу: http://forum.ixbt.com/topic.cgi?id=17:38124:920#920

[12] найти можно по ссылке: http://www.bios-mods.com/forum/Thread-HOWTO-access-you-BIOS-settings-through-EFI-shell

[13] Источник: http://habrahabr.ru/post/182676/

Кликните здесь для печати.

Модификация Inside BIOS

Привет! Работая в сервисных центрах возникают моменты, когда нет доступных деталей или цена на их покупку чрезмерно высока. Если это касается замены микросхемы графического процессора (видео чипа), тут возможен вариант с установкой альтернативы. BIOS ноутбука может содержать поддержку этой микросхемы, а может и нет.

Если отсутствует поддержка и имеется электрическая совместимость устанавливаемой микросхемы, существует возможность модификации для добавления необходимой поддержки. Естественно, этот процесс требует тщательного подхода, и здесь важно проявлять изобретательность в зависимости от конкретного ноутбука. Первая попытка может не увенчаться успехом в сочетании определенного BIOS с конкретной микросхемой. Также следует быть готовым к тому, что может понадобиться поиск оригинальной микросхемы.

Теоретическая часть

Электрическая совместимость устанавливаемой микросхемы включает в себя:

  • аналогичный тип корпуса, последовательность и размещение контактов;
  • совпадение рабочего напряжения;
  • ширину шины памяти (разрядность), если такая имеется;
  • наличие всех необходимых распаянных элементов на плате для функционирования устанавливаемой микросхемы;
  • совпадение производительности отведения тепла системой охлаждения ноутбука с TDP (Thermal Design Power) применяемого чипа.

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

Основные производители ноутбуков, такие как Compal, Quanta, Asus, Samsung, Clevo и Foxconn, а также их заказчики-ODM (оригинальные производители дизайна), включая HP, Dell, Lenovo, Acer и других, берут за основу BIOS, используют готовые исходные коды и адаптируют их с учетом уникальных характеристик каждого устройства, обеспечивая совместимость с оборудованием и внедряя необходимые функции.

Наиболее популярные производители исходного кода микропрограмм BIOS:

  • Phoenix Technologies;
  • Insyde Software;
  • American Megatrends;
  • устаревшая Award Software, теперь являющаяся частью Phoenix Technologies;

Определив производителя исходного кода BIOS, подбираются необходимые инструменты и методы. При модификации Inside для обеспечения совместимости с новой микросхемой, я использую следующий набор программ:

  • Phoenix Tool (Для разбиения на отдельные модули);
  • UEFI tool (Для нахождения модуля Platform);
  • HxD (Hex-редактор);
  • Total Commander (файловый менеджер с расширенными возможностями поиска файлов по Hex значениям);

Данный набор программ предназначен для модификации идентификатора аппаратного обеспечения, известного как аппаратный ID. В прошивке ноутбука он используется для определения устройств и представляет собой комбинацию цифр, характеризующую тип устройства для активизации соответствующего модуля в BIOS. К примеру, чип 216-0752001 имеет аппаратный ID 1002 9712, тогда как чип 216-0674026 — 1002 9612. При изменении хотя бы одной цифры в идентификаторе меняется информация о встроенном графическом ядре, его поколении, модели и так далее. Соответственно, для установки одной микросхемы взамен другой, использующей разные идентификаторы, необходимо наличие соответствующего модуля в BIOS.

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

Аппаратный идентификатор может быть представлен в двух форматах последовательности байтов: big-endian и little-endian. Далее мы вкратце обсудим, что собой представляют эти форматы.

Big-endian — порядок записи байтов от большого к меньшему. Этот порядок байтов более привычен для нашего чтения и применяется для высокоуровневого использования, например в Windows или протоколе TCP/IP. В случае ID микросхемы 216-0752001 будет выглядеть как 1002 9712.

Младший порядок байтов (little-endian) представляет собой последовательность от меньшего к большему. Хотя это может показаться непривычным для человека, данный порядок используется в оперативной памяти компьютеров с архитектурой x86, таких как Intel и AMD. Например, идентификатор микросхемы 216-0752001 будет записан как 0210 1297.

При работе с модулями BIOS, которые применяют низкоуровневую байтовую структуру для систем x86, необходимо искать и редактировать модули, принимая во внимание именно этот порядок — little-endian. То есть в формате 0210 1297.

На этом закончу теоретическую часть, в ней мы разобрались с аппаратными идентификаторами и производителями микропрограмм. Поняли что будем менять, с помощью чего и где.

Модификация BIOS на практике

Приступим к сути! В качестве нашего эксперимента будет использоваться Toshiba L300D, работающая на платформе Inventek 6050A2175001-MB-A02_PHOENIX-SACRAMENTO 10A PLUS (PS10AP). Этот ноутбук преданно служил своему владельцу с 2009 года, но ничего не постоянно. После очередного отключения он больше не смог включиться. В процессе диагностики была обнаружена проблема с северным мостом 216-0674024. Поскольку аналогичный компонент не удалось найти, было решено установить новый, более доступный вариант 215-0674028.

Естественно прямая замена 216-0674024 (0x9613) на 215-0674028 (0x9610), здесь недоступна, ввиду использования встроенного в северный мост видео ядра. Имеющего другой аппаратный идентификатор. И в данном случае необходима модификация BIOS, с целью замены одного идентификатора, другим. Там, где эти идентификаторы упоминаются.

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

Полная замена модуля необходима в случаях, когда устанавливаемая микросхема существенно отличается от той, что уже была установлена. То есть речь идет о аппаратно разных ядрах (не путать с маркетинговыми обозначениями типа Radeon HD3200). Или о невозможности новой микросхемы функционировать в условиях, описанных в модуле, например, при высокой тактовой частоте.

На конкретном примере, замена модуля не требуется. Режимы описываемые модулем идентичны номинальным режимам работы чипа. Даже маркетинговое название одно и тоже HD3200.

Сначала нужно извлечь BIOS. Существует несколько приложений для этой задачи, но я хочу остановиться на одном из самых удобных, на мой взгляд — Phoenix Tool. В моем случае используется версия 2.66. Запускаем приложение и загружаем файл прошивки.

После распаковки BIOS на модули, в папке где у нас была оригинальная прошивка появится дополнительная папка DUMP. В ней содержатся все модули, с этой папкой мы и будем работать. А пока, ничего не трогая в этой папке, настраиваем программу на замену модулей.

В выпадающем меню Manufacturer выбираем пункт Other. Мы ведь применяем программу не для инсталляции SLIC. После этого нажимаем на кнопку Advanced, и на экране появится уведомление о возможных рисках, соглашаемся, нажимая Да. Затем появится окно с параметрами настройки программы.

Выставляем два флажка: Разрешить пользователю изменять другие модули и Без SLIC, затем нажимаем кнопку Готово.

В основном окне, жмем Go, дожидаемся появления сообщения You can now make manual alterations to any module in the DUMP directory, но не нажимаем OK. Оставляем программу Phoenix Tool в таком состоянии, так как OK надо нажимать только после замены модулей исправленными (с внесенными изменениями). А мы их пока не изменяли.

Чтобы внести изменения в необходимые модули, в каталоге DUMP ищем модули, содержащие Hex код 0210 1396. Наиболее удобно это сделать с помощью Total Commander: переходим в папку DUMP, затем выбираем меню Команды и пункт Поиск файлов. В открывшемся окне активируем опцию С текстом и HEX-код. В текстовом поле вводим значение, которое хотите найти среди всех модулей, в нашем случае это 0210 1396. После этого нажимаем кнопку Начать поиск, и программа начнет искать указанный HEX-код в файлах модулей.

В поле Результаты поиска выйдет список файлов, в которых найдены соответствия. Из указанного списка, редактированию подлежат файлы с расширением .ROM, таких у нас получилось три, но их может быть и больше. Копируем в отдельную папку для удобства, например в папку MOD, созданную рядом с папкой DUMP. Программу Total Commander можно закрыть, она больше не пригодится.

Теперь у нас есть директория с тремя файлами модулей, содержащими ссылку на указанный аппаратный идентификатор. Чтобы отредактировать их, мы воспользуемся программой HxD Editor. Открываем все три модуля с помощью этого приложения, находим те значения, которые требуется заменить. Для этого кликаем на Поиск, затем выбираем Найти. В появившемся окне в поле Искать вводим значение 0210 1396, а в выпадающем списке Тип данных выбираем Шестнадцатеричные значения и нажимаем OK.

Следует заменить все выявленные совпадения на 0210 1096 (что соответствует чипу 215-0674028), то есть заменяем 3 на 0. Аналогичные действия необходимо выполнить со всеми файлами. Обратите внимание! В модулях может встречаться одно и то же совпадение многократно, все их нужно исправить. В случае с модулем размером 59 КБ (VideoBios) также требуется скорректировать контрольную сумму на ту, что была до внесения изменений. Для этого я обычно изменяю текстовые параметры, например, дату или версию Video BIOS. Все изменения сохраняем, а отредактированные модули копируем на замену из папки MOD в папку DUMP.

И в давно запущенном Phoenix Tool и его сообщении You can now make manual alterations to any module in the DUMP directory, нажимаем OK. Начнется процесс обратной сборки BIOS с использованием измененных модулей. По окончании сборки программа выдаст сообщение SLIC performed successfully. Bios file is с адресом и названием готового файла прошивки.

Пытаемся выполнить прошивку устройства и наблюдаем за результатами. Если ноутбук начал функционировать и показал изображение, поздравляю с удачной настройкой!

Но в моем случае, ноутбук не прошел инициализацию . Почему? Потому что, в некоторых аппаратах на основе Inside BIOS, необходимо найти так называемый модуль Platform или PCI Platform. И в нем поправить ID, но он там указан в более кратком виде.

Для этого загружаем уже подготовленную прошивку в программу UEFITool и находим модуль, который содержит описание Platform или PCI Platform.

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

Не закрывая программы, открываем созданный файл Edit Platform в программе HxD. Ищем уже более короткое указание аппаратного ID, в моем случае 1396. У меня было найдено 2 совпадения и я их заменил на значение 1096 что соответствует микросхеме 215-0674028. Сохраняем изменения и закрываем программу.

Возвращаемся в приложение, кликаем правой кнопкой мыши на модуле Platform и выбираем опцию Заменить тело. Указываем путь к файлу, который редактировали в HxD, и нажимаем Открыть.

Результатом действий должно получиться что-то типа такого, смотрите на иллюстрации ниже.

Записываем результат выполнения замены модуля, выбрав в меню File опцию Save image file. Указываем название и местоположение для сохраненной прошивки. Жмем на кнопку Сохранить. Программа сохранит итог своей работы и предложит сразу открыть файл, показав сообщение Open reconstructed file. Нажимаем Yes.

После этого закрываем программу.

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

Заключение

Получилась достаточно объемная статья. В ней рассмотрено большое количество действий, и, что интересно, это не является гарантией успешного результата. Также можно упомянуть различные альтернативы замены модулей и так далее. В общем, алгоритм модификации становится ясным. Далее остаются лишь эксперименты. Если у вас есть дополнения или вы заметили ошибки и неточности в статье, пожалуйста, сообщите об этом.

Указывайте, исправлю! Удачных модификаций!

Доступ к скрытым настройкам UEFI BIOS от Insyde

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

Все современные процессоры от Intel и AMD обладают поддержкой технологии аппаратной виртуализации. У меня был в наличии ноутбук с чипсетом H77 и процессором Intel Core i7-3820QM. Согласно спецификациям производителя, мой процессор включал в себя поддержку технологий Intel Virtualization Technology (VT-x) и Intel Virtualization Technology for Directed I/O (VT-d).

Если первая имеется почти на всех новых ноутбуках, то вторая технология встречается только на топовых моделях. Но она дает много преимуществ, как например прямой проброс GDU в виртуальную среду, соответственно клиентская машина получает полную поддержку 3D. Но давайте не будем углубляться в технологии, отличные от тематики данной статьи.

В настройках моего BIOS имелась опция активации VT-x, однако функции для управления VT-d изначально не было. Разочарованный, я начал искать информацию на различных сайтах в интернете и обнаружил два крайне познавательных ресурса: mydigitallife и bios-mods.

Оказалось, что большая часть настроек биоса скрыта от обычного пользователя. Причина понятно — не давать пользователям ковыряться в настройках инициализации железа, дабы не создавать очереди у сервисных центров из армии любопытных «бородатых» субъектов с «кирпичами» в руках.

Первоначальное знакомство с данной технологией вызвало у меня небольшое замешательство. Множество незнакомых утилит, новые термины и непонятные интерпретации… Я решил не усложнять себе задачу и обратился на оба ресурса с предложением заплатить тому, кто сможет помочь мне получить доступ к скрытым меню. Для этого нужно было углубиться в ассемблерный код, убрать несколько проверок, установить патченный BIOS, и перед вами откроется полное меню вашего BIOS.

Я ждал целую неделю, но никто не проявил желания помочь… либо просто не смог.

Взяв себя в руки, я решил сам разобраться как этот биос работает и сделать патч самому. Спустя две недели и с помощью русского сообщества IXBT я написал свой первый патч к биосу моего тестового ноутбука. Скрестив пальцы на руках и с замиранием сердца я прошил свой ноутбук…

Помните те далекие времена, когда мы обновляли BIOS на материнских платах, прошивая их? На экране часто появлялось предупреждение о том, что нельзя выключать компьютер, пока процесс не завершится. И были моменты, когда в самый неподходящий момент отключалось электричество… В результате мы получали непригодный для использования системный блок. Что происходило потом — неизвестно.

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

Я выбрал другой подход: модифицировал те участки, которые никак не могли повлиять на работу биоса, а именно заменил логотип. Снова перепрошил и вновь получил кирпич. Обсуждая ситуацию и консультируясь с опытными специалистами в этой области, мы пришли к выводу, что современные UEFI биосы обладают вторичной проверкой контрольной суммы прошивки. Первая проверка происходит во время процесса прошивки, а вторая — при запуске биоса. Я модифицировал прошивальщик так, чтобы он игнорировал первую проверку контрольной суммы, но преодолеть вторую проверку не удалось, так как она встроена в саму аппаратную часть.

В настоящее время ситуация такова: у нас есть возможность патчить EFI биосы, однако UEFI не подлежит модификации. Это относится и к моему случаю. В очередной раз я начинаю поиски в интернете и натыкаюсь на статью о том, как активировать VT на ноутбуках Sony Vaio с InsydeH2O, используя метод EFI. Суть метода заключается в следующем: необходимо загрузиться в режим EFI с помощью специального загрузчика, что предоставляет доступ к VSS памяти, где находятся настройки вашего биоса. Я проверил, что данная процедура работает на моем ноутбуке, снова открыл замечательный дизассемблер IDA, скачал самые свежие спецификации и с полным набором инструментов приступил к разборке своего биоса.

Успешным результатом двухнедельной работы стало выпотрошенное меню

небольшая его часть

╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Главный’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Размер: ‘900’, Имя: ‘СистемнаяКонфигурация’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Имя Формы: ‘Главный’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ┌- Граунд ИФ: Вопрос [ ID: ‘0x08’ ] == 0x02 Вопрос [ ID: ‘0x07’ ] == 0x01 И выражение └- КОНЕЦ ИФ Граунд; Время: ‘Системное Время’ [ QuestionId: ‘0x01’, VarStore: ‘0xffff’, Помощь: ‘ выбирает поле.’ ] Значение по умолчанию: ’00:00:00′, Тип: 0x05 Дата: ‘Системная Дата’ [ QuestionId: ‘0x02’, VarStore: ‘0xffff’, Помощь: ‘ выбирает поле.’ ] Значение по умолчанию: ‘2010/05/01’, Тип: 0x06 ┌- Граунд ИФ: РАВНО == ИСТИНА Текст: ‘Модель Нотбука’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘Номер Продукта’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘ID Материнской Платы’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘Дата производства’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘Тип Процессора’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ ┌- Подавить ИФ: Вопрос [ ID: ‘0x06’ ] == 0x00 Текст: ‘Скорость Процессора’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ └- КОНЕЦ ИФ Подавить; Текст: ‘Общая Память’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘Версия BIOS’ Значение по умолчанию: ‘Фейковые Данные’ Помощь: ‘ ‘ Текст: ‘Производитель BIOS’ Значение по умолчанию: ‘Insyde’ Помощь: ‘ ‘ Текст: ‘Серийный Номер’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘UUID Номер’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘ID Конфигурации Продукта’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ Текст: ‘CT Номер Материнской Платы’ Значение по умолчанию: ‘C AAAA RR SS WW XXX’ Помощь: ‘ ‘ Текст: ‘Установленная ОС на заводе’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ ┌- Подавить ИФ: Вопрос [ ID: ‘0x05’ ] == 0x00 Текст: ‘Серийный Номер Основного Аккумулятора’ Значение по умолчанию: ‘N/A’ Помощь: ‘ ‘ └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: Вопрос [ ID: ‘0x04’ ] == 0x00 Текст: ‘Серийный Номер Вторичного Аккумулятора’ Значение по умолчанию: » Помощь: ‘ ‘ └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; └- КОНЕЦ ИФ Граунд; Ссылка: ‘Системный Журнал’ [ FormID: ‘0x0540’, QuestionId: ‘0x03’, VarStore: ‘0xffff’ ] ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Имя Формы: ‘Системный Журнал’ [ ID: ‘0x0540’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Подзаголовок: ‘Системный Журнал’ Действие: ‘ ‘ [ QuestionId: ‘0xfffe’, VarStore: ‘0xffff’, Помощь: Просмотр результатов системной диагностики. ] Текст: ‘Результат:’ Значение по умолчанию: ‘Время:’ Помощь: ‘Просмотр результатов системной диагностики.’ ┌- Граунд ИФ: РАВНО == ИСТИНА Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ Текст: ‘ ‘ Значение по умолчанию: ‘- Нет Данных -‘ Помощь: ‘Просмотр результатов системной диагностики.’ └- КОНЕЦ ИФ Граунд; Текст: ‘ ‘ Значение по умолчанию: ‘ ‘ Помощь: ‘Просмотр результатов системной диагностики.’ ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Безопасность’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Размер: ‘900’, Имя: ‘СистемнаяКонфигурация’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Имя Формы: ‘Безопасность’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Пароль: Пароль Администратора [ VarStore: ‘0x9d’, Помощь: ‘Пароль администратора контролирует доступ к утилите настройки.’] Пароль: Пароль Включения [ VarStore: ‘0xa1’, Помощь: ‘Пароль включения контролирует доступ к системе при загрузке.’] ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Главный’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Размер: ‘900’, Имя: ‘СистемнаяКонфигурация’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Имя Формы: ‘Главный’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ ┌- Граунд ИФ: ЗНАЧЕНИЕ = 1 ЗНАЧЕНИЕ = 1 РАВНАЯ выражение └- КОНЕЦ ИФ Граунд; Текст: ‘InsydeH2O Версия’ Значение по умолчанию: ‘Фейковые Данные’ Помощь: ‘ ‘ ┌- Граунд ИФ: ЗНАЧЕНИЕ = 1 ЗНАЧЕНИЕ = 1 РАВНАЯ выражение └- КОНЕЦ ИФ Граунд; Текст: ‘Скорость Памяти Системы’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ ┌- Граунд ИФ: ЗНАЧЕНИЕ = 1 ЗНАЧЕНИЕ = 1 РАВНАЯ выражение └- КОНЕЦ ИФ Граунд; ┌- Граунд ИФ: ЗНАЧЕНИЕ = 1 ЗНАЧЕНИЕ = 1 РАВНАЯ выражение └- КОНЕЦ ИФ Граунд; Текст: ‘Общая Память’ Значение по умолчанию: ‘[Не обнаружено]’ Помощь: ‘ ‘ ┌- Граунд ИФ: Вопрос [ ID: ‘0x05’ ] == 0x02 Вопрос [ ID: ‘0x04’ ] == 0x01 И выражение └- КОНЕЦ ИФ Граунд; Время: ‘Системное Время’ [ QuestionId: ‘0x01’, VarStore: ‘0xffff’, Помощь: ‘Это помощь для часа, минуты, секунды. Действительный диапазон от 0 до 23, 0 до 59, 0 до 59. УВЕЛИЧИТЬ/УМЕНЬШАТЬ : +/-.’ ] Значение по умолчанию: ’00:00:00′, Тип: 0x05 Дата: ‘Системная Дата’ [ QuestionId: ‘0x02’, VarStore: ‘0xffff’, Помощь: ‘Это помощь для поля месяца, дня, года. Действительный диапазон от 1 до 12, 1 до 31, 2000 до 2099. (Проверка ошибок будет выполняться по месяцам/дням/годам, которые не поддерживаются.) УВЕЛИЧИТЬ/УМЕНЬШАТЬ : +/-.’ ] Значение по умолчанию: ‘2011/05/01’, Тип: 0x06 Действие: ‘О программе’ [ QuestionId: ‘0x1059’, VarStore: ‘0xffff’, Помощь: ] ┌- Подавить ИФ: СПИСОК [ ID: ‘0x04’ ] в (‘0x00′,’0x01’) Выберите вариант: ‘Отладка Восстановления’ [ VarStore: ‘0x1d7’, QuestionId: ‘0x03’, Помощь: ‘ ‘] Вариант: ‘Включено’ [ Значение: ‘1’ Значение по умолчанию: ‘ложь’ Тип: ‘int8’ ] Вариант: ‘Отключено’ [ Значение: ‘0’ Значение по умолчанию: ‘истина’ Тип: ‘int8’ ] └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ┌- Подавить ИФ: РАВНО == ИСТИНА └- КОНЕЦ ИФ Подавить; ╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ ║ FormSet: ‘Расширенные’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╟────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ ║ VarStore Id: ‘0x1234’, Размер: ‘900’, Имя: ‘СистемнаяКонфигурация’ GUID: a04a27f4-df00-4d42-b552-39511302113d ║ ╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Имя Формы: ‘Расширенные’ [ ID: ‘0x0001’ ]│ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ Ссылка: ‘Конфигурация Загрузки’ [ FormID: ‘0x0021’, QuestionId: ‘0x01’, VarStore: ‘0xffff’ ] Ссылка: ‘Конфигурация Периферийных Устройств’ [ FormID: ‘0x0022’, QuestionId: ‘0x02’, Var

Я успешно загрузился в загрузчик с доступом к VSS памяти, прописал нужные мне переменные и включил или выключил чего мне не хватало или мешало в моей работе.

Теперь давайте рассмотрим, как вам это осуществить.

Подготовка оборудования

1. Скачайте PhoenixTool с данного форума, который регулярно обновляет последнюю версию. Этот инструмент поможет вам разобрать файл прошивки на отдельные части. 2. Вам потребуется perl. Если вы используете систему UNIX, то у вас не возникнет проблем, в противном случае выберите ActivePerl или Cygwin для Windows. 3. Не забудьте загрузить последнюю версию биоса от вашего производителя.

4. Любой архиватор.

Получение образа прошивки

1. Используйте архиватор для открытия exe файла вашей прошивки, найдите файл с расширением bin или fd и извлеките его в удобное место. Рекомендуется создать для этого отдельную папку. 2. Запустите PhoenixTool и попытайтесь загрузить файл прошивки. 3. Если при открытии появится данное окно, это может означать, что образ, предоставленный производителем, защищен. Времени не хватит для создания метода расшифровки, но это лишь вопрос времени.

Если это ваш случай, то переходите к следующему шагу, если нет, то пропускаем и переходим к пункту 8. 4. Распакуйте программу прошивания в удобную для вас папку и запустите обновление вашего биос до последней версии. 5. После того как ваш ноутбук перезагрузится, снова зайдите в эту папку и найдите там файл platform.ini 6. Откройте текстовым редактором и сделайте слеующие изменения:

[РезервнаяКопия] Флаг=1 ПутьКФайлу=c: ИмяФайла=0183AF24.BIN

Это позволит вам прошить еще раз ваш биос, но при этом будет создана резервная копия текущего биоса. 7. После перезагрузки откройте полученную резервную копию с помощью PhoenixTool 8. Через пару секунд вы должны будете увидеть окошко похожее на это: 9. Теперь можете закрыть окошко. 10.

В папке, где у вас лежал образ появится папка DUMP, а в ней множество файлов. Нас интересует, который начинается на FE3542FE и имеет самый большой размер: 11. Теперь скачиваем исходный код моего

парсера

12. Сохраните файл на вашем компьютере в ту же папку, где находится файл из пункта 10, и присвойте ему удобное название, например uefidump.pl. 13. Затем откройте консольный режим и введите команду perl uefidump.pl FE3542FE-C1D3-4EF8-657C-8048606FF670_2_514.ROM > uefidump.log. 14. После завершения процесса вы сможете найти дамп меню вашего BIOS в файле uefidump.log.

Создание загрузочной дискеты

1. Берем флешку, размер не важен. 2. Форматируем ее в FAT32 3. Создаем структуру каталогов EFIBoot 4. Скачиваем BOOTX64.EFI 5. Кладем в папку Boot 6. Перегружаемся в BIOS, включаем Legacy и отключаем Secure Boot. 7. Сохраняемся и загружаемся через флешку. 8. После загрузки вы должны увидеть желтый текст на черном экране

> Добро пожаловать в GRUB! > > Вход в режим восстановления. > ошибка: файл не найден > grub rescue >

9. Настройки BIOS готовы к изменению.

Настройка параметров

Для внесения изменений используются поля VarStore и Value. Значение Value в журнале представлено в десятичном формате, при модификации нужно указывать его в шестнадцатеричном виде.

1. Допустим вам надо изменить режим работы диска с IDE на AHCI. Кому-то это надо для хакинтошей, а кто-то купил себе твердотельный жесткий диск, а ноутбук его не видит. Ищем в лог файле что что касается сабжа и находим следующие строки:

Select option: ‘HDC Configure As’ [ VarStore: ‘0x39’, QuestionId: ‘0x1a’, Help: ‘Установите тип конфигурации контроллера жесткого диска’] Option: ‘IDE’ [ Value: ‘0’ Default: ‘true’ Type: ‘int8’ ] Option: ‘AHCI’ [ Value: ‘1’ Default: ‘false’ Type: ‘int8’ ] Option: ‘RAID’ [ Value: ‘2’ Default: ‘false’ Type: ‘int8’ ]

Для того чтобы изменить настройку, вам нужно сначала ввести команду setup_var 0x39. Исполнение этой команды покажет текущее значение переменной. Чтобы переключить её на AHCI, выполните команду setup_var 0x39 0x1. Обратите внимание, что если у вас установлена Windows, то потребуется её переустановка, так как Windows, настроенный на IDE, не сможет функционировать с AHCI. В качестве альтернативы вы можете загрузиться в безопасном режиме и отредактировать реестр, что позволит избежать переустановки.

2. Например вам надо запретить дискретный видеоадаптер. За этот пункт отвечает следующие строки:

Выберите опцию: ‘Особые функции’ [ VarStore: ‘0x1e6’, QuestionId: ‘0x92’, Help: ‘Включить функцию переключения графики’] Опция: ‘Отключено’ [ Значение: ‘0’ По умолчанию: ‘false’ Тип: ‘int8’ ] Опция: ‘Включено’ [ Значение: ‘1’ По умолчанию: ‘true’ Тип: ‘int8’ ]

Команда setup_var 0x1e6 0x0 отключит дискретный графический процессор и будет использовать только встроенный.

3. Мы хотим, чтобы Numlock оставался выключенным

Выберите опцию: ‘Numlock’ [ VarStore: ‘0x08’, QuestionId: ‘0x10’, Help: ‘Выбор состояния Numlock при включении’] Опция: ‘Выключено’ [ Значение: ‘0’ По умолчанию: ‘false’ Тип: ‘int8’ ] Опция: ‘Включено’ [ Значение: ‘1’ По умолчанию: ‘true’ Тип: ‘int8’ ]

Команда setup_var 0x08 0x0 отключит его при загрузке.

Эпилог

Этот материал подготовлен в том виде, в котором я его использую на практике. Я не несу ответственности за поврежденные материнские платы или потерянные данные. Все действия, которые вы предпринимаете, происходят на ваш собственный риск.

Если что-то пошло не так, то первым спасательным кругом может быть извлечение батарейки биоса для стирания VSS памяти. Если не помогает, то вам нужно искать способ recovery для вашего биоса. В случае HP инструкцию можно посмотреть здесь. Для других вендоров там же, но я не искал.

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

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

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

Обновление 01.02.2021: Поскольку поступает множество запросов на тему извлечения, добрые сограждане разработали парсер на github.com/donovan6000/Universal-IFR-Extractor. Вам нужно распаковать BIOS, найти файл с меню и передать его программе.

  • Ассемблер
  • Реверс-инжиниринг
Оцените статью
LeeReload
Добавить комментарий