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

20.04.17 3.6K

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

Другой способ как снять пароль с биоса — переключить перемычку CMOS на самой материнской плате, если она присутствует. Эти методы работают, потому что в большинстве материнских плат ПК и ряде материнских плат ноутбуков для поддержания настроек BIOS / CMOS используется батарея. Если отключить питание, настройки BIOS / CMOS и пароль будут удалены.

Если по какой-то причине вы не можете сбросить пароль безопасности BIOS компьютера, удалив батарею или переключив перемычку CMOS , вот несколько вариантов, которые можно попробовать.

Бэкдор-пароли по умолчанию

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

Стандартные бэкдор-пароли BIOS

Если вы можете загрузить Windows

CMOS De-Animator — это более современный инструмент по сравнению с большинством инструментов. Он может сбросить пароль BIOS из Windows . Последняя версия CMOS De-Animator 2 совместима как с 32-разрядными, так и с 64-разрядными операционными системами.


Все, что нужно сделать — запустить инструмент от имени администратора (щелкните правой кнопкой мыши и выберите пункт меню «Запуск от имени администратора » ) и нажать кнопку «Продолжить », после чего перезагрузить компьютер. Когда ПК загрузится, вы увидите ошибку контрольной суммы CMOS и сможете получить доступ к BIOS без пароля. Принцип работы CMOS De-Animator заключается в том, что он делает недействительной контрольную сумму CMOS-памяти системы . Это приводит к сбросу всех настроек на значения по умолчанию и очищает все хранимые пароли BIOS .
CMOS De-Animator включает в себя функцию резервного копирования и восстановления. Это обеспечивает дополнительную гарантию безопасности. Если что-то при сбросе паролей пойдет не так, данные сохраняются в файл с расширением .dea . Авторы программы предупреждают о возможных проблемах при ее использовании на ноутбуках. Программа иногда вызывает ошибочные срабатывания антивирусного ПО и предупреждения на таких сайтах, как Virus Total .

Если вы не можете загрузиться с жесткого диска или CD

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

Если вы несколько раз ввели на ноутбуке неверный пароль BIOS , на экране появится сообщение о том, что ноутбук заблокирован. Вы увидите что-то типа “System Disabled ” или “Password check failed. System Halted ” и несколько цифр. Если это сообщение появляется при входе в BIOS , можно просто отключить питание и затем попытаться войти снова. Обратите внимание на число, потому что это ценная информация. Она требуется, чтобы сгенерировать бэкдор-пароль к BIOS .


Все, что нужно сделать — это записать появившийся номер, а затем перейти на веб-страницу BIOS Master Password Generator . Этот сайт предназначен для того, чтобы получить возможные пароли на основе введенного номера. Просто введите его и нажмите кнопку. Затем проверьте полученные результаты и отметьте все пароли, которые близки к вашей модели ноутбука.
Перед тем, как снять пароль с биоса на компьютере, попробуйте полученные коды для заблокированного BIOS , чтобы проверить, работает ли это. В зависимости от модели ноутбука, после ввода кода может потребоваться нажать Enter или Ctrl + Enter . Используемые коды основаны на работе специалиста «Dogbert », который провел много исследований и создал ряд небольших утилит, а также Python-скрипты для разблокировки различных моделей ноутбуков.

Если полученные на этом сайте коды вам не помогли, посетите блог Dogbert’а , где можно найти более подробную информацию о бренде вашего ноутбука и загрузить отдельную утилиту для него. Чтобы использовать одну из программ, загрузите утилиту и запустите ее, затем введите номер и нажмите Enter . Вы получите мастер-пароль, с помощью которого сможете попытаться разблокировать компьютер.


Необходимо запустить мастер-пароль на компьютере, который может загрузиться под Windows , и на котором установлен .NET . Если вы не знаете, какой инструмент использовать, можете попробовать все, пока не найдете тот, который соответствует вашему ноутбуку.

Если можете загрузиться с CD / USB

Когда Windows не загружается должным образом, и нет возможности войти в или USB уже установлена с более высоким приоритетом. В этом случае нужно вставить компакт-диск или флэшку и устройство загрузится с них автоматически. Также для загрузки с компакт-диска или USB-накопителя может быть установлен более низкий приоритет, чем для жестких дисков. В этом случае потребуется временно отключить жесткий диск.

Как еще снять пароль через биос? Если вы имеете доступ к Windows , другое решение, позволяющее загружаться с CD / USB — это инструмент под названием Plop Boot Manager . Он делает возможном загрузку с этих носителей, даже если BIOS не поддерживает эту функцию.

Вот некоторые инструменты, которые можно использовать при загрузке с компакт-диска или USB флэш-накопителя.

PC CMOS Cleaner

Предназначен для восстановления, удаления, расшифровки и отображения пароля пользователя или супер пользователя, хранящегося в BIOS , независимо от марки устройства. В список поддерживаемых BIOS входят Award , American Megatrends (AMI) , Compaq , Phoenix , Samsung , IBM , Compaq , DTK , Thinkpad , Sony , Toshiba . Так что есть большая вероятность, что ваш BIOS включен в этот список. PC CMOS Cleaner — это загрузочный Linux CD , поэтому не нужно беспокоиться о совместимости операционной системы.

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

