Альтернативный способ модификации AMI BIOS для поддержки процессоров в конструктиве LGA771. Модифицируем BIOS Разблокировка биос

11.02.2024 Windows Server

Здесь предоставлен перевод и небольшие дополнения статьи:

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

Да, кстати, видеокарты с модифицированным биосом гарантии не подлежат. Делайте все на свой страх и риск.

Что нам нужно для модифицирования биоса видеокарты:

  1. для сохранения биоса и заливки нового в карту
  2. GPU-Z чтобы получить детальную информацию о видеокарте, типе памяти и тд
  3. Anoraks ATOMBIOSReader для получения детальной информации из биоса видеокарты
  4. Anoraks VBIOS CRC checker для подсчета корректной чексуммы для модифицированного биоса
  5. , собственно говоря, редактор в котором мы будем шаманить

У меня в подопытных будет видеокарта SAPPHIRE NITRO RADEON RX 480 4G с партномером 299-2E347-400SA, с частотами 1266 МГц по чипу и 1750 МГц по памяти. Память Elpida:

1. Запускаем ATIWinFlash, сохраняем биос в надежное место. Создаем копию на всякий пожаный.

Даже самый последний PolarisBIOSEditor не понимает эту память, что, собственно, и заставило меня начать колдовать:

2. Теперь для модификации расковыриваем биос и раскладываем по полочкам нужные значения. Для всех биосов существует мастер список таблиц с командами и значениями. Чтобы получить эту таблицу используем Anoraks-ATOMBIOSReader, открываем сохраненный биос:

И получаем в папке с биосом тесктовый файл с нужными нам значениями:

3. Далее юзаем HEX Workshop. Запускаем, открываем сохраненный биос, получаем такой вот беспредел (не очкуйте, щас разберемся что к чему):

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

Справа у нас окошко с «понятными» значениями - это перевод с шестнадцатеричной системы в читаемую форму.

Снизу справа окно поиска, закладок и тд, к нему вернемся позже

4. Теперь раскурачиваем биос и собираем полезную информацию.

В текстовом поле видим информацию для какой карточки этот биос был создан. В нашем случае это ATOMBIOS для Sapphire Ellesmere (Polaris) GPU c 4GB видеопамяти. И версия биоса VER015.050.000.000.000000.347. Ну я подозреваю что вы то знаете какая у вас каточка и сколько там памяти, но эта информация подверждает, что мы работаем таки с правильным файлом.

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

Поэтому открываем текстовый файлик, полученный из данных биоса (из пункта 2).

В таблице 4 колонки с командами и 5ая колонка со значениями.

Первая колонка показывает номер ряда в шестнадцатеричном (HEX) значении, вторая стартовый адрес записаного значения, третья - длина строки/записаного значения, четвертая - название команды/значение. 5 колонка - перевод 4 колонки в читаемый вид.

Короче говорят, нам нужно VRAM_Info - который нам укажет на номер типа памяти.

У меня это:

001c: a44e Len 073f Rev 02:02 (VRAM_Info)

Чтобы найти какая у нас память ищем начальный адрес из VRAM_Info - у нас это a44e .

Идем в HEX Workshop. Жмем , или переходим по меню Edit -> Goto... В окошке вставляем адрес и жмем Go и курсор перемещается на нужный адрес:

Справа в текстовом поле среди всякого бреда видим два вменяемых набора символов.

H5GC4H24AJR и EDW4032BABG

Первая - это HYNIX

Вторая - это Micron либо Elpida

Вот она наша Элпида!

Биос написан под 2 типа памяти сразу - Micron и Elpida. Именно поэтому в него и прописаны настройки для обоих производителей.

5. Ищем и меняем тайминги.

Мы будем делать так называемый мемшифт или, говоря нормальным языком, сдвигать/прописывать тайминги от меньшей на более высокую частоту. Это решение позволяет увеличить производительность в майнинге Эфира (Ethereum).

Ближе к телу, как говорил классик.

Нам нужен стандартный виндовый калькулятор в режиме ТыЖПрограммист:

Так-с, давайте переведем значение частоты 1500 в шестнадцатеричную систему исчисления (далее HEX). На калькуляторе клацаем на DEC чтобы перевести калькулятор в десятеричную систему исчисления. Далее нужно ввести 1500 умноженное на 100, то есть 150 000. И в поле HEX видим значение 249F0 - это 1500 в шестнадцатеричной системе исчисления.

HEX редактор показывает значения в реверсированном/перевернутом виде. По сему мы тоже перевернем полученное в калькуляторе значение. Как это делается: число переворачивается символами по парам.

Последняя пара F0 стает первой, потом 49 , последняя 2 одна, поэтому добавляем 0 в хвост.

Получаем .

Идем в HEX редактор и ищем F04902: жмем Ctrl + f , или через меню Edit -> Find… открывается окно поиска. Для Type выбираем Hex Values и в value вписываем F04902. Ставим птичку на Find all Instances и жмем Ок.

В нижнем правом окне отобразятся все совпадения. Нам нужно значение, которое идет после значения типа памяти:

В нашем случае у нас биос под двоих производителей памяти, первый - Hynix, второй - Elpida:

После значения идут 00, 01, 02 - которые соответвуют типу памяти.

У нас элпида, ставим себе закладку. Выделяем , клик правой кнопкой Add Color Mapping..., выбираем Background Color (у меня красный)

1625 умножить на 100 это 162500 в DEC и переводится как 27AC4 в HEX. После реверса добавляем 02 в конец (напомню, у нас элпида, второй тип памяти по счету в биосе) получаем C47A0202

Получается что-то такое:

Теперь начинаем модифицирование.

Чаще всего записывают тайминги от 1500 МГц в 1625/1750/2000 МГц.

Не фанатейте, не нужно записывать совсем низкие тайминги - это может привести к ошибкам в вычислениях, что привет к так называемым реджекнутым шарам (rejected shares). Отслеживайте ошибки через HWiNFO64 (под нагрузкой):

По-хорошему, ошибок не должно быть вообще.

Чтобы перезаписать тайминги, мы берем стоку, которая между значениями 1500 и 1625 (те, которые мы цветом отметили) и вставляем эту строку в 1625-1750, 1750-2000.

Также иногда зашивают частоты от 1425 в 1500, и от 1375 в 1425 (мемшифт)

Получаем такую картину:

Сохраняем биос под новым именем. Например, bios_new.rom

6. Исправляем чексумму CRC (CRC checksum).

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

Что такое чексумма CRC (CRC checksum)? Чексумма - это значение либо строка, которая рассчитывается исходя из содержимого файла. Если оригинальный файл изменяется, также изменяется CRC для этого файла. Чексумму CRC можно сравнить с быстрым индикатором изменялся ли файл.

Каждый биос видеокарты содержит CRC чексумму внутри своего файла. Как только мы изменили биос, CRC поменялся и он перестал соответствовать сохраненному в файле.

Если мы зашьем такой биос с кривым CRC, программа прошивки покажет ошибку. Даже если прошьете, драйвер откажется работать с таким устройством, а в худшем случае, вы превратите карту в кирпич.

Так давайте же посчитаем правильный CRC.

Для этого нам нужен Anoraks-AMD-VBIOS-CRC-checker.

Запускаем его, жмем Check CRC, выбираем сохраненный модифицированный биос bios_new.rom и видим:

Новый CRC отличается от сохраненного.

Идем опять в наш HEX редактор, нам нужна первая строка кода. Наша чексумма записана по адресу , идем туда:

Бессовестно меняем ее на правильную (expected checksum из Anoraks-AMD-VBIOS-CRC-checker):

Сохраняем биос в файлик bios_new2.rom

Еще раз проверяем его на правильность CRC чексуммы.

Зашиваем в видик. Это не описываю, тут и так миллион мануалов есть:

Запускаем Wattools + HWiNFO64 (следим за ошибками памяти). У меня память заработала на 1950 МГц и выдавала немного ошибок. Ошибки - плохо, будут реджекнутые шары. Совсем без ошибок работала на частоте 1900 МГц.

Изначально каточка выдавала около 22 мегахешей в соло в эфире на Claymore 8.0

После манипуляций над биосом получили:

На даунвольте 27.8 ETH + 415 DCR потребление 92 Ватта, температура GPU 74 градуса (в комнате 20), память работает на 1950 МГц:

Без даунвольта получилось около 28,5 Мх в эфире + 450 в декрете, потребление больше 140 Ватт, только кому оно такое надо?

Что ж, это не мега-результат, учитывая, что хорошая 470 с памятью Самсунг выдает 30+ в эфире + 450 в декрете, но мы не стесняемся своих достижений.

Сегодня каждый рядовой пользователь имеет возможность регулярно обновлять BIOS, и этим, пожалуй, никого не удивишь. А вот то, что BIOS можно модифицировать, включая в его установках скрытые дополнительные параметры, — об этом знают лишь немногие опытные пользователи. Эта статья адресована, прежде всего, тем, кто занимается оптимизацией и постоянно ищет пути для повышения производительности своего "железного друга ", кто не боится рисковать и ставит на своем компьютере смелые эксперименты.

Откуда берет свое начало BIOS (Basic Input/Output System) — базовая система ввода/вывода? Ее программный код рождается в лабораториях разработчиков. Наиболее известные из них — фирмы Award и AMI . Затем каждый производитель материнских плат адаптирует BIOS к конкретной модели и по своему усмотрению отключает (блокирует) определенные функции. Причем заблокированными могут оказаться многие функции, влияющие на "тонкую" настройку BIOS, и от которых, в свою очередь, зависит производительность компьютера.

Для чего же производители материнских плат блокируют некоторые функции? Прежде всего, это делается в целях упрощения процедуры настройки Setup BIOS. Отключают и те функции, которые в конкретной материнской плате отсутствуют, но могут быть задействованы в следующих модификациях. Используя специальное программное обеспечение (утилиты), можно разблокировать практически все отключенные функции и опции в BIOS. После модификации результаты необходимо сохранить в отдельном файле и затем произвести обновление BIOS. При загрузке Setup BIOS на экране монитора можно будет увидеть новые дополнительные возможности настройки. Для каждой фирмы нужна своя утилита. Обладателям Award BIOS понадобится утилита Modbin , а для тех, у кого на компьютере установлена AMI BIOS, необходимо скачать программу AMIBCP . Интересен тот факт, что утилита AMIBCP разработана программистами самой фирмы AMI.

А теперь перейдем к самому главному — к практическим занятиям. Прежде всего, следует подготовить необходимое программное обеспечение. Итак, для модификации потребуются утилита для обновления ("прошивальщик"), файл с действующей версией BIOS и утилита для модификации. Утилиту для "прошивки" можно найти в Интернете на сайте производителя материнской платы или на компакт-диске, прилагающемся к "материнке". После чего ее необходимо скопировать на жесткий диск компьютера. Файл, в котором размещена текущая версия BIOS, можно получить с помощью этой утилиты. Утилиты для модификации BIOS можно скачать из Интернета: для Award по адресу http://www.biosmods.com/download.php , а для AMI — Файл, содержащий BIOS, желательно разместить на жестком диске в одной папке вместе с утилитой для ее модификации. Обязательно перед модификацией сделайте резервную копию файла с BIOS. Теперь, когда все готово, можно смело загружать утилиту.

В качестве примера рассмотрим случай, когда на компьютере установлена AMI BIOS. Что касается BIOS от Award, то принцип модификации аналогичен, и в этой статье рассматриваться не будет. Утилита AMIBCP является DOS-программой и без проблем загружается под Windows без перезагрузки в режим эмуляции MS-DOS. Объем AMIBCP (файл amibcp75.exe) в распакованном виде составляет 542 Кбайт. После загрузки утилиты AMIBCP необходимо с клавиатуры ввести имя файла, содержащего BIOS, например, 7vr_f4.bin . Далее, находясь в главном меню программы, ищем раздел "Configure Setup Data" и просматриваем по порядку все подразделы. Особенно интересны для нас будут подразделы "Chipset Setup" и "BIOS Features Setup". Сама модификация заключается в активации заблокированных опций. В каждом подразделе присутствуют столбцы с заголовками "Option Name", "Active", "Rights", "Optimal" и "FailSafe". Заблокированные опции подсвечены, напротив этих опций в столбце "Active" указано значение "No". Клавишами Page Up и Page Down можно задействовать ту или иную заблокированную установку. Возможны случаи, когда в столбце с заголовком "Option Name" названия опций на экране полностью отсутствуют. В таком случае придется включать все опции подряд "вслепую". Закончив изменения, выходят в главное меню программы AMIBCP и, нажимая на клавишу F10, сохраняют модифицированный BIOS в файле. После сохранения модифицированного файла применяют "прошивальщик" — утилиту для обновления BIOS. Ряд производителей материнских плат выпускает свои фирменные программы для обновления BIOS непосредственно в среде Windows. К их числу относятся утилиты фирм Gigabyte, ASUS, Intel и др. Перед прошивкой следует убедиться в том, что в Setup BIOS разрешено обновление — в разделе BIOS Features Setup параметр BIOS Flash Protection должен находиться в положении Disabled или Auto. После "прошивания" производят перезагрузку компьютера и входят в Setup BIOS. В моей практике модификации были случаи, когда в BIOS оказывались заблокированными настройки, позволяющие повышать производительность системы. А именно: возможность изменять напряжение на шине AGP в интервале 1,5... 1,8 В с шагом 0,1 В и на модулях памяти DDR в пределах 2,5...2,8 В с шагом 0,1 В, а также увеличивать на 5; 7,5 или 10 % штатное напряжение на ядре процессора. Имели место случаи, когда в BIOS были заблокированы режим S.M.A.R.T. для жестких дисков и режим Bypass Mode для оптимальной работы CPU (см. рисунок).

Интересной оказалась и заблокированная опция в подразделе Hardware Monitor — Slow Down CPU Duty Cycle . При переходе системы в режим Doze тактовая частота CPU уменьшается. С помощью этой опции можно установить другое значение тактовой частоты CPU в процентах от предыдущего. В заключение хочу напомнить: не стоит из-за полного контроля над BIOS терять голову. И поэтому к модификации и изменению параметров следует подходить с некоторой долей осторожности и с пониманием того, что вы делаете и на что идете.

Обычно вопросом «как открыть advanced bios или расширенный режим?» задаются для того, чтобы произвести более детальные настройки в базовые системы ввода-вывода или .

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

Примерный вид окна Advanced bios Features

Как видно из скриншотов, приведённых в разных версиях и разработчиков BIOS, вкладка «Advanced…» различается. У одних в этой вкладке находиться настройки приоритета загрузки устройств. Да именно те настройки необходимые для установки или переустановки Windows, другими словами это настройки загрузки с устройства, на котором есть программа установки, восстановления, загрузки операционной системы с диска (Live CD, Live USB и др.). Некоторые производители выносят настройки приоритета загрузки устройств в одну вкладку с именем «Boot». Что скорее всего является правильным решением и логичным выделением этих настроек.

Основные настройки расширенного меню

Давайте рассмотрим основные настройки, которые могут попадья на вкладке advanced.

Возьмём для примера старый AMI BIOS – 3 версии. В других версия BIOS должны быть похожие функции, возможно будут иметь другие названия.

Quick Boot – Быстрая загрузка, что значит включить или выключить (Enabled – включено, Disabled – выключено) быструю загрузку операционной системы, без затраты времени на проверку устройств и тестирование памяти базовой системой ввода-вывода.

Boot Device Select – Любимое меню и знакомое меню для тех кто хоть раз сталкивался с переустановкой Windows, в этом меню нужно поменять, если не стоит по умолчанию, приоритет загрузки устройств. Иначе говоря, здесь вам следует выбрать первое устройство, которое будет проверяться на наличие загрузочной информации (загрузчик Windows или Live Cd) обычно по умолчанию стоит жесткий диск (HDD), можно поменять, например, на СD\DVD USB и другие устройства из списка. В общем говоря, нужно поставить так First Boot Device – CD\DVD, если установочная программа находиться на диске, дальше можно поставить жесткий диск, а третье устройство по приоритету оставить пустым. (двух в полнее достаточно для удобства). По аналогии можно поставить Fist Boot Device – Flash\USB… если загрузочный файлы находиться на USB-flash.

Full Screen Logo Show – это редкое меню, встречается не на всех материнских платах и используется тоже редко.

S.M.A.R.T for Hard Dist – это функция BIOS которая проверяет жесткий диск на работоспособность, если говорить по другому, то эта функция скажет заранее когда ваш жёсткий диск рекомендуется заменить. Информация будет проверять при каждом включении компьютера. И когда срок службы жесткого диска подойдет к окончанию вам посоветуют прямо в стартовом экране скопировать данные на новый жесткий диск.

BootUp Numlock – это функция BIOS которая автоматически включает правую цифровую клавиатуру прям во время включения компьютера.

Floppy … — это функции связанные с устаревшими дискетными накопителями и устройствами для их чтения.

Password Check – здесь можете установить пароль для входа в БИОС. Если забудете придётся вынимать батарейку и сбрасывать настройки на заводские. Необходимо для защиты от «любопытных глаз».

Hyper Threading – это сложная для объяснения технология, суть которой, заключается в том что, операционная система будет считать одно ядро компьютера как два и из-за этой технологии процессор используется более рационально. Эта настройка влияет на производительность.

MPS – это опция нужна если у вас многопроцессорная материнская плата.

APIC ACPI SCI IRQ – используйте расширенный режим если у вас многоядерный процессор, если расширенный режим будет отключен, компьютер будет видеть только одно ядро.

CPU L1 & L2 Cache – включение и отключение быстрой памяти процессора. Лучше эти настройки не трогать, особенно если не знаете для чего.

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

ВНИМАНИЕ : Если обновляете BIOS, то эта опция должна быть выключена (DISABLED). Иначе перепрошивка BIOS может пройти не полностью, что приведет к неработоспособности BIOS.

C00 32k Shadow – эта опция могла ускорить работу видеокарты, путем копирования BIOS видеокарты в оперативную память, на современных платформах не используется.

Давайте в вкратце рассмотрим другой вид расширенного меню BIOS

JumperFree Configuration – это набор настроек необходимы для разгона компьютера.

ВНИМАНИЕ : В ЭТИХ НАСТРОЙКАХ НУЖНО БЫТЬ ОЧЕНЬ АККУРАТНЫМИ И ЗНАТЬ, ЧТО ЗАЧЕМ МЕНЯЕТЕ. ТАК КАК РАЗГОН СВЯЗАН С УВЕЛИЧЕНИЕМ ЭЛЕКТРОЭНЕРГИИ И ТЕПЛОВЫДЕЛЕНИЯ. НЕАДЕКВАТНОЕ ИЗМЕНЕНИЕ ЭТИХ ПАРАМЕТРОВ МОЖЕТ ПОВЛЕЧЬ НЕ КОРРЕКТНУЮ РАБОТЫ ОБОРУДОВАНИЯ КОМПЬЮТЕРА.

CPU Configuration – это информация о процессоре и его настройка на данный момент.

CHIPSET – это обычно набор настроек по разгону оперативной памяти. Рекомендации те же что и во всех параметрах разгона.

Onboard Device Configuration – это набор настроек по включению и , сетевой карты.

PCIPNP – это набор настроек связанных с обслуживанием и обработкой прерываний компонентов на PCI.

USB Configuration – это набор настроек связанных с USB.

Заключение

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

В некоторых материнских платах будут доступны иная функциональность и может слегка быть другое меню, (Например, Asus UEFI и др.)

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

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

Что такое BIOS

BIOS (Basic Input/Output System) - это базовая система ввода­вывода. Точнее, BIOS представляет собой систему настройки и управления памятью, процессором, чипсетом, интегрированными на плате контроллерами и подключенными к плате устройствами. В отличие от большинства других программ, BIOS располагается не на жестком диске, а на специальной микросхеме с автономным питанием на системной плате.

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

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

BIOS размещается в микросхеме ROM-памяти (Read Only Memory), что обеспечивает постоянную доступность BIOS независимо от работоспособности внешних по отношению к материнской плате компонентов (например, загрузочных дисков). Поскольку доступ к RAM (оперативной памяти) осуществляется гораздо быстрее, чем к ROM, многие изготовители предусматривают при включении питания автоматическое копирование BIOS из ROM в оперативную память. Задействованная при этом область оперативной памяти называется Shadow ROM.

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

Производителей ядра BIOS не так уж и много. Наиболее распространены BIOS от компаний AMI (American Megatrends, Inc.), AWARD и Phoenics Technologies. Другие BIOS (от компаний FirmWorks, Micro Firmware и др.) встречаются гораздо реже. А доминирует в настоящее время на рынке AMI BIOS, поэтому в дальнейшем мы сконцентрируемся на способах перепрошивки и модификации именно ее.

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

Наконец, отметим, что в настоящее время микросхемы BIOS используют два интерфейса для подключения к системной плате: либо шину LPC (Low Pin Connection), либо новую шину SPI (Serial Peripheral Interface).

Зачем перепрошивать BIOS

Все производители материнских плат и ноутбуков настоятельно не рекомендуют перепрошивать BIOS, если в этом нет острой необходимости. Более того, представители сервис-центров постоянно обращаются к производителям материнских плат с просьбой вообще блокировать для пользователя возможность перепрошивки BIOS. Конечно же, эта идея абсурдна и такого никогда не случится, однако еще раз подчеркнем, что операция перепрошивки BIOS небезопасна и может представлять угрозу для жизни. Если плата или ноутбук работает нормально, то нет смысла обновлять BIOS.

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

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

Наиболее безопасны в плане процедуры перепрошивки BIOS платы компаний Gigabyte, ASUS и MSI, в которых реализована защита от неудачной перепрошивки BIOS. На платах Gigabyte устанавливаются две микросхемы BIOS (технология DualBIOS), и если BIOS прошита некорректно и система не может запуститься, то автоматически начинается процедура аварийного восстановления BIOS из резервной микросхемы.

На новых платах ASUS технология аварийного восстановления BIOS получила название ASUS CrashFree BIOS 3. Суть этой технологии заключается в том, что в случае краха BIOS или несовпадения контрольной суммы после неудачной прошивки автоматически запускается программа, которая ищет BIOS на CD/DVD-диске, дискете или флэшке (с файловой системой FAT/FAT32). Если файл на каком­то носителе найден, автоматически запускается процедура восстановления.

Аналогичная технология, получившая название M-Flash, есть на платах MSI. Разница лишь в том, что файл BIOS должен находиться на флэшке.

Способы перепрошивки BIOS

Все производители системных плат вместе с новыми версиями BIOS выкладывают и утилиты для их прошивки, а также подробные инструкции, как перепрошивать BIOS. Увы, но какого-либо универсального инструментария для перепрошивки BIOS просто не существует. Вообще, можно выделить три способа перепрошивки BIOS: из-под DOS, из-под операционной системы Windows и непосредственно из-под BIOS.

Собственно, о способах перепрошивки BIOS из-под BIOS и с помощью фирменной утилиты из-под операционной системы Windows рассказывать особенно нечего. Здесь всё просто и понятно. Более того, способ перепрошивки BIOS из-под BIOS является самым простым и безопасным, однако, увы, не все производители поддерживают данную функцию. Исключение составляют лишь компании ASUS и Gigabyte.

Более того, не все производители комплектуют свои платы утилитами для перепрошивки BIOS из-под Windows и в некоторых случаях способ перепрошивки из-под DOS является единственно возможным.

Способ перепрошивки BIOS из-под DOS можно назвать классическим, но и самым неудобным. Дело в том, что, кроме наличия соответствующей DOS-утилиты, этот способ перепрошивки подразумевает загрузку компьютера не с жесткого диска, а с внешнего носителя. Ранее для этого применялись обычные 3,5-дюймовые загрузочные дискеты с DOS, причем на эту дискету, наряду с операционной системой, записывались и сам файл BIOS, и DOS-утилита его перепрошивки. Однако в настоящее время 3,5-дюймовые дискеты, как и сами флопповоды, можно считать устаревшими устройствами. На многих современных материнских платах отсутствует даже разъем для подключения флопповода, а ноутбуков с 3,5-дюймовыми флопповодами уже давно не производят. Впрочем, проблема данного способа перепрошивки BIOS заключается даже не в этом. В конце концов можно найти 3,5-дюймовый флопповод с USB-интерфейсом, но это вряд ли решит проблему. Дело в том, что современная BIOS может быть объемом в несколько мегабайт и просто не уместиться на дискету.

В принципе, можно попытаться решить данную проблему, используя вместо загрузочной дискеты загрузочную флэшку с ядром DOS. Но и в этом случае возникают осложнения. В первую очередь нужно найти утилиту, которая позволит сделать флэшку загрузочной, и системные файлы операционной системы DOS. В Интернете можно отыскать несколько утилит, позволяющих делать загрузочные флэшки с DOS, наиболее известные из них - это HP USB Disk Storage Format Tool и BootFlashDOS, которые есть в Сети в свободном доступе.

Утилита HP USB Disk Storage Format Tool позволяет создавать загрузочные флэшки при наличии системных файлов DOS, то есть для нее требуются еще и сами файлы. Впрочем, на торрент­ресурсах можно найти сборки, в которые входят системные файлы DOS.

В случае использования флэшек емкостью менее 4 Гбайт при форматировании и создании загрузочной флэшки с помощью утилиты HP USB Disk Storage Format Tool (рис. 1) можно применять файловую систему FAT либо FAT32, ну а если используется флэшка емкостью более 4 Гбайт, то необходима файловая система FAT32.

Рис. 1. Создание загрузочной флэшки с DOS
с помощью утилиты HP USB Disk Storage Format Tool

Утилита BootFlashDOS позволяет создавать загрузочные флэшки с DOS нажатием всего одной кнопки, покольку все необходимые системные файлы уже входят в саму утилиту (рис. 2).

Рис. 2. Создание загрузочной флэшки с DOS с помощью утилиты BootFlashDOS

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

Примеры выполнения подобной команды мы приведем чуть позже, а пока рассмотрим еще один способ перепрошивки BIOS из-под DOS. Он заключается в том, что вместо загрузочной флэшки применяется загрузочный CD/DVD-диск. Велосипед изобретать здесь вряд ли стоит - лучше воспользоваться уже готовым диском Hiren`s BootCD (текущая версия 10.4), образ которого можно скачать с сайта www.hirensbootcd.net. В случае использования загрузочного диска Hiren`s BootCD дополнительно понадобится еще и флэшка (с файловой структурой FAT или FAT32), на которую должна быть записана DOS-утилита для перепрошивки BIOS, и сам файл BIOS.

Теперь рассмотрим процедуру перепрошивки BIOS из-под DOS на примере ноутбука MSI GX640 с AMI BIOS. На ноутбуках MSI предусматривается один-единственный способ перепрошивки BIOS из-под DOS с помощью прилагаемой к файлу самой BIOS фирменной DOS-утилиты. Собственно, всё, что нужно для перепрошивки BIOS, - это создать загрузочную флэшку, скачать с сайта MSI архив со всеми необходимыми файлами, в который входят файл BIOS, утилита для перепрошивки и исполняемый файл flash.bat с прописанной последовательностью всех действий. После этого следует разархивировать данный архив на загрузочную флэшку и, загрузившись с флэшки, запустить на исполнение файл flash.bat. Главное, чтобы все разархивированные файлы находились в одной папке (можно разархивировать их в корневой каталог флэшки).

Вообще, нужно отметить, что для каждого типа BIOS (AMI, Award) для перепрошивки существуют специализированные утилиты от компаний AMI и Award. К примеру, с сайта компании AMI можно скачать пакет amiflash, в которой входят утилиты afudos и afuwin, позволяющие перепрошивать AMI BIOS из-под DOS и из-под Windows соответственно. Однако нужно иметь в виду, что AMI BIOS может быть как классическим AMI BIOS, так и AMI Aptio BIOS. Aptio - это разновидность AMI BIOS, но главное, что для AMI BIOS и Aptio AMI BIOS используются различные утилиты afudos и afuwin.

Кроме того, многие производители системных плат вносят в BIOS для своих продуктов столь существенные изменения, что универсальные утилиты AMI или Award их просто не распознают, а следовательно, перепрошить не могут. В частности, в рассмотренном ранее примере с AMI BIOS ноутбука MSI GT640 утилиты afudos и afuwin не распознают ее как AMI BIOS и, естественно, перепрошить не могут.

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

Зачем модифицировать BIOS

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

Еще несколько лет назад о возможности самостоятельного редактирования BIOS мало кто задумывался. Однако в последнее время эта процедура стала популярной, и в Интернете можно найти немало ресурсов, посвященных моддингу BIOS. Интерес к этому вопросу можно объяснить тем, что в последнее время многие пользователи стали прошивать SLIC-таблицу в своей BIOS, а это один из вариантов моддинга, или редактирования, BIOS. Сама по себе процедура прошивки SLIC-таблицы в BIOS вполне законна, а вот то, для чего это делают, конечно же, уже незаконно - именно этим объясняется популярность данной процедуры.

Вкратце поясним, о чем идет речь. Прошивание SLIC-таблицы в BIOS используется для того, чтобы реализовать механизм OEM-активации операционной системы Windows 7 точно так же, как это делают OEM-партнеры Microsoft для активации предустановленных копий Windows без проверки Microsoft. Данный метод позволяет активировать систему при соблюдении трех условий: использование специального OEM-ключа и OEM-сертификата, а также наличие SLIC-таблицы в BIOS компьютера.

Windows 7 требует наличия в BIOS SLIC-таблиц версии 2.1, причем жесткой привязки OEM-ключа к SLIC-таблице и сертификату нет. Ключ привязан только к редакции Windows и позволяет активировать как x86-, так и x64-версии ОС. Файл­сертификат и SLIC-таблицы взаимосвязаны, и для успешной активации оба компонента должны быть от одного OEM-партнера.

Мы не станем рассказывать, как незаконно активировать Windows 7, однако остановимся на процедуре вшивания в BIOS SLIC-таблицы. Сразу отметим, что это далеко не всегда возможно и не все BIOS поддаются какому-либо редактированию.

В Интернете можно найти пакет программных инструментов (AMITool), содержащий как сами SLIC-таблицы, так и утилиту (AMI SLIC Mod) для их прошивки в AMI BIOS. Однако для этого нужно, чтобы у вас на плате применялся именно AMI BIOS, но даже в этом случае нет никакой гарантии, что процедура прошивки SLIC-таблицы в BIOS окажется возможной. Как мы уже отмечали, многие производители так модифицируют BIOS для своих продуктов, что утилита AMI SLIC Mod просто не распознает ее как AMI BIOS, а следовательно, не может ее модифицировать.

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

Просмотреть версию SLIC-таблицы в BIOS можно с помощью специализированной утилиты RW - Read & Write Utility (текущая версия 1.4.7), которую можно скачать с сайта http://rweverything.phpnet.us. Другое название этой утилиты - RW-Everything.

Установив данную утилиту, запускаем ее и в главном окне программы на панели инструментов нажимаем на кнопку с надписью ACPI. В открывшемся окне ACPI Table нажимаем на вкладку SLIC. Далее необходимо просмотреть таблицу в шестнадцатеричном формате и найти в ней строку, начинающуюся с байт 53 20. Если следующие четыре байта 00 00 00 00, значит в BIOS прошита SLIC-таблица версии 2.0, а если - 01 00 02 00, то прошита SLIC-таблица версии 2.1 (рис. 3).

Рис. 3. Определение версии SLIC-таблицы BIOS

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

Используя специализированные утилиты, можно попытаться разблокировать все отключенные функции и опции в BIOS. Кроме того, можно изменить логотипы (некоторые производители материнских плат, например компания ASUS, даже поставляют специальные утилиты для изменения логотипа BIOS), а также некоторые названия, чтобы, например, при загрузке отображалось не реальное название процессора, а что­то типа «AMD Core i9-995».

Можно привести и другой пример моддинга BIOS. Некоторые умельцы умудряются через BIOS разблокировать возможность применения режима SLI для видеокарт NVIDIA на тех материнских платах, где данный режим не предусмотрен. Собственно, если плата официально поддерживает режим SLI, то в ее BIOS есть соответствующий ключ от NVIDIA. Идея моддинга заключается в том, чтобы вырезать этот ключ из BIOS той платы, на которой режим SLI официально поддерживается, и вставить его в BIOS для той платы, на которой режим SLI не поддерживается (то есть в BIOS без ключа NVIDIA). В частности, есть примеры того, как за счет такого моддинга был активирован режим SLI на платах на базе чипсета Intel P45 Express.

Впрочем, перейдем от теории к практике и обсудим редактирование BIOS, в частности редактирование AMI BIOS как наиболее распространенной.

Редактирование AMI BIOS

Для редактирования BIOS с ядром от AMI потребуется утилита AMIBCP, которую, кстати, выпускает сама компания AMI. Эту утилиту можно скачать как отдельно, так и в составе пакета AMI BIOS ROM Utilities. Нужно отметить, что поскольку, как мы уже не раз подчеркивали, производители материнских плат и ноутбуков вносят изменения в AMI BIOS для своих продуктов, то никакой гарантии того, что утилита AMIBCP распознает BIOS, нет. Увы, но далеко не каждую BIOS можно модифицировать. Как показывает практика, без проблем поддаются редактированию BIOS плат ASUS и ECS, а вот в отношении плат компаний Gigabyte и MSI утилита AMIBCP бессильна.

Итак, вернемся к рассмотрению редактирования BIOS в том случае, когда это возможно. Утилита AMIBCP (версия 3.х) запускается из-под операционной системы Windows, но нужно отметить, что имеются варианты этой же утилиты для DOS.

Загрузив утилиты, необходимо открыть файл BIOS. В нашем примере мы рассмотрим редактирование AMI BIOS для системной платы ASUS P6X58D-E с использованием утилиты AMIBCP v.3.37. Редактированию мы будем подвергать файл P6X58DE.ROM.

Итак, в главном окне программы загружаем файл BIOS, который будем модифицировать (рис. 4).

Рис. 4. Главное окно утилиты AMIBCP v.3.37

Прежде всего интересна вкладка Setup Configuration, в которой, собственно, и производится модификация настроек BIOS. В левом окне данной вкладки отображается основное меню настроек BIOS. Если снять галочку с какого-либо пункта меню, то он не будет отображаться в меню BIOS. В рассмотренном примере (см. рис. 4) мы сняли галочки с пунктов Ai Tweaker и Advanced, заблокировав тем самым все возможности для разгона системы. То есть пункты меню BIOS, в которых можно просмотреть информацию о процессоре и памяти, а также поменять частоты, напряжение питания и т.д., просто будут отсутствовать в модифицированной версии BIOS.

Аналогична ситуация при раскрытии древовидной структуры каждого пункта меню настройки BIOS: если снять галочку с какого-либо подпункта, то он не будет отображаться в меню BIOS. К примеру, если мы не хотим, чтобы в меню настроек Advanced отображался пункт Intel PPM Configuration, нужно просто снять с соответствующего пункта галочку (рис. 5).

Для того чтобы заблокировать какую-либо опцию меню настройки BIOS, достаточно в графе Show для соответствующего пункта установить значение No. Такие заблокированные элементы будут (после сохранения внесенных изменений) выделены зеленой полосой.

К примеру, если в нашей системе не установлены дополнительные вентиляторы в корпусе и мы не хотим, чтобы в BIOS отображались пункты их настроек, то входим в меню Power, далее открываем меню Hardware Monitor и для опций Chassis Fan 1 Speed, Chassis Fan 2 Speed, Chassis Fan 3 Speed, Chassis Q-Fan Profile и Power Fan Speed устанавливаем значение No в графе Show (рис. 6).

Рис. 6. Блокирование отображения в BIOS различных опций меню настройки

Следует отметить, что BIOS P6X58DE.ROM для платы ASUS P6X58D-E каких­либо улучшений с помощью утилиты AMIBCP v.3.37 не допускает. Все опции в ней разблокированы, поэтому максимум, что можно сделать, - это заблокировать то, что не нужно (правда, непонятно, зачем это делать).

Можно также попытаться изменить некоторые надписи, но следует иметь в виду, что на русском языке надписи отображаться не будут. К примеру, если мы хотим, чтобы при загрузке вместо строки ASUS P6X58D-E ACPI BIOS Revision 0106 отображалась строка ComputerPress P6X58D-E BIOS Edition, то достаточно найти строку ASUS P6X58D-E ACPI BIOS Revision 0106 на закладке BIOS Strings и поменять ее на указанную.

Нам осталось рассмотреть еще один вид моддинга BIOS - изменение фоновой картинки (логотипа) BIOS. При этом компания ASUS даже комплектует свои платы специальной утилитой, которая позволяет реализовывать данную возможность. Конечно, для плат ASUS проще всего применять именно эту утилиту. Однако для AMI BIOS можно воспользоваться и утилитой OEM LOGO самой компании AMI (рис. 7).

Рис. 7. Изменение логотипа BIOS с использованием утилиты OEM LOGO

Интерфейс этой утилиты очень прост и не требует комментариев. Достаточно загрузить BIOS и указать путь к файлу с новым логотипом. Единственное ограничение - рисунок должен быть определенного разрешения и формата.

  • UEFI
    • Tutorial

    В этой статье я постараюсь рассказать о наиболее популярных и полезных модификациях UEFI BIOS, условиях их применения и способах поиска. Кроме этого, на описанной в утилите UEFITool свет еще не сошелся клином, поэтому будут упомянуты и другие программы, используемые для модификации UEFI BIOS"ов различных производителей.
    Если тема вам интересна - добро пожаловать под кат.

    В PowerManagement код выглядит иначе, чаще всего вот так:

    80 FB 01 cmp bl,1 ; Если BL == 1 75 08 jne 0000000180002700 ; Перепрыгнуть две следующие команды 0F BA E8 0F bts eax,0Fh ; Установить бит 15 (LOCK) 89 44 24 30 mov dword ptr ,eax ; Сохранить результат в переменную на стеке 48 8B 54 24 30 mov rdx,qword ptr ; Загрузить значение из этой переменной в RDX B9 E2 00 00 00 mov ecx,0E2h ; А номер MSR в ECX E8 79 0C 00 00 call 0000000180003388 ; И вызвать функцию с wrmsr внутри
    Можно заменить JNE на JMP, BTS на BTR или просто «занопать» весь код установки лока. Проще всего сделать первое, т.е. поменять 75 08 на EB 08.

    Если такого кода в вашем UEFI BIOS не нашлось, ищите в драйверах, относящихся к CPU Power Management, значение 0xE2, и проверяйте весь код на предмет установки 15-го бита. В последних версиях BIOSов для некоторых современных десктопных плат AMI перестали лочить этот регистр, поэтому такого кода в них уже не найти - считайте, что производитель сделал этот мод за вас.

    AES NI unlock

    Что : обход установки бита LOCK (0x02) в регистр MSR 0x13C
    Зачем : включение аппаратного ускорения AES на системах с экспортными ограничениями
    Где искать : в UEFI-драйверах, относящихся к CPU PM, чаще всего в PowerManagement
    Способ модификации : мало чем отличается от PM patch"а (и уже ), поэтому останавливаться подробно на нем не буду.

    Whitelist removal

    Что : обход белого списка совместимого оборудования, который использую в своих UEFI BIOS"ах некоторые производители ноутбуков.
    Зачем : идея производителя понятна - можно продать обладателям «несовместимого» оборудования еще и ребрендированное совместимое втридорога. Если вы сами хотите решать, что какое оборудование совместимо с вашим ноутбуком - эта модификация для вас.
    Где искать : в UEFI-драйверах, относящихся к PCIe-устройствам. У HP это драйвер обычно называется BiosLockPcie, у Lenovo - LenovoWmaPolicyDxe.efi, но может называться и иначе.
    Способ модификации : т.к. производители ноутбуков стараются менять код проверки Whitelist почаще, то описать какой-то постоянный способ довольно трудно.
    Общая стратегия поиска такова:
    1. Вставить несовместимую карту в нотбук, дождаться сообщения о невозможности загрузки и запомнить его.
    2. Найти это сообщение в одном из FFS-файлов.
    3. Найти код, который ссылается на это сообщение.
    4. Исследовать этот код и попробовать изменить его так, чтобы проверка всегда заканчивалась успешно. Сделать это можно двумя способами: либо пропатчить переход, либо добавить свои Vendor ID и Device ID в белый список.
    Подробности модификации на примере HP хорошо описаны широко известным в кругах моддеров товарищем Donovan6000 , а я опишу вариант модификации на примере Lenovo X121E.
    Проверка осуществляется драйвером LenovoWmaPolicyDxe.efi, попасть необходимо вот сюда:
    44 38 0D F0 0F 00 00 cmp byte ptr ,r9b 75 18 jne 0000000000000C1A E8 35 FD FF FF call 000000000000093C 48 85 C0 test rax,rax 4C 8B C8 mov r9,rax 0F 88 77 FF FF FF js 0000000000000B8A C6 05 D6 0F 00 00 01 mov byte ptr ,1 49 8B C1 mov rax,r9 E9 68 FF FF FF jmp 0000000000000B8A
    Все переходы к этому коду необходимо пропатчить на безусловные, а в самом коде необходимо «занопать» первую и вторую строки, после чего проверка всегда будет заканчиваться успешно.

    BIOS lock removal

    Что : снятие защиты от прошивки модифицированных образов UEFI встроенным программатором.
    Зачем : при большом количестве экспериментов с UEFI доставать каждый раз программатор быстро надоедает, да и прошивка встроенным программатором происходит быстрее (засчет работы по протоколу QuadSPI вместо обыкновенного SPI в случае внешнего программматора).
    Где искать : в драйверах чипсета, чаще всего в PchInitDxe (другой вариант мода - в BiosWriteProtect)
    Способ модификации : вариант модификации PchInitDxe полностью описан на английском, поэтому я приведу только идею. Необходимо найти запись бита BIOS Lock Enable (BLE) в регистр BIOS_CNTL чипсета и предотвратить её. Сделать это можно в нескольких местах, например, вот здесь:
    48 8B 4C 24 40 mov rcx,qword ptr ; Загрузить в RCX адрес структуры PchPlatformData 48 8B 41 50 mov rax,qword ptr ; А в RAX - адрес дочерней структуры LockdownConfig F6 00 10 test byte ptr ,10h ; Проверить, установлен ли пятый бит (BiosLock) 74 25 je 0000000180001452 ; Если не установлен, перепрыгнуть весь код ниже 8A 50 01 mov dl,byte ptr B9 B2 00 00 00 mov ecx,0B2h ; E8 A2 5A 00 00 call 0000000180006EDC 4C 8D 87 DC 00 00 00 lea r8, ; В RDI лежит базовый адрес регистров LPC чипсета, а 0xDC - смещение регистра BIOS_CNTL 33 C9 xor ecx,ecx 4C 8B CD mov r9,rbp 33 D2 xor edx,edx 4C 89 44 24 20 mov qword ptr ,r8 E8 AA 76 00 00 call 0000000180008AFC ; Установить лок
    Можно изменить JE на JMP, но иногда вместо короткого прыжка попадается длинный, у которого приходится дополнительно вычислять смещение, поэтому лучше изменить test на любую команду, устанавливающую флаг ZF, например на xor rax, rax (48 31 C0), а возможную разницу в размерах команд исправить добавлением NOP"ов.
    Если в PchInitDxe нужного кода не нашлось, можно изменить драйвер BiosWriteProtect таким образом, чтобы обойти регистрацию находящегося в нем SMI-обработчика, который устанавливает бит BLE при попытке его сброса, после чего для разблокировки прошивки достаточно сбросить этот бит. У меня отлично работает вышеописанный способ, поэтому этот вариант я пока не пробовал и потому подробно описывать не буду.

    Advanced settings unlock

    Что : разблокировка доступа к скрытым настройкам BIOS Setup.
    Зачем : среди эти настроек может попасться что-то интересное, но обычно их скрывают не просто так.
    Где искать : для Phoenix и Insyde меню хранится в HII-файлах с именами вроде SetupMain, SetupAdvanced и т.п. Для AMI меню хранится в файле Setup, а настройки - в AMITSE. Более того, AMI предоставляет пороизводителям end-user продуктов свою программу AMIBCP, версии которой частенько утекают в публичный доступ. Работа с ней достаточно проста, поэтому описывать её я не вижу смысла - скачайте и попробуйте.
    Способ модификации : для AMI - открываем образ в AMIBCP, меняем настройки по умолчанию, сохраняем, прошиваем, выполняем сброс настроек, готово. Для Insyde и Phoenix все немного сложнее. Если доступ на запись в NVRAM не запрещен, можно воспользоваться методом товарища Falseclock , описанным в , а вот если доступа нет - придется модифицировать прошивку. Потребуется разобрать формат HII Form File либо вручную, либо предоставить это скрипту, описанному в вышеупомянутой статье, или утилите Universal IFR Extractor , которую необходимо натравить на извлеченные из образа UEFI файлы HII. После этого достаточно изменить в извлеченном файле HII Form условия SUPRESS_IF так, чтобы они никогда не выполнялись, и все меню станут доступны.

    CPU Microcode, OptionROM, drivers and images update

    Что : обновление микрокодов CPU, прошивок различных переферийных устройств, EFI-драйверов и отображаемых при загрузке и в BIOS Setup картинок.
    Зачем : иногда обновление помогает исправить ошибки в работе системы, иногда добавляет поддержку важной фичи (работу TRIM для SSD в RAID0, к примеру), но чаще всего обновление производится потому, что наконец вышла новая версия.
    Где искать : сильно зависит от производителя, EFI-драйверы можно найти просто по имени (SataDriver, например), микрокод можно найти по Model ID процессора, для которого он предназначен, OROMы - по VID/DID устройств, которые они обслуживают, картинки в формате JPEG можно найти по строке «JFIF», в GIF - по «GIF8» и т.п.
    Способ модификации : прост как мычание - найти новую версию в свободном доступе, найти, где в образе лежит старая, и заменить одно на другое. Для AMI товарищем LS_29 был написан набор для автоматического обновления на основе утилиты MMTool, скачать можно из нашей темы на оверах . Об автоматизированных решениях для Phoenix или Insyde я пока не слышал.
    Замена картинок может быть сделана либо утилитами вроде AMI ChangeLogo, либо вручную, но чаще всего не подготовленная специальным образом картинка вызывает зависание, т.к. декодеры форматов изображений бывают сильно ограничены. В общем, данные EXIF лучше удалить заранее.

    Заключение

    В этой статье я описал только те моды, которые успешно делал своими руками. Если у вас есть какие-то замечания и дополнения - буду рад вашим комментариям.
    Еще раз смиренно попрошу администрацию Хабра и лично НЛО о создании хаба UEFI, ибо это очень широкая тема, а статьи по ней буквально некуда приткнуть.
    Спасибо за внимание, желаю вам удачных модификаций.

    Теги:

    • UEFI
    • модификация
    • UEFITool
    Добавить метки