Скачать PC CMOS Cleaner

CmosPwd от CGSecurity

Это один из самых современных и популярных инструментов дешифрования CMOS , хотя и был выпущен уже довольно давно — в 2007 году. CmosPwd расшифровывает пароль, хранящийся в CMOS , и отображает его. Поддерживаются следующие BIOS :
  • ACER/IBM BIOS ;
  • AMI BIOS ;
  • AMI WinBIOS 2.5 ;
  • Award 4.5x/4.6x/6.0 ;
  • Compaq (1992 );
  • Compaq (новая версия );
  • IBM (PS/2, Activa, Thinkpad) ;
  • Packard Bell ;
  • Phoenix 1.00.09.AC0 (1994), a486 1.03, 1.04, 1.10 A03, 4.05 rev 1.02.943, 4.06 rev 1.13.1107 ;
  • Phoenix 4 release 6 (User) ;
  • Gateway Solo – Phoenix 4.0 release 6 ;
  • Toshiba ;
  • Zenith AMI .

С помощью CmosPwd также можно снять пароль с биоса на ноутбуке Lenovo , создавать резервные копии, восстанавливать, стирать или даже полностью очищать CMOS . При загрузке выберите пункт 9. Next- 2. BIOS / CMOS Tools- 2. BIOS Cracker 5.0 (cmospwd) . Существует также версия , которую можно запускать из Windows .

!Bios от Eleventh Alliance

Позволяет выполнить резервное копирование и восстановление BIOS . Есть даже опция Blaster , с помощью которой можно очистить определенные части BIOS , с расчетом удалить пароль — мощный и потенциально небезопасный вариант, поскольку он может повредить BIOS . !Bios может взломать пароли, используемые в некоторых распространенных версиях BIOS , включая различные версии IBM , American Megatrends (AMI) , Award , а также Phoenix . Это старый инструмент, появившийся в конце 90-х годов, поэтому вряд ли он сможет эффективно работать на современных компьютерах.

Bios также включен в комплект программ Hirens Boot CD . Выберите пункт 9. Next- 2. BIOS / CMOS Tools- 4. BIOS 3.20 (ibios) . Также можно скачать отдельный инструмент!Bios Windows .

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

Введение и еще один отказ от ответственности

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

Необходимые инструменты

Чтобы успешно модифицировать ваш образ UEFI BIOS, могут потребоваться следующие инструменты:

  1. Hex-редактор на ваш выбор.
  2. Редактор образов UEFI, в качестве которого я, по понятным причинам, буду использовать UEFITool, но вы также можете использовать PhoenixTool (универсальный и хорошо отлаженый, но не без ограничений) или MMTool (более или менее сносно работает только с образами AMI Aptio).
  3. Если для необходимой модификации не нашлось постоянного паттерна, могут потребоваться ассемблер и дизассемблер с поддержкой x86-64. Ассемблера вполне досточно онлайнового , а вот дизассемблер нужен нормальный, иначе поиски точки модификации могут сильно затянуться.
    К сожалению, бесплатная версия IDA Pro не поддерживает разбор 64-битных PE-файлов, поэтому для Windows я рекомендую использовать утилиту dumpbin, входящую в набор компиляторов Microsoft, а для MacOS X - либо objdump, либо пробную версию Hopper Disassembler.
  4. Если модификация может быть выполнена утилитой от производителя UEFI-платформы, пусть ей она и будет выполнена - это надежнее, чем вручную. К сожалению, «узок круг этих революционеров и страшно далеки они от народа», поэтому чаще всего подходящей утилиты от производителя не существует.

Модификации

CPU PM patch, MSR 0xE2 lock removal

Что : обход установки бита LOCK (0x0F) в регистр MSR_PMG_CST_CONFIG_CONTROL (0xE2) после прохождения POST
Зачем : открытый регистр 0xE2 необходим для работы подсистемы CPU Power Management в MacOS X, при закрытом происходит kernel panic. Если вы не планируете её уставновку или в вашем UEFI BIOSе присутсвует настройка «Unlock C-State MSR» - эта модификация вам не нужна.
Где искать : в UEFI-драйверах, относящихся к CPU PM. В старых БИОСах код установки лока находится в модуле CpuPei, в новых - в модуле PowerManagement (может также называться PowerManagement2.efi или PowerMgmtDxe.efi).
Способ модификации : В CpuPei код, который нужно модифицировать, выглядит примерно так:

81 FB D0 06 02 00 cmp ebx,206D0h 75 0C jne FFFE426E 0D 00 80 00 18 or eax,18008000h ; Бит 15 (LOCK) ставится здесь EB 05 jmp FFFE426E 0D 00 80 00 00 or eax,8000h ; Или здесь 6A FF push 0FFFFFFFFh 6A F8 push 0FFFFFFF8h 6A 00 push 0 50 push eax 56 push esi E8 DC 0F 00 00 call FFFE5257 ; А внутри этой функции находится wrmsr

Достаточно заменить в этом месте 00800018 на 00000018 и 00800000 на 00000000, чтобы обойти установку лока.

В 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 (0x01) в регистр 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, ибо это очень широкая тема, а статьи по ней буквально некуда приткнуть.
Спасибо за внимание, желаю вам удачных модификаций.

Собственно, оригинальный способ, оснастку и микрокоды можно найти (непосредственно инструкция по AMI ), и в большинстве случаев использование этого способа не несет никаких проблем и не имеет подводных камней, но я в своей практике регулярно сталкивался с такой проблемой:

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

В качестве компромисного я выбрал следующее решение — берем последние версии микрокодов для всех процессоров поколения CORE во всех конструктивах (Celeron E, Pentium E, Core 2 Duo, Core 2 Quad, Xeon *3xxx/*5xxx) и подменяем ими всё что было до того. Набор микрокодов получился следующий:

Объём этого набора — всего 76 килобайт. Данный файл получился путём объединения этих файлов:

cpu00010676_plat00000001_ver0000060f_date20100929.bin
cpu00010676_plat00000004_ver0000060f_date20100929.bin
cpu00010676_plat00000010_ver0000060f_date20100929.bin
cpu00010676_plat00000040_ver0000060f_date20100929.bin
cpu00010677_plat00000010_ver0000070a_date20100929.bin
cpu0001067a_plat00000011_ver00000a0b_date20100928.bin
cpu0001067a_plat00000044_ver00000a0b_date20100928.bin
cpu000006f2_plat00000001_ver0000005d_date20101002.bin
cpu000006f6_plat00000001_ver000000d0_date20100930.bin
cpu000006f6_plat00000004_ver000000d2_date20101001.bin
cpu000006f7_plat00000010_ver0000006a_date20101002.bin
cpu000006f7_plat00000040_ver0000006b_date20101002.bin
cpu000006fb_plat00000001_ver000000ba_date20101003.bin
cpu000006fb_plat00000004_ver000000bc_date20101003.bin
cpu000006fb_plat00000010_ver000000ba_date20101003.bin
cpu000006fb_plat00000040_ver000000bc_date20101003.bin
cpu000006fd_plat00000001_ver000000a4_date20101002.bin

Сама процедура модификации тоже немного изменилась и стала если не проще, то быстрее:

Шаг 1 — открываем образ BIOS в программе MMTool:



Шаг 2 — для проверки переходим на последнюю вкладку (CPU PATCH) и смотрим количество микрокодов. Здесь их к примеру 31 штука:

Шаг 3 — переходим на вкладку Replace и ищем на ней пункт «P6 Micro Code»:

Шаг 4 — выбрав пункт «P6 Micro Code» жмём кнопку Икщцыу, выбираем файл ncpucode.bin, описанный выше и заменяем его кнопкой Replace:





Шаг 5 — для проверки переходим на последнюю вкладку (CPU PATCH) и смотрим количество микрокодов. После подмены микрокодов осталось 17, версия самая последняя:

Фундаментальной разницы с порядком модификации, описанным на delidded.com нет. В большинстве случаев на выходе получается конечно не то же самое, но процессор получает нужный микрокод. Из субъективных положительных моментов я хотел бы обратить внимание лишь на то, что гарантированно обновляются микрокоды на все актуальные процессоры, будь то «гражданские» или «серверные», а так же практически нет риска получить сообщение о нехватке места. Хотя, в моей практике даже на такой набор микрокодов пару раз места не хватало, это было с BIOS для плат ECS P4M900T-M и ECS P4M900T-M2, которые в общем совместимы с Xeon E5450.

По традиции публикую ссылку на архив с инструментами — (zip, 234KB). Архив содержит исполняемый файл MMTOL.exe (версия 3.22 BKMOD), файл с микрокодами на все 45/65nm процессоры поколения core/xeon ncpucode.bin , а так же два файла 45nm.bin и 65nm.bin с микрокодами только на 45nm процессоры и только на 65нм. Использование этих файлов может быть полезным в тех случаях когда необходимо освободить дополнительный объём в BIOS, например, для новой firmware какого-то контроллера, сетевого, дискового и пр.

!NB : Ни в файле ncpucode.bin, ни в файлах 45nm.bin/65nm.bin нет поддержки процессоров Pentium 4, Celeron (без буквенных индексов), Pentium D, Celeron D и Xeon W (Xeon 5080 например). Это процессоры поколения NetBrust.

  • 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
    Добавить метки

    Программный код 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 можно скачать из Интернета.

    В качестве примера рассмотрим случай, когда на компьютере установлена 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 и, нажимая на клавишу , сохраняют модифицированный 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 терять голову.
    И поэтому к модификации и изменению параметров следует подходить с некоторой долей осторожности и с пониманием того, что вы делаете и на что идете.



    Понравилась статья? Поделиться с друзьями: