Подробное пошаговое руководство для разблокирования скрытых настроек ami bios uefi

Подробное пошаговое руководство для разблокирования скрытых настроек AMI BIOS/UEFI.

   Представляю Вашему вниманию подробное, пошаговое, написанное простым и доступным языком, руководство для разблокирования скрытых настроек AMI BIOS/UEFI. Составил его форумчанин lUNReal, за что ему низкий поклон. Статья выложена с его согласия и от его имени. Я лишь оформил, откорректировал, исправив некоторые грамматические и орфографические ошибки для удобства восприятия ) . Это руководство может оказаться полезным для некоторых продвинутых пользователей, которые не знают с чего начать и что потребуется для Unlock’a BIOS’a.

Сразу предупреждаю, что все действия вы совершаете на свой страх и риск, и в случае неудачи, ни MSI, ни Я, ни lUNReal, ни Сообщество (forum-ru.msi.com), а так же издатели приведённого в данной статье ПО ответственности НЕ НЕСЁМ!

Раздел 1 — Снятие копии.

   Для начала, нам следует сделать backup своего BIOS. Качаем утилиту BIOS_Backup_TooKit и сохраняем её на свой компьютер. Данная утилита запускается с правами администратора без режима совместимости. А теперь пошагово:

1) Открываем архив и видим что-то вроде того, что на рисунке ниже, в данном случае 1.rom И 2.rom это мои Backup’ы

2) Скорее всего, программа не сможет опознать наш BIOS, но это не страшно =) , если же программе это удалось, то следующий шаг пропускаем. Если программа распознала BIOS, но указала размер, отличающийся от размера файла нашего BIOS’a, то не обращаем на это внимания и так же пропускаем следующий шаг.

3) Если программа не смогла понять какой же у нас BIOS, то нужно выставить настройки вручную, для этого ставим галочку в правом верхнем углу окна и выбираем размер нашего BIOS’a (в моём случае 4096KB). У Вас он может быть другим, посмотреть размер Вашего файла BIOS можно на странице загрузок для Вашего устройства.

4) Теперь нужно считать данные самого BIOS, для этого нужно нажать клавишу Read (Чтение), а потом дождаться заполнения шкалы на 100%. Как только шкала заполнится, клавиша Backup станет активной.

5) Теперь жмём Backup и в диалоговом окне указываем название файла (желательно до 8 символов и латинскими буквами и/или цифрами) и куда его сохранить.

   На этом мы закончим работу с данной утилитой. Просто, не правда ли? =) . Сразу хочу сказать, что полученный Backup нужно так же скопировать и сохранить рядом с разблокированным BIOS’ом, ибо в случае «фейла» Вам надо будет с чего-то восстановиться.

Раздел 2 — Unlock.

Прежде чем продолжить, проверяем. У нас должны быть готовы две копии нашего BIOS, назовём их, к примеру, biosmod.rom и biosorigin.rom где:
— biosmod — это версия модифицированного биоса
— biosorigin — это версия оригинального биоса для того, что бы мы могли в случае ошибки восстановить исходное состояние.

Теперь нам потребуется программа AMIBCP. Загружаем программу и запускаем.

1) Открываем файл biosmod.rom программой и видим следующую картину:

Поясню, что к чему:

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

Оранжевым контуром обозначено название конкретных опций Вашего BIOS, что бы Вы знали, что меняете )

Зелёным контуром обозначено состояние «Показать/Скрыть» конкретных функций BIOS

Синим контуром обозначен уровень доступа для каждой опции вашего BIOS — это нам и нужно.

2) Как я уже сказал в описании, нам необходимо поменять права доступа для ВСЕХ необходимых опций нашего BIOS. Делается это двойным кликом, менять мы будем из Default (по умолчанию) на User (пользователь).

   Вся суть в том, что бы изменить уровень доступа (Access level) у ВСЕХ опций на USER во всех вкладках (меняем только там, где стояло default, там где пусто не трогаем).

3) Вот мы и сделали, всё у нас получилось и выглядит примерно вот так:

Мои поздравления! Вы разблокировали свой BIOS.

4) Сохраняем изменения. Для этого, либо во вкладе file жмём save, либо же просто выходим и программа сама предложит сохранить, сохранение выглядит примерно так:

На этом всё.

Раздел 3 — Подготовка USB накопителя.

   Итак, к этому моменту у Вас должно быть две копии Вашего биоса (один из которых разблокирован), USB носитель, и ещё немного терпения :)
Тут нам понадобиться больше софта, качаем архив Flash.

1) Переходим в папку DOS и устанавливаем утилиту HP USB Disk Storage Format Tool, которая нам необходима для создания загрузочного DOS диска. После установки открываем утилиту от имени администратора и видим примерно следующее:

   Тут нам следует выбрать нашу флешку, установить файловую систему FAT32, а так же поставить галочку quick format (быстрое форматирование). Не ставьте галочку в Create a Dos startup disk, нам это не нужно. Клацаем Start.

2) Вот мы получили USB диск с файловой системой FAT32, о чём нам, собственно, и говорит утилита:

3) Теперь копируем всё содержимое папки Flash на наш USB Диск, кроме папки DOS

4) Теперь находим 2 текстовых файла — origin и update. Первый нам необходим для восстановления BIOS из оригинального Backup’а, а второй для прошивки модифицированным. Файлы являются набором команд, поэтому после редактирования нужно изменить их расширение на .bat (origin.bat и update.bat).

4.1) Редактирование файла origin.txt

   На этом скриншоте я выделил название файла Backup’а оригинального (не модифицированного) файла прошивки. Если у Вас название отличается — меняем на своё и сохраняем файл с расширением .bat

4.2) Редактирование файла update.txt

   Тут то же самое, что и в п. 4.1, но только нужно указать файлы нашего Unlock BIOS’a который мы вскрывали утилитой AMIBCP в разделе 2. У меня в примере он назывался так, если у Вас иначе, то меняем название на своё и сохраняем файл с расширением .bat.

5) После того, как мы отредактировали файлы и списали в них названия наших Backup’ов BIOS’а, нам нужно закинуть сами BIOS’ы в корень диска. В конечном итоге получается примерно так:

Всё готово для прошивки! Идём ставить чайник, завариваем зелёный чай без сахара, дабы жизнь сладкой не казалась =)

Раздел 4 — Прошивка.

   Итак, у нас есть USB диск, на котором 2 версии Вашего BIOS, он в FAT32 и содержит все необходимые файлы. К сожалению, в данный момент у меня нет камеры, чтобы сделать фотографии самого процесса прошивки, поэтому буду описывать всё крайне подробно.

1) Перезагружаем компьютер. Как только Вы увидите логотип MSI, судорожно, с суровым лицом (как у Берии) жмём клавишу Del, пока не попадём в BIOS нашего ноутбука. Можно попробовать просто зажать её и держать, пока не появится окно BIOS.

2) Мы вошли, поздравляю, теперь переходим во вкладку Boot и меняем там режим с UEFI на Legacy (режим совместимости), жмём клавишу F10 и Enter, компьютер перезагружается.

3) Как только появился логотип, сразу жмём F11, и ждём. Сначала будет предложение нажать F12 (или F10, не помню)+Enter для перехода к сетевой карте (вроде как, можно подключить ПК к сети из UEFI), пропускаем и ждём. Как только все завершится, вы увидите графический интерфейс файлового менеджера Volkov Cammander, который очень похож на известный многим Total Commander.

4) Теперь самое главное. Теория файлов update и origin. Эти файлы нужны для того, чтобы запустить прошивальщик с указанными ключами и командами, а если по существу, то они нужны для некоторой автоматизации процесса, дабы не писать вам длинную команду из-под Dos =) . Для прошивки Unlock Вам необходимо набрать команду «update». Если появилась какая-либо ошибка, набираем «origin» и Ваш BIOS прошьётся оригиналом, но такого случиться не должно ))

5) Вот и всё, мы прошились. Ваш девайс выключился. Теперь отключаем от него зарядку и вынимаем батарею на 10-30 секунд, после этого подключаем их обратно и включаем. Как только появится логотип, жмём Del и входим в BIOS, и что мы видим? Правильно, скрытые настройки! Жмём F9, на всякий случай, — это установка оптимальных настроек, и подтверждаем клавишей Enter. Теперь можете делать всё, что Вашей душе угодно, но с ОСОБОЙ ОСТОРОЖНОСТЬЮ.

Статья написана специально для русского сообщества MSI forum-ru.msi.com
Автор Дмитрий Липский. Хочу сказать спасибо пользователю форума Dirts, который мотивировал меня на её написание, и который «любезно» продал мне купленный/скачанный на буржуйском ресурсе BIOS.

Всем добра, пацаны =)

[вложение удалено администратором]

  1. Главная
  2. Песочница
  3. Общий форум



[Цитировать]

  • 2337
  • Стаж: 7 лет 4 месяца
  • Сообщений: 888
  • Репутация:62[+] [-]
  • Откуда: Грузия, город Рустави


На многих современных ноутбуках, производители c Биоса скрывают Расширенные настройки — Advanced.
Пример: На Acer, некоторых моделях, по-умолчанию в Биосе настройки VMD controller нет, а Вам требуется отключить, решается следующим образом, заходите в Биос — пункт Main — жмёте Ctrl+S — появляются дополнительные настройки и там уже есть включение/выключение VMD Controller-а.
Делимся знаниями, по отображению скрытых производителями расширенных настроек — Advanced, с указанием модели ноутбука.
Добавлено через 52 минуты 50 секунд:
В ноутбуке Acer ES1-332, с BIOS производства InsydeH2O, версии 1.13, активировать вкладку расширенных опций Advanced можно так:
1) Выключите ноутбук обычным образом.
2) Зажмите кнопки FN и TAB.
3) Удерживая эти две клавиши, включите ноутбук кнопкой питания.
4) Продолжайте держать FN и клавиши TAB около 2-4 секунд.
5) Отпустите FN и TAB и начните часто нажимать клавишу F2 для входа в BIOS.
6) Ноутбук может сам перезагрузиться – продолжайте нажимать F2.

Последний раз редактировалось: rezorustavi (2022-12-27 19:09), всего редактировалось 4 раз(а)


[Цитировать]

Отправлено: 27-Дек-2022 19:09
(спустя 4 дня)

    rezorustavi

  • 2337
  • Стаж: 7 лет 4 месяца
  • Сообщений: 888
  • Репутация:62[+] [-]
  • Откуда: Грузия, город Рустави


На некоторых ноутбуках Samsung прокатывает. Пример:
BIOS Phoenix разблокируется одновременным нажатием Ctrl+Shift+Alt+F4, но сначала надо войти в BIOS удерживая клавишу F2. Далее, нажимаем комбинацию (Ctrl+Shift+Alt+F4) после входа в стандартный BIOS, идём в закладку Exit и видим дополнительные вкладки Plaftform Advanced и Samsung Debug.
Вариант 2:
Что бы зайти в скрытый функционал BIOS нам нужно перейти в сам BIOS пройти до раздела Exit, далее одновременно нажимаем комбинацию клавиш. Shift+Ctrl+Alt+F4
Добавлено через 6 минут 29 секунд:
BIOS AMI American Megatrends Inc
Перезагрузите или включите компьютер.
Нажмите клавиши Del , F1 или Esc , чтобы открыть AMI BIOS во время загрузки компьютера.
Нажмите Alt+F1, чтобы разблокировать скрытые настройки. Если ничего не происходит, нажмите Shift+F1 или Ctrl+F1.
Таким образом, вы можете разблокировать скрытые настройки BIOS AMI.
………………………………………………………………………………………………………………………………………………….
Инфу беру с интернета, с иностранных сайтах перевожу на скорую руку Google переводчиком.


[Цитировать]

Отправлено: 27-Дек-2022 22:26
(спустя 3 часа)

    nefchi1

  • 13724
  • Стаж: 7 лет 1 месяц
  • Сообщений: 39
  • Репутация:0[+] [-]
  • Откуда: Солнечный Баку


А как это проделать на НP ah


[Цитировать]

Отправлено: 27-Дек-2022 23:08
(спустя 42 минуты)

    rezorustavi

  • 2337
  • Стаж: 7 лет 4 месяца
  • Сообщений: 888
  • Репутация:62[+] [-]
  • Откуда: Грузия, город Рустави


98921

А как это проделать на НP

На разных моделях по-разному.
То, что нарыл в сети, с советами от людей, тупо сохранил в Текстовом документе, для HP, пока без сортировки, собирал на скорую руку, для себя, возможно комбинации повторяются, мне понятно, делюсь, как есть:

Так-же есть способ с правого. ctrl + левый. ctrl + F10
Правый Ctrl + Левый Ctrl + F10
………………………………………………………………………………………………………………………………………………………
Нажал кнопку F10+A, когда я зашел на обычный BIOS — Долгий тап по A.
………………………………………………………………………………………………………………………………………………………
Либо FN+A, либо A+F10, либо FN+TAB
………………………………………………………………………………………………………………………………………………………
При включении ноутбука (до экрана загрузки) нажать ESC.
После зажать английскую «A» и не отпуская её несколько раз нажать на F10 без FN.
В биосе должна появиться новая вкладка «Advanced». С 1го раза может не получиться.
………………………………………………………………………………………………………………………………………………………
А по поводу BIOS — на вашей версии должно работать сочетание F10+A. Попробуйте в другой последовательности, зажмите сначала F10, потом A. Попробуйте одновременно нажать. В общем попробуйте разные сочетания в разные моменты загрузки.
………………………………………………………………………………………………………………………………………………………
В общем это делать обязательно при выключенном ноуте, включенном питании от розетки и обязательно на клавиатуре ноутбука
И плюс я ещё перед всем этим заходил в биос и от туда отключал ноут)
Зажимаем FN и далее нажимаем по очереди кнопки F4, 4,R, F, V, F5, 5, T, G, B, F6, 6, Y, H, N
И только после того как нажали на кнопки в такой последовательности мы можем отжать кнопку FN. Далее запускаем ноут и жмём один раз F2 чтоб зайти в биос(надо подгорать момент)
У меня сработало не с первого раза, так как к такому надо приловчиться)))
………………………………………………………………………………………………………………………………………………………
Выключите/перезагрузите компьютер.
Выключите или перезагрузите компьютер снова, и на этот раз нажмите F9
Затем нажмите CTRL+F10
Это приведет вас к диспетчеру загрузки, и вы найдете там меню параметров загрузки.
Нажмите F10 и откройте вкладку «Advanced — Дополнительно».
Когда появится страница диспетчера загрузки, нажмите F10
Открытие утилиты настройки BIOS займет одну-две секунды.
И на этот раз вы получите вкладку «Advanced — Дополнительно» справа от «Конфигурация системы»
………………………………………………………………………………………………………………………………………………………
Войдите в настройки БИОС. Несколько раз нажмите клавишу Esc, пока не откроется меню запуска.
Выключите/перезагрузите компьютер. Выключите или перезагрузите компьютер снова, и на этот раз нажмите F9.
Нажмите F10 и перейдите на вкладку «Advanced — Дополнительно».
………………………………………………………………………………………………………………………………………………………
Fn+A
Fn+tab
Fn+tab+a
Shift+enter
Fn(Удерж, при запуске)
………………………………………………………………………………………………………………………………………………………
При включении щелкнуть F10 (примерно раз 5 плюс минус неважно) затем зажать A
………………………………………………………………………………………………………………………………………………………
Загрузите компьютер. Когда вы увидите экран с логотипом запуска, нажмите CTRL+F10, а затем CTRL+F11, чтобы войти в BIOS. (Он работает только на некоторых компьютерах, и вам, возможно, придется попробовать его несколько раз, пока вы не войдете).
………………………………………………………………………………………………………………………………………………………
Загрузите компьютер и нажмите клавишу F8, F9, F10 или Del, чтобы войти в BIOS. Затем быстро нажмите клавишу A, чтобы отобразить дополнительные настройки.
………………………………………………………………………………………………………………………………………………………
В Биосе нажмите Fn+Tab 3 раза.
………………………………………………………………………………………………………………………………………………………
Fn+Tab, Fn+Tab, Fn+Tab
F10 [Yes]
F2
………………………………………………………………………………………………………………………………………………………
Попробуйте при загрузке нажать CTRL+F10 или CTRL+F11

Отпишитесь пожалуйста, какой способ прокатил и на какой серии ноутбука HP.


[Цитировать]

Отправлено: 29-Дек-2022 09:46
(спустя 1 день 10 часов)

    nefchi1

  • 13724
  • Стаж: 7 лет 1 месяц
  • Сообщений: 39
  • Репутация:0[+] [-]
  • Откуда: Солнечный Баку


98922

98921

А как это проделать на НP

На разных моделях по-разному.
То, что нарыл в сети, с советами от людей, тупо сохранил в Текстовом документе, для HP, пока без сортировки, собирал на скорую руку, для себя, возможно комбинации повторяются, мне понятно, делюсь, как есть:

Так-же есть способ с правого. ctrl + левый. ctrl + F10
Правый Ctrl + Левый Ctrl + F10
………………………………………………………………………………………………………………………………………………………
Нажал кнопку F10+A, когда я зашел на обычный BIOS — Долгий тап по A.
………………………………………………………………………………………………………………………………………………………
Либо FN+A, либо A+F10, либо FN+TAB
………………………………………………………………………………………………………………………………………………………
При включении ноутбука (до экрана загрузки) нажать ESC.
После зажать английскую «A» и не отпуская её несколько раз нажать на F10 без FN.
В биосе должна появиться новая вкладка «Advanced». С 1го раза может не получиться.
………………………………………………………………………………………………………………………………………………………
А по поводу BIOS — на вашей версии должно работать сочетание F10+A. Попробуйте в другой последовательности, зажмите сначала F10, потом A. Попробуйте одновременно нажать. В общем попробуйте разные сочетания в разные моменты загрузки.
………………………………………………………………………………………………………………………………………………………
В общем это делать обязательно при выключенном ноуте, включенном питании от розетки и обязательно на клавиатуре ноутбука
И плюс я ещё перед всем этим заходил в биос и от туда отключал ноут)
Зажимаем FN и далее нажимаем по очереди кнопки F4, 4,R, F, V, F5, 5, T, G, B, F6, 6, Y, H, N
И только после того как нажали на кнопки в такой последовательности мы можем отжать кнопку FN. Далее запускаем ноут и жмём один раз F2 чтоб зайти в биос(надо подгорать момент)
У меня сработало не с первого раза, так как к такому надо приловчиться)))
………………………………………………………………………………………………………………………………………………………
Выключите/перезагрузите компьютер.
Выключите или перезагрузите компьютер снова, и на этот раз нажмите F9
Затем нажмите CTRL+F10
Это приведет вас к диспетчеру загрузки, и вы найдете там меню параметров загрузки.
Нажмите F10 и откройте вкладку «Advanced — Дополнительно».
Когда появится страница диспетчера загрузки, нажмите F10
Открытие утилиты настройки BIOS займет одну-две секунды.
И на этот раз вы получите вкладку «Advanced — Дополнительно» справа от «Конфигурация системы»
………………………………………………………………………………………………………………………………………………………
Войдите в настройки БИОС. Несколько раз нажмите клавишу Esc, пока не откроется меню запуска.
Выключите/перезагрузите компьютер. Выключите или перезагрузите компьютер снова, и на этот раз нажмите F9.
Нажмите F10 и перейдите на вкладку «Advanced — Дополнительно».
………………………………………………………………………………………………………………………………………………………
Fn+A
Fn+tab
Fn+tab+a
Shift+enter
Fn(Удерж, при запуске)
………………………………………………………………………………………………………………………………………………………
При включении щелкнуть F10 (примерно раз 5 плюс минус неважно) затем зажать A
………………………………………………………………………………………………………………………………………………………
Загрузите компьютер. Когда вы увидите экран с логотипом запуска, нажмите CTRL+F10, а затем CTRL+F11, чтобы войти в BIOS. (Он работает только на некоторых компьютерах, и вам, возможно, придется попробовать его несколько раз, пока вы не войдете).
………………………………………………………………………………………………………………………………………………………
Загрузите компьютер и нажмите клавишу F8, F9, F10 или Del, чтобы войти в BIOS. Затем быстро нажмите клавишу A, чтобы отобразить дополнительные настройки.
………………………………………………………………………………………………………………………………………………………
В Биосе нажмите Fn+Tab 3 раза.
………………………………………………………………………………………………………………………………………………………
Fn+Tab, Fn+Tab, Fn+Tab
F10 [Yes]
F2
………………………………………………………………………………………………………………………………………………………
Попробуйте при загрузке нажать CTRL+F10 или CTRL+F11

Отпишитесь пожалуйста, какой способ прокатил и на какой серии ноутбука HP.

Что то не один вариант не прокатил с БИОС (Досадно) мод.НР 655


[Цитировать]

Отправлено: 29-Дек-2022 16:05
(спустя 6 часов)

    Lupik2

  • 56
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 90
  • Репутация:10[+] [-]
  • Откуда: Цимлянск


В ноутбуке Acer ES1-332, с BIOS производства InsydeH2O, версии 1.13, активировать вкладку расширенных опций Advanced можно так:
1) Выключите ноутбук обычным образом.
2) Зажмите кнопки FN и TAB.
3) Удерживая эти две клавиши, включите ноутбук кнопкой питания.
4) Продолжайте держать FN и клавиши TAB около 2-4 секунд.
5) Отпустите FN и TAB и начните часто нажимать клавишу F2 для входа в BIOS.

Прокатило на Acer A315-21-622T c биос InsydeH2O V1.12. Появилось много интересных пунктов в дополнительном меню Advanced.


[Цитировать]

Отправлено: 29-Дек-2022 19:12
(спустя 3 часа)

    rezorustavi

  • 2337
  • Стаж: 7 лет 4 месяца
  • Сообщений: 888
  • Репутация:62[+] [-]
  • Откуда: Грузия, город Рустави


98927

Что то не один вариант не прокатил с БИОС (Досадно) мод.НР 655

aa Пробуйте обновить Биос до последней версии, строго по инструкции с официального сайта.


[Цитировать]

Отправлено: 29-Дек-2022 19:48
(спустя 35 минут)

    SergeyZV

  • 528
  • Стаж: 8 лет 2 месяца
  • Сообщений: 1315
  • Репутация:34[+] [-]


Lupik2, А пароль на BIOS пробовали поставить?


[Цитировать]

Отправлено: 29-Дек-2022 23:14
(спустя 3 часа)

    Lupik2

  • 56
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 90
  • Репутация:10[+] [-]
  • Откуда: Цимлянск


[Цитировать]

Отправлено: 30-Дек-2022 09:57
(спустя 10 часов)

    SergeyZV

  • 528
  • Стаж: 8 лет 2 месяца
  • Сообщений: 1315
  • Репутация:34[+] [-]


А зря. Возможно откроются недоступные настройки BIOS.


[Цитировать]

Отправлено: 30-Дек-2022 10:32
(спустя 34 минуты)

    Lupik2

  • 56
  • Стаж: 8 лет 5 месяцев
  • Сообщений: 90
  • Репутация:10[+] [-]
  • Откуда: Цимлянск


98943

А зря. Возможно откроются недоступные настройки BIOS.

Т.е. к недоступным настройкам advanced добавятся еще более недоступные настройки Bios…


[Цитировать]

Отправлено: 30-Дек-2022 10:50
(спустя 17 минут)

    Ander_73

  • 15549
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3241
  • Репутация:127[+] [-]


Lupik2, aa
В «некоторых моделях»™ при установке в БИОС-е пароля Админа появляется возможность отключить SecureBoot (без пароля эта опция просто недоступна для изменения, «серая»). Видимо, отсюда и прочие допущения про магию «пароля в БИОС-е»…

Текущее время: 21-Май 12:41

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

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

Как разблокировать скрытые функции 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 можно скачать из Интернета.

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

Автор: А. Горячкин
Источник: Журнал «Радио»

ITGuides.ru

Вопросы и ответы в сфере it технологий и настройке ПК

Пошаговая инструкция по правильной настройке BIOS на компьютере

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

Бытует неправильное мнение, что настройка bios собьется при отсутствии напряжения. Чтобы этого не случилось, на «материнку» ставят литиевый аккумулятор или специальную батарейку, поддерживающую настройки биоса на компьютере по умолчанию. Эта программа является посредником и обеспечивает взаимодействие устройств с ОС. А как же включить bios?

Настройки биоса на компьютере по умолчанию

После подключения к сети вашего персонального друга (компьютера) начинается загрузка основной ОС, затем подключается винчестер, с которого загружается «Виндоус» или другая ОС. Настройки биоса не включаются автоматически на персональном устройстве.

Для входа в этот режим настроек необходимо после включения компьютера подождать одиночный звуковой сигнал или начало надписи о загрузке, а затем несколько раз нажать кнопку «F2» или «DEL (Delete)» (зависит от «материнки»). Правильный вариант высвечивается внизу экрана.

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

  1. Main — выбор даты, времени, жестких дисков и подключенных накопителей.
  2. Advanced — выбор этого пункта позволит выбрать и поменять режимы:
  • процессора (например, разогнать его);
  • памяти;
  • портов (входов-выходов) компьютера.
  1. Power — изменение конфигурации питания.
  2. Boot — изменение загрузочных параметров.
  3. Boot Setting Configuration (Boot) — выбор параметров, влияющих на быстроту загрузки ОС и на определение мыши и клавиатуры.
  4. Tools — специализированные настройки. Например, обновление с «флешки».
  5. Exit — Выход. Можно записать изменения и выйти из bios или оставить все как было (по умолчанию).

Видео руководство по правильной настройке BIOS компьютера

Как настроить биос — основные разделы

MAIN — раздел для:

  • непосредственной корректировки временных данных;
  • определения и изменения некоторых параметров винчестеров (жестких дисков) после их выбора с помощью «стрелок» клавиатуры и нажатия кнопки «Ввод» (Enter). Рисунок 1.

В меню Main BIOS Setup вы попадаете сразу, как зайдете в БИОС

Если вы хотите перестроить режимы винчестера, то после нажатия кнопки «Ввод» вы попадете в его меню по умолчанию. Для нормальной работы необходимо выставить «стрелками» и кнопкой «Ввод» в пунктах:

  • LBA Large Mode — Auto;
  • Block (Multi-Sector Transfer) — Auto;
  • PIO Mode — Auto;
  • DMA Mode — Auto;
  • 32 Bit Transfer — Enabled;
  • Hard Disk Write Protect — Disabled;
  • Storage Configuration — желательно не изменять;
  • SATA Detect Time out — изменять нежелательно.
  • Configure SATA as — выставить на AHCI.
  • System Information — данные о системе, которые можно почитать.

ADVANCED — раздел непосредственных настроек основных узлов компьютера. Рисунок 2. Он состоит из подразделов:

  1. JumperFree Configuration — из него (нажатием кнопки «Ввод» (Enter)) попадаем в меню Configure System Frequency/Voltage, которое позволяет настраивать модули памяти и процессор. Оно состоит из пунктов:
  • AI Overclocking (режимы Auto и Manual) служит для разгона процессора вручную или автоматически;
  • DRAM Frequency — изменяет частоту (тактовую) шины модулей памяти;
  • Memory Voltage — ручная смена напряжения на модулях памяти;
  • NB Voltage — ручная смена напряжения на чипсете.
  1. CPU Configuration — при нажатии кнопки «Ввод» (Enter) открывается меню, в котором можно просматривать и изменять некоторые данные процессора.
  2. Chipset — менять не рекомендуется.
  3. Onboard Devices Configuration — смена настроек некоторых портов и контролеров:
  • Serial Portl Address — смена адреса COM-порта;
  • Parallel Port Address — смена адреса LPT-порта;
  • Parallel Port Mode — смена режимов параллельного (LPT) порта и адресов некоторых других портов.
  1. USB Configuration — смена работы (например, включение/отключение) USB-интерфейса.
  2. PCIPnP — менять не рекомендуется.

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

    POWER — смена настроек питания. Для нормальной работы необходимо выставить «стрелками» и кнопкой «Ввод» в пунктах:

    1. Suspend Mode — Auto.
    2. ACPI 2.0 Support — Disabled.
    3. ACPI APIC Support — Enabled.
    4. APM Configuration — изменять нежелательно.
    5. Hardware Monitor — корректировка общего питания, оборотов кулеров и температуры.

    Настройка биос — остальные разделы

    BOOT — управление параметрами непосредственной загрузки. Состоит из:

    1. Boot Device Priority — выбор приоритетного накопителя (винчестера, дисковода, флешки и прочее) при работе или при установке какой-либо ОС.
    2. Hard Disk Drivers — установка приоритетного винчестера, если их несколько.
    3. Boot Setting Configuration — выбор конфигурации системы и компьютера при загрузке. При нажатии кнопки «Ввод» (Enter) открывается меню:
    • Quick Boot — опция теста памяти (оперативной), изменив которую можно ускорить загрузку ОС;
    • Full Screen Logo — активировав/деактивировав параметр, вы сможете включить или заставку, или информацию о процессе загрузки;
    • Add On ROM Display Mode — определение очереди на экране информации о модулях, подключенных к «материнке» через слоты;
    • Bootup Num-Lock — определение состояния кнопки «Num Lock» при инициализации БИОС;
    • Wait For ‘F1′ If Error — принудительное нажатие кнопки «F1» при возникновении ошибки;
    • Hit ‘ DEL’ Message Display — надпись, указывающая клавишу для входа в БИОС.

      Раздел Boot необходим для указания загрузочных устройств и соответствующих им приоритетов загрузки

      TOOLS — служит для обновления БИОС.

      EXIT — выход из BIOS. Имеет 4 режима:

      1. Exit & Save Changes (F10) — выход с сохранением данных, установленных непосредственно пользователем.
      2. Exit & Discard Changes — выход без сохранения данных (заводская установка).
      3. Discard Changes — отмена изменений.
      4. Load Setup Defaults — установка параметров по умолчанию.

      В меню Exit можно сохранить измененные настройки, а также сбросить БИОС на настройки по-умолчанию

      Как правильно настроить bios в картинках по умолчанию, знает почти каждый пользователь. Но если вы начинающий пользователь, войдите в интернет. В сети существует множество ресурсов, в которых есть страницы «настройка системы bios в картинках».

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

      Изменяем скрытые (расширенные) настройки BIOS (EFI)

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

      Метод протестировал на ноутбуке Samsung NP300E5A — S01RU с BIOS формата UEFI, но по свой сути является универсальным для всех EFI BIOS.

      В этой статье я расскажу только про современные BIOS для изменения настроек таких EFI BIOS нам понадобятся следующие программы(придется поискать в интернете):

      1. BIOS_Backup_TooKit — Для того чтобы забэкапить наш BIOS
      2. UEFITool_NE_A32_win — Для того чтобы разобрать наш BIOS на составные элементы.
      3. Universal IFR Extractor — Для расшифровки нашего Биоса.
      4. BOOTX64 — программа для внесения наших новых настроек.

      И так запускаем нашу первую программу обязательно от имени администратора, это требуется для корректной работы.Если программа выдала ошибку которой сказано что он не смог определить наш BIOS, не волнуйтесь нажимаем OK , ставим галочку напротив надписи Custom , что недоступно меню выбора размера нашего Биоса запятая размер современного Биоса обычно не превышает 8 мегабайт, для нас сейчас это не имеет особого значения так как нам нужно лишь считать и его настройки, поэтому выставляем его размер в интервале от 8 до 16 мегабайт. И нажимаем кнопку Read , и ждем пока BIOS полностью не считается (100%), После этого нажимаем кнопку Backup и сохраняем наш BIOS под любым названием.

      После того как мы сохранили наш BIOS запускаем вторую программу.Нажимаем File, после этого Open image file, И выбираем ранее сохранённый BIOS, теперь нам нужно найти расширенные настройки, Искать скорее всего придется глазами для этого мы будем искать следующие ключевые слова: SetupUtility , advanced.

      Искать мы будем только в первой строке, нам нужно найти DXE driver с нашими настройками Биоса:

      Например как на скриншоте:

      После того как мы нашли наши настройки, нужно скопировать File GUID, как на скриншоте выше. После чего возвращаются в папку второй программы и поиск в Windows наш File GUID, возможно найдется только один файл или найдется много файлов, выбираем тот который имеет наибольший размер:

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

      После расшифровки мы получим файл в формате текстового документа который легко открыть любым текстовым редактором лично я использую notepad++, советую его всем кто часто работает с текстовыми документами такого формата:

      Теперь мы открываем наш текстовый документ и ищем нужные нам настройки например для меня было важно настройка SATA GEN3 Mode, которая по какой-то причине по умолчанию была отключена в моём ноутбуке:

      Теперь в качестве примера нам нужно выписать параметры Variable: 0x66 и Enabled, Value: 0x1. Их придётся непросто выписать, а запомнить именно они понадобятся нам для изменения настроек.

      Для следующего 4 этапе нам понадобится чистая флешка отформатированная в файловую систему fat32 , на неё необходимо записать наш boot64 Просто скопируйте содержимое архива на нашу чистую, отформатированную флешку.

      Теперь нам нужно загрузиться с этой флешки при этом в настройках Биоса нужно включить опцию Legacy support, подробно описывает этот процесс я не буду так как таких статей в интернете очень много (Google вам в помощь).

      Когда мне загрузить с флешки мы увидим следующий текст:

      >error : file not found

      Когда этот текст появился находим следующую команду для нашего примера:

      Где 0x66 — это Variable (Setting: SATA GEN3 Mode) — название настройки.

      А 0x1 — Option: Enabled, то есть включен — состояние настройки.

      На этом всё дорогой читатель. Если у вас есть вопросы возражения или пожелания или поломались ссылки на программы оставляйте свои комментарии.

      Горячие клавиши для входа в меню BIOS, Boot Menu, восстановления из скрытого раздела

      Доброго всем дня.

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

      1) Зайти в BIOS и изменить очередь загрузки (т.е. поставить в очередь загрузки флешку перед HDD — таким образом ПК будет сначала проверять флешку на наличие загрузочных записей, а только потом жесткий диск);

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

      Чтобы войти в BIOS (вызвать Boot Menu) в большинстве случаев используется клавиши: F2, Del, Esc, F12 (в зависимости от производителя устройства). Кнопку нажимать нужно сразу же после включения компьютера (можно несколько раз, чтобы не пропустить нужный момент.

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

      Рис. 1. Dual Bios. Кнопка DEL — вход в настройки BIOS, кнопка F12 — Вызов Boot Menu.

      Таблица №1: горячие клавиши для компьютеров

      Чтобы использовать таблицу — Вам необходимо знать какая у вас материнская плата, версию BIOS. Узнать это можно несколькими путями, приведу самые быстрые:

        воспользоваться документацией, которая шла к вашему ПК/ноутбуку (если она еще сохранилась

    • воспользоваться какой-нибудь спец. утилитой для определения характеристик компьютера. Порекомендую Speccy

Speccy

Официальный сайт: https://www.piriform.com/speccy

Простая бесплатная программа, которая расскажет о вашем железе довольно много. Например, можно узнать информацию о: процессоре (CPU), оперативной памяти (Ram), материнской плате (Motherboard), видеокарте (Graphics), накопителях HDD, SSD (Storage) и пр. Кроме этого, можно узнать и контролировать в режиме онлайн температуру основных компонентов: жесткого диска, видеокарты, процессора.

Скриншот работы данной утилиты показан на рис. 2.

Рис. 2. Speccy — получение информации о материнской плате

Гайд по Unlock’y AMI BIOS/UEFI

Представляю Вашему вниманию подробное, пошаговое, написанное простым и доступным языком, руководство для разблокирования скрытых настроек AMI BIOS/UEFI. Составил его форумчанин lUNReal, за что ему низкий поклон. Статья выложена с его согласия и от его имени. Я лишь оформил, откорректировал, исправив некоторые грамматические и орфографические ошибки для удобства восприятия ) . Это руководство может оказаться полезным для некоторых продвинутых пользователей, которые не знают с чего начать и что потребуется для Unlock’a BIOS’a.

Для начала, нам следует сделать backup своего BIOS. Качаем утилиту BIOS_Backup_TooKit и сохраняем её на свой компьютер. Данная утилита запускается с правами администратора без режима совместимости. А теперь пошагово:

1) Открываем архив и видим что-то вроде того, что на рисунке ниже, в данном случае 1.rom И 2.rom это мои Backup’ы

2) Скорее всего, программа не сможет опознать наш BIOS, но это не страшно =) , если же программе это удалось, то следующий шаг пропускаем. Если программа распознала BIOS, но указала размер, отличающийся от размера файла нашего BIOS’a, то не обращаем на это внимания и так же пропускаем следующий шаг.

3) Если программа не смогла понять какой же у нас BIOS, то нужно выставить настройки вручную, для этого ставим галочку в правом верхнем углу окна и выбираем размер нашего BIOS’a (в моём случае 4096KB). У Вас он может быть другим, посмотреть размер Вашего файла BIOS можно на странице загрузок для Вашего устройства.

4) Теперь нужно считать данные самого BIOS, для этого нужно нажать клавишу Read (Чтение), а потом дождаться заполнения шкалы на 100%. Как только шкала заполнится, клавиша Backup станет активной.

5) Теперь жмём Backup и в диалоговом окне указываем название файла (желательно до 8 символов и латинскими буквами и/или цифрами) и куда его сохранить.

На этом мы закончим работу с данной утилитой. Просто, не правда ли? =) . Сразу хочу сказать, что полученный Backup нужно так же скопировать и сохранить рядом с разблокированным BIOS’ом, ибо в случае «фейла» Вам надо будет с чего-то восстановиться.

Прежде чем продолжить, проверяем. У нас должны быть готовы две копии нашего BIOS, назовём их, к примеру, biosmod.rom и biosorigin.rom где:
— biosmod — это версия модифицированного биоса
— biosorigin — это версия оригинального биоса для того, что бы мы могли в случае ошибки восстановить исходное состояние.

Теперь нам потребуется программа AMIBCP. Загружаем программу и запускаем.

1) Открываем файл biosmod.rom программой и видим следующую картину:

Поясню, что к чему:

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

Оранжевым контуром обозначено название конкретных опций Вашего BIOS, что бы Вы знали, что меняете )

Зелёным контуром обозначено состояние «Показать/Скрыть» конкретных функций BIOS

Синим контуром обозначен уровень доступа для каждой опции вашего BIOS — это нам и нужно.

2) Как я уже сказал в описании, нам необходимо поменять права доступа для ВСЕХ необходимых опций нашего BIOS. Делается это двойным кликом, менять мы будем из Default (по умолчанию) на User (пользователь).

Вся суть в том, что бы изменить уровень доступа (Access level) у ВСЕХ опций на USER во всех вкладках (меняем только там, где стояло default, там где пусто не трогаем).

3) Вот мы и сделали, всё у нас получилось и выглядит примерно вот так:

Мои поздравления! Вы разблокировали свой BIOS.

4) Сохраняем изменения. Для этого, либо во вкладе file жмём save, либо же просто выходим и программа сама предложит сохранить, сохранение выглядит примерно так:

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

1) Переходим в папку DOS и устанавливаем утилиту HP USB Disk Storage Format Tool, которая нам необходима для создания загрузочного DOS диска. После установки открываем утилиту от имени администратора и видим примерно следующее:

Тут нам следует выбрать нашу флешку, установить файловую систему FAT32, а так же поставить галочку quick format (быстрое форматирование). Не ставьте галочку в Create a Dos startup disk, нам это не нужно. Клацаем Start.

2) Вот мы получили USB диск с файловой системой FAT32, о чём нам, собственно, и говорит утилита:

3) Теперь копируем всё содержимое папки Flash на наш USB Диск, кроме папки DOS

4) Теперь находим 2 текстовых файла — origin и update. Первый нам необходим для восстановления BIOS из оригинального Backup’а, а второй для прошивки модифицированным. Файлы являются набором команд, поэтому после редактирования нужно изменить их расширение на .bat (origin.bat и update.bat).

4.1) Редактирование файла origin.txt

На этом скриншоте я выделил название файла Backup’а оригинального (не модифицированного) файла прошивки. Если у Вас название отличается — меняем на своё и сохраняем файл с расширением .bat

4.2) Редактирование файла update.txt

Тут то же самое, что и в п. 4.1, но только нужно указать файлы нашего Unlock BIOS’a который мы вскрывали утилитой AMIBCP в разделе 2. У меня в примере он назывался так, если у Вас иначе, то меняем название на своё и сохраняем файл с расширением .bat.

5) После того, как мы отредактировали файлы и списали в них названия наших Backup’ов BIOS’а, нам нужно закинуть сами BIOS’ы в корень диска. В конечном итоге получается примерно так:

Всё готово для прошивки! Идём ставить чайник, завариваем зелёный чай без сахара, дабы жизнь сладкой не казалась =)

Итак, у нас есть USB диск, на котором 2 версии Вашего BIOS, он в FAT32 и содержит все необходимые файлы. К сожалению, в данный момент у меня нет камеры, чтобы сделать фотографии самого процесса прошивки, поэтому буду описывать всё крайне подробно.

1) Перезагружаем компьютер. Как только Вы увидите логотип MSI, судорожно, с суровым лицом (как у Берии) жмём клавишу Del, пока не попадём в BIOS нашего ноутбука. Можно попробовать просто зажать её и держать, пока не появится окно BIOS.

2) Мы вошли, поздравляю, теперь переходим во вкладку Boot и меняем там режим с UEFI на Legacy (режим совместимости), жмём клавишу F10 и Enter, компьютер перезагружается.

3) Как только появился логотип, сразу жмём F11, и ждём. Сначала будет предложение нажать F12 (или F10, не помню)+Enter для перехода к сетевой карте (вроде как, можно подключить ПК к сети из UEFI), пропускаем и ждём. Как только все завершится, вы увидите графический интерфейс файлового менеджера Volkov Cammander, который очень похож на известный многим Total Commander.

4) Теперь самое главное. Теория файлов update и origin. Эти файлы нужны для того, чтобы запустить прошивальщик с указанными ключами и командами, а если по существу, то они нужны для некоторой автоматизации процесса, дабы не писать вам длинную команду из-под Dos =) . Для прошивки Unlock Вам необходимо набрать команду «update». Если появилась какая-либо ошибка, набираем «origin» и Ваш BIOS прошьётся оригиналом, но такого случиться не должно ))

5) Вот и всё, мы прошились. Ваш девайс выключился. Теперь отключаем от него зарядку и вынимаем батарею на 10-30 секунд, после этого подключаем их обратно и включаем. Как только появится логотип, жмём Del и входим в BIOS, и что мы видим? Правильно, скрытые настройки! Жмём F9, на всякий случай, — это установка оптимальных настроек, и подтверждаем клавишей Enter. Теперь можете делать всё, что Вашей душе угодно, но с ОСОБОЙ ОСТОРОЖНОСТЬЮ .

Время на прочтение
29 мин

Количество просмотров 476K

Здравствуй Хабр!

Одно из направлений моей компании — продажа технологических решений в области виртуализации. По долгу службы, приходится делать пилотные проекты или устраивать тестовые стенды. Недавно, компания 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. Но давайте не будем углубляться в технологии, отличные от тематики данной статьи.

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

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

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

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

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

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

Вы помните в лохматые годы мы прошивали свои системные блоки новыми биосами для материнских плат? Тогда на экране красовалась надпись, мол ни в коем случае не выключайте компьютер до окончания прошивания? Были случаи, когда по странному стечению обстоятельств именно в тот момент отключалось электричество… В итоге получали большой не функциональный ящик. Что делалось дальше — история умалчивает.

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

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

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

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

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

╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ 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: '<Enter> selects field.' ]
  Default value: '00:00:00', Type: 0x05
Date: 'System Date' [ QuestionId: '0x02', VarStore: '0xffff', Help: '<Enter> 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 с этого форума, где постоянно выкладывается текущая версия. Он вам будет нужен, чтобы разложить файл прошивки на его составляющие.
2. Вам нужен perl. Если у вас есть UNIX система, то все просто, если нет, то ActivePerl или Cygwin под Windows.
3. Вам нужен последний биос от вашего производителя.
4. Любой архиватор.

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

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

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

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

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

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

11. Теперь скачиваем исходный код моего

парсера

#!/usr/bin/perl
#
# Copyright (c) 2013 Nurlan Mukhanov (aka Falseclock) <nurike@gmail.com>
#
# Please inform me if you found error/mistakes or enhance this script.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

$| = 1;

use strict;
use warnings;
use utf8;
use Encode;
use Data::Dumper;
use vars qw($ROM $ROM_SIZE $IFR_PACKAGE_SIG @EFI_HII_PACKAGES %EFI_HII_PACKAGE_TYPE %LANGUAGES @EFI_HII_PACKAGE_FORMS %EFI $DEFAULT_LANGUAGE @STRINGS @TABS %TYPES);

################### !!! IMPORTANT !!! ###################
$IFR_PACKAGE_SIG = '$IFRPKG!';
#########################################################

$DEFAULT_LANGUAGE = 'en-US';
my $file = $ARGV[0] || "Setup.rom";

&SPECIFICATION_LOAD();

#---------------------------- MAIN PROGRAMM ----------------------------#

open($ROM, "<$file ") or die "ERROR : Cannot open $file.n";
{
	binmode $ROM;
	undef $/;
	$ROM_SIZE = -s $file;
}

#--------------------------------------------------------------------
# 1. Search IFR virtual package
my $header_offset = &IFR_PACKAGE_SIG();
print STDERR "IFR_PACKAGE_SIG not found!nExiting programm...n" and exit 1 if (!$header_offset);

#--------------------------------------------------------------------
# 2. Search EFI_HII_PACKAGE_HEADERs
@EFI_HII_PACKAGES = &EFI_HII_PACKAGES($header_offset);
#print Dumper(@EFI_HII_PACKAGES);

	
#=head
#--------------------------------------------------------------------
# 3. Parse EFI_HII_PACKAGE_STRINGS
#print "Parsing language tables..n";
%LANGUAGES = &EFI_HII_PACKAGE_STRINGS();
#printf "tFound %d languages: %sn", scalar keys %LANGUAGES, join ', ', sort keys %LANGUAGES;
@STRINGS = @{$LANGUAGES{$DEFAULT_LANGUAGE}->{'strings'}};

#print Dumper(@STRINGS);
#print Dumper(%LANGUAGES);

=head
# 3.1. Check languages length
my %length;
$length{$_} = scalar @{$LANGUAGES{$_}->{'strings'}}  foreach (keys %LANGUAGES);

my $warn = 0;

foreach (keys %length)
{
	next if $_ eq 'en-US';
	
	if ($length{$_} != $length{'en-US'})
	{
		if (!$warn)
		{
			printf STDERR "tWARNING: languages array length is different, must be %d elements:n", $length{'en-US'};
			$warn = 1;
		}
		printf "tt%s: (%d)n", $_, $length{$_} - $length{'en-US'};
	}
}
=cut
#--------------------------------------------------------------------
# 4. FORM packages parsing
@EFI_HII_PACKAGE_FORMS = &EFI_HII_PACKAGE_FORMS();

close($ROM); 

#-----------------------------------------------------------------------#
#-----------------------------------------------------------------------#

sub str2hex {
	return unpack ("H*", shift);
}

sub dec2bin {
    return unpack("B32", pack("N", shift));
}

sub bin2dec {
    return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}

sub oplength {
	my $data = shift;
	my $length = unpack("C", $data);
	
	return bin2dec(substr &dec2bin($length), -7);
	
}

sub EFI_IFR {
	my $data = shift;
	my $length = length($data);
	
	my @opcodes;
	
	#printf "length: %d, hex: %sn", length($data), join (' ', unpack("(H2)*",substr($data,0,10)));
	
	my $i = 0;

	while ($i < $length)
	{
		my %op;
		
		# Reading OPCODE
		$op{'opcode'} = unpack("C", substr($data,$i,1));
		$i++;
		
		# Reading length
		$op{'length'} = oplength(substr($data,$i,1));
		$i++;

		# Reading payload
		$op{'payload'} = substr($data,$i,$op{'length'}-2);
		$i += $op{'length'} -2;

		# Setting indent
		#$op{'indent'} = $INDENTS{$op{'opcode'}};
	
		push @opcodes, %op;
		
#		printf "Opcode: %02X, Length: %dn",$op{'opcode'} , $op{'length'};
#		my $www = <STDIN>;
	}
		
	return @opcodes;
}

sub EFI_HII_PACKAGE_FORMS {
	my @forms = ();
	
	foreach (@EFI_HII_PACKAGES)
	{
		my %pkg = %{$_};
		my %form;
		if ($_->{type} == 0x02)
		{
			# printf "EFI_HII_PACKAGE_FORMS offset int : %d, hex: (0x%08x)n",$pkg{'int_offset'},$pkg{'int_offset'};
			# Skeep first 4 bytes of FULLL_PACKAGE_LENGTH
					
			my $FORM_PACKAGE_LENGTH = unpack('I', (data($pkg{int_offset} + 4, 3).pack("H",0))   );
			my $FORM_PACKAGE_TYPE = unpack('C', (data($pkg{int_offset} + 7, 1))   );

			$form{'length'} = $FORM_PACKAGE_LENGTH;
			$form{'type'} = $FORM_PACKAGE_TYPE;
			
			#printf "  Form length: %s, type: %sn", $FORM_PACKAGE_LENGTH, $FORM_PACKAGE_TYPE;
			
			my $op_offset = $pkg{int_offset} + 8;
			my $op_length = ($FORM_PACKAGE_LENGTH - 4);
			
			$form{'opcodes'} = &EFI_IFR(data($op_offset,$op_length));
			$form{'package'} = $_;
			
			push @forms, %form;
		}
	}
	
	&EFI_IFR_FORM_SET(@forms);
	#print Dumper(@forms);
	
	return @forms;
}

sub EFI_IFR_FORM_SET {
	my $forms = shift;
	my @forms = @{$forms};
	
	#print Dumper(@forms);
	
	foreach my $form (@forms)
	{
		my %form = %{$form};
		my @ops = @{$form{'opcodes'}};
		
		foreach (@ops)
		{
			my %op = %{$_};
			&EFI_IFR_PRINT(%op,%{$form{'package'}});
		}
		print "n";
	}
}

sub fguid {
	my $guid = shift;
	
	my ($a, $b, $c, $d, $e);
	
	$a = unpack("H*",scalar reverse(substr($guid,0,4)));
	$b = unpack("H*",scalar reverse(substr($guid,4,2)));
	$c = unpack("H*",scalar reverse(substr($guid,6,2)));
	$d = unpack("H*",substr($guid,8,2));
	$e = unpack("H*",substr($guid,10,6));
	
	return sprintf("%s-%s-%s-%s-%s",$a,$b,$c,$d,$e);
}

sub EFI_HII_PACKAGE_STRINGS {
	my %pkg;
	
	foreach (@EFI_HII_PACKAGES)
	{
		%pkg = %{$_} and last if ($_->{type} == 0x04);
	}
	
	my $reader= 4;  # current reading offset
	
	my %languages;
	
	while ($reader < $pkg{size}) # read until we in package
	{
		my $LANG_PACKAGE_LENGTH = unpack('I', (data($pkg{int_offset} + $reader, 3).pack("H",0))   );
		my $LANG_PACKAGE_OFFSET = $pkg{int_offset} + $reader;
		
		#print $LANG_PACKAGE_LENGTH,"n";
		
		if ($LANG_PACKAGE_LENGTH)
		{
			$reader += (3 + 1 + 42);
			
			my $LANG_PACKAGE_NAME = (data($pkg{int_offset} + $reader, 5)); # skip 00 - end of header
			
			$languages{$LANG_PACKAGE_NAME} = {'offset' => $LANG_PACKAGE_OFFSET, 'length' => $LANG_PACKAGE_LENGTH, 'name' => $LANG_PACKAGE_NAME };
		}
		
		$reader += $LANG_PACKAGE_LENGTH - (3 + 1 + 42);
	}
	
	foreach (keys %languages)
	{
		my %lang = %{$languages{$_}};
		
		#print "Reading language from offset: ".$lang{'offset'}."n";
		#print "Language name is: ".$lang{'name'}."n";
		
		my $table = data($lang{'offset'}+46+6, $lang{'length'} - 46 - 6);
	
		my @table = unpack('(H2)*',$table);
		
		# Так как начало слова содержит флаг типа строки
		# и мы не можем сделать сплит всей строки, будем читать побайтно

		my @strings;
		my $position=0;
		my $word = undef;
		my $eof = 0;
		my $last = undef;
		my $skip = 0;
		my $word_start = 0;
		push @strings, undef;	# MEMEORY OFFSET CAN NOT BE 0
		
		my %EFI_HII_STRING_BLOCK = map { $_ => 1 } ('10', '11', '12', '13', '15', '16', '17', '22', '30', '31', '32', '40');
		
		for (my $l=0; $l < $#table; $l++)
		{
			my $byte = $table[$l];
			
			if ( exists($EFI_HII_STRING_BLOCK{$byte}) && !$word && $last ne '14')
			{
				print STDERR "Unexpected EFI_HII_STRING_BLOCK -> BlockType = $byte found!n";
				printf STDERR "String offset: %d (0x%08x)n", $lang{'offset'} + $l, $lang{'offset'} + $l;
				
				exit 1;
			}
			
			$last = $byte and $word_start = 1 and next if ($byte eq '14');		# EFI_HII_SIBT_STRING_UCS2

			if ($byte eq '21' && !$word && !$word_start )					# EFI_HII_SIBT_SKIP2
			{
				#print "SKEEP FOUNDn";
				$skip = hex($table[$l+1]);					# number of skips
				$l += 2;									# pass reading @table for next 2 bytes
				
				while ($skip)
				{
					push @strings, "EFI_HII_SIBT_SKIP2-$skip";
					$skip--;
				}
				next;
			}
			
			if ($byte eq '20' && !$word && !$word_start  )					# EFI_HII_SIBT_DUPLICATE
			{
				push @strings, $strings[$#strings];
				$l += 3;
				next;
			}
			
			# If word end
			if ($byte eq '00' && $table[$l+1] eq '00')
			{
				#print $word."n";
				
				push @strings, $word;
				
				$word = undef;
				$word_start = 0;
				$l++;
				next;
			}
			
			$word .= decode('utf-16le',pack("H*",$byte).pack("H*",$table[$l+1]));
			
			$l++;
		}
		$languages{$_}->{'strings'} = @strings;
	}

	return %languages;
	#print Dumper(%languages);
}

sub EFI_HII_PACKAGES {
	my $offset = shift;
	$offset += 8;

	my @address = ();
	
	while (1)
	{
		my $data = data($offset,8);
		my $hex = unpack("H*",$data);
		last if $hex !~ /^[ABCDEF0-9]{10}000000$/i;
		
		if ($hex =~ /^[ABCDEF0-9]{6}8001000000$/i)
		{
			push @address, substr ((join '', (reverse ($hex =~ m/../g))), 10);
			
			#my $address = substr ((join '', (reverse ($hex =~ m/../g))), 10);
			#printf "$address - %sn", hex($address);
		}
		$offset += 8;
	}
	my @pkg = ();
	foreach (@address)
	{
		my %pkg;
		$pkg{int_offset} = hex($_);
		$pkg{hex_offset} = $_;
		$pkg{size} = unpack("I*",data(hex($_),4));
		$pkg{type} = unpack("C", data( hex($_)+7 , 1 ));
		$pkg{type_name} = $EFI_HII_PACKAGE_TYPE{$pkg{type}}->{name};
		$pkg{type_text} = $EFI_HII_PACKAGE_TYPE{$pkg{type}}->{text};
		
		push @pkg, %pkg;
	}
	
	return @pkg;
}

sub IFR_PACKAGE_SIG {
	my $i = 0;
	my $offset = 0;
	my $seek = undef;
	my @sig = split //, $IFR_PACKAGE_SIG;
	
	while ($i <= $ROM_SIZE)
	{
		my $byte = data($i,1);
		#last unless $byte;

		# If we found start of header
		if ($byte eq '$')
		{
			$offset = $i;									# Store current offset
			$seek = $byte;									# Store begining of the signature
			$i++;
			next;
		}
		
		if ($offset)										# just to save CPU time
		{
			if (scalar grep $byte eq $_, @sig)
			{
				$seek .= $byte if ($IFR_PACKAGE_SIG =~ $seek.$byte );
				last if ($IFR_PACKAGE_SIG eq $seek );
			}
			else
			{
				$offset = 0;
				$seek = undef;
			}
		}
		$i++;
	}
	
	#printf "nIFR_PACKAGE_SIG found at offset: %d (0x%08x)n", ($offset, $offset) if $offset;

	return $offset;
}

sub data {
	my $offset = shift;
	my $length = shift;
	my $data;
	
	seek $ROM, $offset, 0; 
	sysread $ROM, $data, $length;
	
	return $data;
};

sub TabSpace {
	# Pushing 
	push @TABS, shift;
	
	return '    ' x (scalar @TABS - 1);
}

sub TabClose {
	my $length = scalar @TABS;
	my $return = "";
	
	if ($length)
	{
		my $opcode = pop @TABS;
	
		if ($opcode == $EFI{EFI_IFR_GRAY_OUT_IF_OP})
		{
			$return = sprintf "xE2x94x94- END IF Grayout;n";
		}
		elsif ($opcode == $EFI{EFI_IFR_SUPPRESS_IF_OP})
		{
			$return = sprintf "xE2x94x94- END IF Suppress;n";
		}
		else
		{
			$return = "What the fuck?";
		}
	}
	return $return;
}

sub EFI_IFR_PRINT
{
	my $op = shift;
	my $package = shift;
	my $TabSpace = '';
	
	my %op = %{$op};
	my %package = %{$package};
	
	if ($op{'opcode'} != $EFI{EFI_IFR_FORM_SET_OP} and scalar @TABS) {
		
		if ($op{'opcode'} == $EFI{EFI_IFR_SUPPRESS_IF_OP} or $op{'opcode'} == $EFI{EFI_IFR_GRAY_OUT_IF_OP})
		{
			$TabSpace = sprintf "|";
		}
		elsif ( $op{'opcode'} == $EFI{EFI_IFR_END_OP} )
		{
			$TabSpace = sprintf  "%s",'|    ' x (scalar @TABS - 1 );
		}
		else
		{
			$TabSpace = sprintf  "%s",'|    ' x (scalar @TABS);
		}
		
		print $TabSpace;
	}

	if    ($op{'opcode'} == $EFI{EFI_IFR_FORM_SET_OP})			{	# 0x0E
		my $Guid = substr($op{'payload'},0,16);
		my $FormSetTitle = unpack("S2",substr($op{'payload'},16,2));
		my $Help = unpack("S2",substr($op{'payload'},18,2));
		my $Flags = substr($op{'payload'},20,2);
		my $ClassGuid = substr($op{'payload'},22,16);
	
		printf "nxE2x95x94%sxE2x95x97n","xE2x95x90"x116;
		printf "x{E2}x{95}x{91} FormSet: '%-62sGUID: %s xE2x95x91n", ($STRINGS[$FormSetTitle]."'", fguid($Guid));
		printf "x{e2}x{95}x{9f}%sx{e2}x{95}x{a2}n","x{e2}x{94}x{80}"x116;
		

		if ($STRINGS[$Help] and $STRINGS[$Help] ne ' ')
		{
			printf " \Help text: '%s'n", $STRINGS[$Help];
		}
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_GUID_OP})				{	# 0x5F
		my $Guid = substr($op{'payload'},0,16);
		my $Data = unpack("H*", substr($op{'payload'},16));
		#printf "x{E2}x{95}x{91} Operation data: '%-55sGUID: %s xE2x95x91n", $Data, &fguid($Guid);
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_DEFAULTSTORE_OP})		{	# 0x5C
		my $DefaultId = unpack("S2", substr($op{'payload'},2,2));
		my $DefaultName = unpack("S2", substr($op{'payload'},2,2));
		#printf "EFI_IFR_DEFAULTSTORE_OP, length: %d, DefaultId: %s, DefaultName: %s n",length($op{'payload'}),$DefaultId,$DefaultName ;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_VARSTORE_OP})			{	# 0x24
		# typedef struct _EFI_IFR_VARSTORE {
		#   EFI_IFR_OP_HEADER        Header;
		#   EFI_GUID                 Guid;
		#   EFI_VARSTORE_ID          VarStoreId;
		#   UINT16                   Size;
		#   UINT8                    Name[1];
		# } EFI_IFR_VARSTORE;
		#printf "EFI_IFR_VARSTORE_OP, length: %d n",length($op{'payload'});

		my $Guid = substr($op{'payload'},0,16);
		my $VarStoreId = unpack("S2", substr($op{'payload'},16,2));
		my $Size = unpack("S2", substr($op{'payload'},18,2));
		my $Name = substr($op{'payload'},20,12);
		
		printf "x{E2}x{95}x{91} VarStore Id: '0x%x', Size: '%s', Name: '%s'                GUID: %s x{E2}x{95}x{91}n", $VarStoreId, $Size, $Name, &fguid($Guid);
		printf "xE2x95x9A%sxE2x95x9Dn","xE2x95x90"x116;

	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_FORM_OP})				{	# 0x01
		my $FormId = unpack("S2",substr($op{'payload'},0,2));
		my $FormTitle = unpack("S2",substr($op{'payload'},2,2));
		printf "x{e2}x{94}x{8c}%sx{e2}x{94}x{90}n","x{e2}x{94}x{80}"x116;
		printf "x{e2}x{94}x{82} Form Name: '%-86s [ ID: '0x%04x' ]x{e2}x{94}x{82}n", ($STRINGS[$FormTitle]."'", $FormId);
		printf "x{e2}x{94}x{94}%sx{e2}x{94}x{98}n","x{e2}x{94}x{80}"x116;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_GRAY_OUT_IF_OP})		{	# 0x19
		printf "%sx{E2}x{94}x{8C}- Grayout IF:n",TabSpace($op{'opcode'});
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_SUPPRESS_IF_OP})		{	# 0x0A
		printf "%sxE2x94x8C- Suppress IF:n",TabSpace($op{'opcode'});
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_END_OP})				{	# 0x29
		printf "%s",&TabClose($op{'opcode'});
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_EQ_ID_VAL_OP})			{	# 0x12
		my $QuestionId =  unpack("S2",substr($op{'payload'},0,2));
		my $Value =  unpack("S2",substr($op{'payload'},2,2));
		printf "Question [ ID: '0x%02x' ] == 0x%02xn", $QuestionId, $Value,;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_AND_OP})				{	# 0x15
		printf "AND expressionn";
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_SUBTITLE_OP})			{	# 0x02
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));

		printf "Subtitle: '%s'n", ($STRINGS[$Prompt]) if defined $STRINGS[$Prompt] and $STRINGS[$Prompt] ne ' ';
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_DEFAULT_OP})			{	# 0x5B
		my $DefaultId = unpack("S2",substr($op{'payload'},0,2));
		my $Type = unpack("C",substr($op{'payload'},2,1));
		my $value;
		if ($Type == 0) {
			$value = unpack("C",substr($op{'payload'},3,1));
		} 
		elsif ($Type == 1) {
			$value = unpack("S2",substr($op{'payload'},3,2));
		}
		elsif ($Type == 2) {
			$value = unpack("S2",substr($op{'payload'},3,2));
		}
		elsif ($Type == 5) {
			$value = sprintf("%02d",unpack("C",substr($op{'payload'},3,1))).':'.sprintf("%02d",unpack("C",substr($op{'payload'},4,1))).':'.sprintf("%02d",unpack("C",substr($op{'payload'},5,1)));
		}
		elsif ($Type == 6) {
			$value = unpack("S2",substr($op{'payload'},3,2)).'/'.sprintf("%02d",unpack("C",substr($op{'payload'},5,1))).'/'.sprintf("%02d",unpack("C",substr($op{'payload'},6,1)));
		}
		else {
			$value = unpack("S*",substr($op{'payload'},3,4));
		}
		printf "  Default value: '%s', Type: 0x%02xn",$value, $Type;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_TRUE_OP})				{	# 0x46
		printf "EQ == TRUEn";
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_TEXT_OP})				{	# 0x03
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));
		my $TextTwo = unpack("S2",substr($op{'payload'},4,2));
		my $t2 = "";
		$t2 = $STRINGS[$TextTwo] if (defined $STRINGS[$TextTwo]);
		printf "Text: '%-32.32sDefault: '%-32.32sHelp: '%s'n", $STRINGS[$Prompt]."'", $t2."'", $STRINGS[$Help];
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_UINT64_OP})			{	# 0x45
		my $Value = $op{'payload'};
		printf "VALUE = %sn", unpack("S*",$Value);
		
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_EQUAL_OP})				{	# 0x2F
		printf "EQUAL expressionn";
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_EQ_ID_LIST_OP})		{	# 0x14

		my $QuestionId = unpack("S2", substr($op{'payload'},0,2));
		my $ListLength = unpack("S2", substr($op{'payload'},2,2));
		my @ValueList = unpack("(S4)*", substr($op{'payload'},4));
		@ValueList = map {sprintf "'0x%02x'", $_ } @ValueList;
		
		printf "LIST [ ID: '0x%02x' ] in (%s)n",$QuestionId, join ",", @ValueList;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_OR_OP})				{	# 0x16
		printf "OR expressionn";
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_NOT_OP})				{	# 0x17
		printf "NOT expression n";
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_TIME_OP})				{# 0x1b
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));
		my $QuestionId = unpack("S2",substr($op{'payload'},4,2));
		my $VarStoreId = unpack("S2",substr($op{'payload'},8,2));
		
		#my $VarName = unpack("S2",substr($op{'payload'},8,1));
		#my $VarOffset = unpack("S2",substr($op{'payload'},9,1));
		#my $Flags = unpack("S2",substr($op{'payload'},9,1));
	
		printf "Time: '%s' [ QuestionId: '0x%02x', VarStore: '0x%02x', Help: '%s' ]n", $STRINGS[$Prompt],$QuestionId,$VarStoreId,$STRINGS[$Help] ;		
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_DATE_OP})				{# 0x1A
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));
		my $QuestionId = unpack("S2",substr($op{'payload'},4,2));
		my $VarStoreId = unpack("S2",substr($op{'payload'},8,2));
		
		#my $VarName = unpack("S2",substr($op{'payload'},8,1));
		#my $VarOffset = unpack("S2",substr($op{'payload'},9,1));
		#my $Flags = unpack("S2",substr($op{'payload'},9,1));
	
		printf "Date: '%s' [ QuestionId: '0x%02x', VarStore: '0x%02x', Help: '%s' ]n", $STRINGS[$Prompt],$QuestionId,$VarStoreId,$STRINGS[$Help] ;	
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_NUMERIC_OP})			{# 0x07
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));
		my $QuestionId = unpack("S2",substr($op{'payload'},4,2));
		my $VarStoreId = unpack("S2",substr($op{'payload'},8,2));
		#my $VarStoreInfo = unpack("C",substr($op{'payload'},10,1));

		my $Type = unpack("C",substr($op{'payload'},11,1));
		my $MinValue = unpack("C",substr($op{'payload'},12,1));
		my $MaxValue = unpack("C",substr($op{'payload'},13,1));
		my $Step = unpack("C",substr($op{'payload'},14,1));

		printf "Number question: Prompt: %s, Help: %sn",($STRINGS[$Prompt], $STRINGS[$Help]) if $Prompt;
		printf "%s x{E2}x{94}x{94}- [ QuestionId: '0x%02x', VarStore: '0x%02x' , Type: '%02x', MinValue: '%d', MaxValue: '%d', Step: '%d' ]n",($TabSpace,$QuestionId, $VarStoreId, $Type,$MinValue, $MaxValue, $Step) if $Prompt;;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_REF_OP})				{# 0x0F
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));
		my $QuestionId = unpack("S2",substr($op{'payload'},4,2));
		my $VarStoreId = unpack("S2",substr($op{'payload'},8,2));
		
		my $FormId = unpack("S2>*!",substr($op{'payload'},11,4));
		
		printf "Reference: '%s' [ FormID: '0x%04x', QuestionId: '0x%02x', VarStore: '0x%02x' ]n", $STRINGS[$Prompt], $FormId, $QuestionId, $VarStoreId;
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_ACTION_OP})			{# 0x0C
		my $Prompt = unpack("S2",substr($op{'payload'},0,2));
		my $Help = unpack("S2",substr($op{'payload'},2,2));
		my $QuestionId = unpack("S2",substr($op{'payload'},4,2));
		my $VarStoreId = unpack("S2",substr($op{'payload'},8,2));
		#my $VarStoreInfo = unpack("C",substr($op{'payload'},8,1));
		
		printf "Action: '%-32.32s [ QuestionId: '0x%02x', VarStore: '0x%02x', Help: %s ] n", ($STRINGS[$Prompt]."'", $QuestionId,$VarStoreId, $STRINGS[$Help]);
		#printf "%s x{E2}x{94}x{94}- n", ($TabSpace if $STRINGS[$Prompt];
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_PASSWORD_OP})			{# 0x08
		my $Prompt = unpack("S2", substr($op{'payload'},0,2));
		my $Help    = unpack("S2", substr($op{'payload'},2,2));
		my $VarStoreId = unpack("S2", substr($op{'payload'},8,2));
		printf "Password: %-32.32s [ VarStore: '0x%02x', Help: '%s']n", ($STRINGS[$Prompt], $VarStoreId, $STRINGS[$Help]);
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_ONE_OF_OP}) {			# 0x05
		my $Prompt = unpack("S2", substr($op{'payload'},0,2));
		my $Help    = unpack("S2", substr($op{'payload'},2,2));
		my $QuestionId = unpack("S2", substr($op{'payload'},4,2));
		my $VarStoreId = unpack("S2", substr($op{'payload'},8,2));
#		my $VarOffset    = unpack("S2", substr($op{'payload'},4,2));
		
		printf "Select option: '%-32.32s[ VarStore: '0x%02x', QuestionId: '0x%02x',   Help: '%s']n", ($STRINGS[$Prompt]."'", $VarStoreId, $QuestionId, (defined $STRINGS[$Help] ? $STRINGS[$Help] : '' ));
	}
	elsif ($op{'opcode'} == $EFI{EFI_IFR_ONE_OF_OPTION_OP}) {	# 0x09
		my $Option	= unpack("S2", substr($op{'payload'},0,2));
		my $Flags	= str2hex(substr($op{'payload'},2,1));
		my $Type	= unpack("C", substr($op{'payload'},3,1));
		my $Value	= unpack("C*", substr($op{'payload'},4,8));

#			oid, value, flags, key = struct.unpack("<HHBH", self.payload)
#			print ts+"Option '%s' = 0x%x Flags 0x%x Key 0x%x"%(s[oid], value, flags, key)
		
		printf "  Option: '%-37.37s[ Value: '%s'   Default: '%-6s    Type: '%-6.6s ]n", ($STRINGS[$Option]."'", $Value, ($Flags eq '10' ? 'true' : 'false')."'", $TYPES{$Type}."'");

	}
	else {
		printf "--> UNKNOWN OPCODE: %02X, length: %dn", $op{'opcode'}, $op{'length'};
		exit 1;
	}
}

sub SPECIFICATION_LOAD
{
	$EFI{EFI_IFR_FORM_OP}                 = 0x01;
	$EFI{EFI_IFR_SUBTITLE_OP}             = 0x02;
	$EFI{EFI_IFR_TEXT_OP}                 = 0x03;
	$EFI{EFI_IFR_IMAGE_OP}                = 0x04;
	$EFI{EFI_IFR_ONE_OF_OP}               = 0x05;
	$EFI{EFI_IFR_CHECKBOX_OP}             = 0x06;
	$EFI{EFI_IFR_NUMERIC_OP}              = 0x07;
	$EFI{EFI_IFR_PASSWORD_OP}             = 0x08;
	$EFI{EFI_IFR_ONE_OF_OPTION_OP}        = 0x09;
	$EFI{EFI_IFR_SUPPRESS_IF_OP}          = 0x0A;
	$EFI{EFI_IFR_LOCKED_OP}               = 0x0B;
	$EFI{EFI_IFR_ACTION_OP}               = 0x0C;
	$EFI{EFI_IFR_RESET_BUTTON_OP}         = 0x0D;
	$EFI{EFI_IFR_FORM_SET_OP}             = 0x0E;
	$EFI{EFI_IFR_REF_OP}                  = 0x0F;
	$EFI{EFI_IFR_NO_SUBMIT_IF_OP}         = 0x10;
	$EFI{EFI_IFR_INCONSISTENT_IF_OP}      = 0x11;
	$EFI{EFI_IFR_EQ_ID_VAL_OP}            = 0x12;
	$EFI{EFI_IFR_EQ_ID_ID_OP}             = 0x13;
	$EFI{EFI_IFR_EQ_ID_LIST_OP}           = 0x14;
	$EFI{EFI_IFR_AND_OP}                  = 0x15;
	$EFI{EFI_IFR_OR_OP}                   = 0x16;
	$EFI{EFI_IFR_NOT_OP}                  = 0x17;
	$EFI{EFI_IFR_RULE_OP}                 = 0x18;
	$EFI{EFI_IFR_GRAY_OUT_IF_OP}          = 0x19;
	$EFI{EFI_IFR_DATE_OP}                 = 0x1A;
	$EFI{EFI_IFR_TIME_OP}                 = 0x1B;
	$EFI{EFI_IFR_STRING_OP}               = 0x1C;
	$EFI{EFI_IFR_REFRESH_OP}              = 0x1D;
	$EFI{EFI_IFR_DISABLE_IF_OP}           = 0x1E;
	$EFI{EFI_IFR_ANIMATION_OP}            = 0x1F;
	$EFI{EFI_IFR_TO_LOWER_OP}             = 0x20;
	$EFI{EFI_IFR_TO_UPPER_OP}             = 0x21;
	$EFI{EFI_IFR_MAP_OP}                  = 0x22;
	$EFI{EFI_IFR_ORDERED_LIST_OP}         = 0x23;
	$EFI{EFI_IFR_VARSTORE_OP}             = 0x24;
	$EFI{EFI_IFR_VARSTORE_NAME_VALUE_OP}  = 0x25;
	$EFI{EFI_IFR_VARSTORE_EFI_OP}         = 0x26;
	$EFI{EFI_IFR_VARSTORE_DEVICE_OP}      = 0x27;
	$EFI{EFI_IFR_VERSION_OP}              = 0x28;
	$EFI{EFI_IFR_END_OP}                  = 0x29;
	$EFI{EFI_IFR_MATCH_OP}                = 0x2A;
	$EFI{EFI_IFR_GET_OP}                  = 0x2B;
	$EFI{EFI_IFR_SET_OP}                  = 0x2C;
	$EFI{EFI_IFR_READ_OP}                 = 0x2D;
	$EFI{EFI_IFR_WRITE_OP}                = 0x2E;
	$EFI{EFI_IFR_EQUAL_OP}                = 0x2F;
	$EFI{EFI_IFR_NOT_EQUAL_OP}            = 0x30;
	$EFI{EFI_IFR_GREATER_THAN_OP}         = 0x31;
	$EFI{EFI_IFR_GREATER_EQUAL_OP}        = 0x32;
	$EFI{EFI_IFR_LESS_THAN_OP}            = 0x33;
	$EFI{EFI_IFR_LESS_EQUAL_OP}           = 0x34;
	$EFI{EFI_IFR_BITWISE_AND_OP}          = 0x35;
	$EFI{EFI_IFR_BITWISE_OR_OP}           = 0x36;
	$EFI{EFI_IFR_BITWISE_NOT_OP}          = 0x37;
	$EFI{EFI_IFR_SHIFT_LEFT_OP}           = 0x38;
	$EFI{EFI_IFR_SHIFT_RIGHT_OP}          = 0x39;
	$EFI{EFI_IFR_ADD_OP}                  = 0x3A;
	$EFI{EFI_IFR_SUBTRACT_OP}             = 0x3B;
	$EFI{EFI_IFR_MULTIPLY_OP}             = 0x3C;
	$EFI{EFI_IFR_DIVIDE_OP}               = 0x3D;
	$EFI{EFI_IFR_MODULO_OP}               = 0x3E;
	$EFI{EFI_IFR_RULE_REF_OP}             = 0x3F;
	$EFI{EFI_IFR_QUESTION_REF1_OP}        = 0x40;
	$EFI{EFI_IFR_QUESTION_REF2_OP}        = 0x41;
	$EFI{EFI_IFR_UINT8_OP}                = 0x42;
	$EFI{EFI_IFR_UINT16_OP}               = 0x43;
	$EFI{EFI_IFR_UINT32_OP}               = 0x44;
	$EFI{EFI_IFR_UINT64_OP}               = 0x45;
	$EFI{EFI_IFR_TRUE_OP}                 = 0x46;
	$EFI{EFI_IFR_FALSE_OP}                = 0x47;
	$EFI{EFI_IFR_TO_UINT_OP}              = 0x48;
	$EFI{EFI_IFR_TO_STRING_OP}            = 0x49;
	$EFI{EFI_IFR_TO_BOOLEAN_OP}           = 0x4A;
	$EFI{EFI_IFR_MID_OP}                  = 0x4B;
	$EFI{EFI_IFR_FIND_OP}                 = 0x4C;
	$EFI{EFI_IFR_TOKEN_OP}                = 0x4D;
	$EFI{EFI_IFR_STRING_REF1_OP}          = 0x4E;
	$EFI{EFI_IFR_STRING_REF2_OP}          = 0x4F;
	$EFI{EFI_IFR_CONDITIONAL_OP}          = 0x50;
	$EFI{EFI_IFR_QUESTION_REF3_OP}        = 0x51;
	$EFI{EFI_IFR_ZERO_OP}                 = 0x52;
	$EFI{EFI_IFR_ONE_OP}                  = 0x53;
	$EFI{EFI_IFR_ONES_OP}                 = 0x54;
	$EFI{EFI_IFR_UNDEFINED_OP}            = 0x55;
	$EFI{EFI_IFR_LENGTH_OP}               = 0x56;
	$EFI{EFI_IFR_DUP_OP}                  = 0x57;
	$EFI{EFI_IFR_THIS_OP}                 = 0x58;
	$EFI{EFI_IFR_SPAN_OP}                 = 0x59;
	$EFI{EFI_IFR_VALUE_OP}                = 0x5A;
	$EFI{EFI_IFR_DEFAULT_OP}              = 0x5B;
	$EFI{EFI_IFR_DEFAULTSTORE_OP}         = 0x5C;
	$EFI{EFI_IFR_FORM_MAP_OP}             = 0x5D;
	$EFI{EFI_IFR_CATENATE_OP}             = 0x5E;
	$EFI{EFI_IFR_GUID_OP}                 = 0x5F;
	$EFI{EFI_IFR_SECURITY_OP}             = 0x60;

	%EFI_HII_PACKAGE_TYPE = 
	(
		0x00	=> { name => 'EFI_HII_PACKAGE_TYPE_ALL'				, text => 'Pseudo-package type' },
		0x01	=> { name => 'EFI_HII_PACKAGE_TYPE_GUID'			, text => 'Package type where the format of the data is specified using a GUID immediately following the package header' },	
		0x02	=> { name => 'EFI_HII_PACKAGE_FORMS'				, text => 'Forms package' },
		0x04	=> { name => 'EFI_HII_PACKAGE_STRINGS'				, text => 'Strings package' },
		0x05	=> { name => 'EFI_HII_PACKAGE_FONTS'				, text => 'Fonts package' },
		0x06	=> { name => 'EFI_HII_PACKAGE_IMAGES'				, text => 'Images package' },
		0x07	=> { name => 'EFI_HII_PACKAGE_SIMPLE_FONTS'			, text => 'Simplified (8x19, 16x19) Fonts package' },
		0x08	=> { name => 'EFI_HII_PACKAGE_DEVICE_PATH'			, text => 'Binary-encoded device path' },
		0x09	=> { name => 'EFI_HII_PACKAGE_KEYBOARD_LAYOUT'		, text => 'Used to mark the end of a package list' },
		0x0A	=> { name => 'EFI_HII_PACKAGE_ANIMATIONS'			, text => 'Animations package' },
		0xDF	=> { name => 'EFI_HII_PACKAGE_END'					, text => 'Package types reserved for use by platform firmware implementations' },
		0xE0	=> { name => 'EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN'	, text => 'Package types reserved for use by platform firmware implementations' },
	);

%TYPES = 
(
	0x00 => 'int8',
    0x01 => 'int16',
    0x02 => 'int32',
    0x03 => 'int64',
    0x04 => 'bool',
    0x05 => 'time',
    0x06 => 'date',
    0x07 => 'string',
	0x08 => 'other',
);
}

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
5. Кладем в папку Boot
6. Перегружаемся в BIOS, включаем Legacy и отключаем Secure Boot.
7. Сохраняемся и загружаемся через флешку.
8. После загрузки вы должны увидеть желтый текст на черном экране

> Welcome to GRUB!
>
> Entering rescue mode...
> error: file not found
> 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. Например вам надо запретить дискретный видеоадаптер. За этот пункт отвечает следующие строки:

Select option: 'Special Features'               [ VarStore: '0x1e6', QuestionId: '0x92',   Help: 'Enable Switch Graphic Function']
  Option: 'Disabled'                            [ Value: '0'   Default: 'false'    Type: 'int8'  ]
  Option: 'Enabled'                             [ Value: '1'   Default: 'true'     Type: 'int8'  ]

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

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

Select option: 'Numlock'                        [ VarStore: '0x08', QuestionId: '0x10',   Help: 'Selects Power-on state for Numlock']
  Option: 'Off'                                 [ Value: '0'   Default: 'false'    Type: 'int8'  ]
  Option: 'On'                                  [ Value: '1'   Default: 'true'     Type: 'int8'  ]

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

Эпилог

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

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

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

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

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

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

Содержание

  1. Способы обхода паролей BIOS
  2. Как разблокировать скрытые функции BIOS
  3. Практика
  4. Заключение
  5. Разблокируем скрытые настройки БИОС
  6. реклама
  7. Способ 1. Простой требуется: программа AMIBCP и навык прошивки МП
  8. реклама
  9. реклама
  10. реклама
  11. Способ 2. Сложный (для разделов) то же + UEFITool, IFR-Extractor и HEX-редактор
  12. Если AMIBCP не работает
  13. О прошивке
  14. Изучаем своё железо: сброс паролей BIOS на ноутбуках
  15. «Ремонт» Lenovo IdeaPad 110-17ACL
  16. HP Probook, HP Elitebook
  17. Как установить, удалить и сбросить пароль в БИОС (BIOS)?
  18. Как сбросить пароль БИОС ноутбука и компьютера
  19. Последствия потерянного пароля BIOS
  20. Общая информация
  21. Способ 1: используем инженерный пароль
  22. Сброс пароля BIOS с помощью батарейки CMOS
  23. Как убрать пароль BIOS с помощью джампера
  24. Как снять пароль с БИОСа программным методом
  25. Использование инструмента debug.exe в Windows
  26. Использование утилиты PC CMOS Cleaner
  27. Очистка пароля BIOS с помощью сервисов
  28. Мастер-пароли
  29. Как пользоваться генератором для мастер-паролей BIOS?
  30. Данный генератор мастер-пароля BIOS позволяет:
  31. Принцип работы генератора мастер-паролей
  32. Как проверить работоспособность скрипта?
  33. Как сбросить пароль BIOS на ноутбуке или компьютере Acer
  34. Обратиться к производителю системной платы или ноутбука
  35. Обращаемся за помощью к специалистам

Способы обхода паролей BIOS

Невзирая на то, что BIOS является мощным средством защиты, существуют способы обхода установленного в ней пароля.
Иногда любопытные или стремящиеся максимально защитить свои данные пользователи ставят пароли на всём, на чём только можно, но нередко эти пароли ими забываются. Тяжело переносится забытие пароля на BIOS (пароль на загрузку системы), зачастую это может привести к покупке новой материнской платы, однако этого можно избежать воспользовавшись слабостями архитектуры построения ЭВМ и преднамеренно оставленными разработчиками «чёрными ходами».

Полагаю, что всем (или почти всем) обитателям Хабрахабра известно, что пароль BIOS (так же, как и иные основные настройки системы) хранится в памяти CMOS (Complimentary Matal-Oxide-Semiconductor — Комплиментарный Металло-Оксидный Полупроводник), которая требует постоянной подпитки батарейкой, установленной на материнской плате.

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

Способ 1 — Метод Чубайса

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

Способ эффективный, но долгий, а время, как известно, очень ценный ресурс и пользователь, как и IT специалист не всегда обладает им. Эти особенности делают этот способ не очень практичным и скорее крайним средством, чем реальной практикой. К тому же батарейку на некоторых моделях материнских плат бывает крайне сложно извлечь без использования дополнительных инструментов, поэтому есть смысл прибегнуть к способу, который описывается в инструкциях к материнским платам:

Способ 2 — Аварийная кнопка

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

Если же вы оказались счастливчиком, которому часто попадаются редкие ситуации или вы просто не ищете лёгких путей, то для вас есть ещё один способ (описанный в книге goldenshara.com/viewtopic.php?t=7802):

Способ 3 — Инженерный пароль

Заключается во вводе вместо забытого пароля BIOS инженерного пароля для данной системной платы:

AWARD
_award Condo
01322222 d8on
589589 HLT
589721 J262
595595 J332
ALFAROME J64
Ally Lkwpeter
ALLY LKWPETER
aLLy Pint
aPAf PINT
AWARD PW SER
AWARD SW SKY_FOX
AWARD_SW SYXZ
Awkward BIOSTAR TTPTHA
CONCAT ZJAAADC
AMI
A.M.I. CONDO
AAAMMMIII HEWINTT RAND
AMI LKWPETER
AMI?SW PASSWORD
AMI_SW SER
BIOS

Однако стоить помнить, что данные пароли работают только на BIOS версии 4,55G и ниже (класс системных плат до i845P чипсета).

Способ 4 — Вспомним старину

Ещё один из методов сброса пароля заключается в использовании среды DOS. Для этого необходимо загрузиться в среду DOS (чистую DOS, а не эмулированную из-под Windows) и ввести такие команды:

* AWARD и AMI BIOS:
DEBUG
-O 70 17
-O 71 17
Q

* Phoenix BIOS:
DEBUG
-O 70 FF
-O 71 FF
Q

Источник

Как разблокировать скрытые функции BIOS

Программный код BIOS (Basic Input/Output System) рождается в лабораториях разработчиков.
Наиболее известные из них — фирмы Award и AMI.

Затем каждый производитель материнских плат адаптирует BIOS к конкретной модели и по своему усмотрению отключает (блокирует) определенные функции.

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

1a07

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

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

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

Обладателям Award BIOS понадобится утилита Modbin, а для тех, у кого на компьютере установлена AMI BIOS, необходимо скачать программу AMIBCP.
Интересен тот факт, что утилита AMIBCP разработана программистами самой фирмы AMI.

Практика

Прежде всего, следует подготовить необходимое программное обеспечение.
Для модификации потребуются утилита для обновления («прошивальщик»), файл с действующей версией BIOS и утилита для модификации.

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

Утилиты для модификации BIOS можно скачать из Интернета.

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

В качестве примера рассмотрим случай, когда на компьютере установлена AMI BIOS.
Что касается BIOS от Award, то принцип модификации аналогичен, и в этой статье рассматриваться не будет.

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

Автор: А. Горячкин
Источник: Журнал «Радио»

Источник

Разблокируем скрытые настройки БИОС

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

реклама

Естественно, пытливого юзера не может устраивать такое злодейское ограничение пользовательской свободы. В связи с чем предлагаю рассмотреть способы обхода этих искусственных препон. Рассматривать будем на примере плат Intel 100-300 чипсетов. Аспекты работы с AMIBCP общеприменимы.

Способ 1. Простой
требуется: программа AMIBCP и навык прошивки МП

Качаем подходящую версию AMIBCP. В нашем случае v5.02.

реклама

File → Open… (файл_биос)

Слева представлено структурное меню БИОС. Сопоставляя названия с фактически наблюдаемыми при входе в БИОС, определяем главный блок.

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

реклама

Для открытия элемента достаточно поменять значение в колонке Access/Use на USER:

Обратите внимание, на разделы, описанные как бы наравне с главным, есть ссылки в теле главного блока. Т.е. доступ к ним получить можно. Например, по пути Setup → Advanced → System Agent (SA) Configuration → Memory Configuration большой раздел с настройками памяти.

реклама

Помимо открытия доступа к настройкам, AMIBCP позволяет изменить значения настроек по умолчанию, переименовать параметры и разделы.

Этим способом можно открыть только те настройки, которые непосредственно прописаны в главном блоке.

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

Подменим доступный раздел скрытым. «Пожертвуем», к примеру, подменю USB Configuration (Setup → Peripherals).

Определились с тем, что хотим открыть, определились, что хотим закрыть. К делу!

UEFITool

Извлекаем и сохраняем модуль: *ПКМ* → Extract Body (to SPF.bin)

Ищем второй модуль по GUID: *Ctrl+F* → GUID=899407D7-99FE-43D8-9A21-79EC328CAC21

GUID модуля может отличаться, в этом случае вести поиск по сигнатуре Setup.

Модуль → PE32 Image Section → *ПКМ* → Extract Body (to Setup.bin)

IFR-Extractor

*открыть* → Setup.bin → Extract (to Setup IFR.txt)

Открываем Setup IFR.txt в блокноте.

Ищем «USB Configuration»:
0x30824 Ref: USB Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x135, FormId: 0x2923

Нас интересует FormId.

Теперь определим FormId раздела «Memory Configuration»:
0x3B628 Form: Memory Configuration, FormId: 0x2738

Открываем SPF.bin в HEX-редакторе.

Ищем HEX-последовательность, соответствующую FormID раздела Memory Configuration:
*Ctrl+F* → Hex Values (3827)

Нас интересует page_id через 4 позиции – 0060 (последовательность 6000)

Аналогично ищем page_id для Usb Configuration. Сразу за page_id 005D следует parent_id 0019.

Parent_id – это page_id родительского раздела, в нашем случае раздела Peripherals.

Ищем обратную последовательность parent_id+page_id (19005D00). Это форма вызова раздела USB Configuration.
Заменяем page_id USB Configuration на page_id Memory Configuration. Вместо 19005D00 получаем соответственно 19006000:

Остается только заменить исходный SPF модуль на модифицированный в UEFITool:
*ПКМ* → Replace Body…

Сохраняем: File → Save image file. Прошиваем.

Теперь вместо раздела USB Configuration будет вызываться раздел с настройками памяти.

При желании можно изменить имя раздела в AMIBCP.

Если AMIBCP не работает

С новыми материнками все чаще AMIBCP работать отказывается.

В этом случае остается лишь использовать 2 способ.

О прошивке

На Intel достаточно прошить только bios-region, если модифицировался текущий БИОС. Справятся Afuwin или Flash Programming Tool из-под винды. Должны справиться и встроенные прошивальщики.

Источник

Изучаем своё железо: сброс паролей BIOS на ноутбуках

Добрый день, меня зовут Денис Генералов, я являюсь младшим системным администратором Cloud4Y. Надеюсь, что данный пост поможет коллегам, которые оказались в такой же ситуации, что и я: в купленном для компании ноутбуке система стоит в MBR (Legacy BIOS), на нём имеется пароль, а поставить необходимо в GPT (UEFI).

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

image loader

«Что тут такого? В этом нет никакой сложности! Почему не обратиться к вендору? Почему не воззвать к мудрости Гугола?», — спросите вы, а я отвечу:

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

image loader

Поиск в Google даёт тонны бесполезной информации с советами вытащить батарейку CMOS, зажать 2 вывода микросхемы BIOS в момент включения – CLK и Dl (IO). Кстати, этот вариант вообще неприемлем, поскольку может повлечь за собой уничтожение микросхемы, а равно и содержимого.

На формах умные (не совсем) люди советуют следующее:

image loader

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

Всё бы было хорошо, если бы эти работы проводились в 2007-2010 годах. Тогда не было скриптов автоматизированной прошивки мультиконтроллеров aka хабов (привет Intel ME и AMD PSP) при первом старте и обратной записи в BIOS данных мультиконтроллера.

Если мы воспользуемся данным советом, то получим «кирпич» либо неработающую клавиатуру, и лишь с малой долей вероятности — полностью рабочий ноут, но с неродными SN или вовсе без них.

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

В силу специфики нашей работы, мы закупаем профессиональные линейки HP ввиду простоты ремонта, обслуживания и диагностики, однако в штате имеется пара «боевых лошадок» Lenovo IdeaPad 110-17ACL. С них, пожалуй, мы и начнём.

«Ремонт» Lenovo IdeaPad 110-17ACL

Задача: убрать пароль супервизора из BIOS для переключения режима загрузки в UEFI

Опционально: не потерять ключи и SN от производителя.

Дано: Lenovo IdeaPad 110-17ACL у которого установлен пароль и 0 полезной информации в тынтырнетах.

Ну что, коллеги, поехали?

Разберём тушку до состояния платы. Это несложно. Нам понадобится карта (желательно банковская, с номером и тремя цифрами на обратной стороне. Можете прислать мне фото с двух сторон, я вам подскажу, подойдёт ли ваша карта), отвёртка крестовая PH 00, за неимением лучшего – программатор от наших рисовых собратьев – CH341aPro и «клешня» под Sop-8 к нему.

Приступаем к разборке. Первым делом выкручиваем все винты в нижней крышке, которые видим, а которые не видим – ищем. Должно быть 11 штук М 2,5. Переходим к клавиатуре, она держится на соплях пластмассовых креплениях внутри топкейса.

image loader

С места, обозначенного красной стрелкой, подсовываем карту и начинаем вести по стрелке, клавиатура отойдёт от топкейса. Снимаем её, не забыв отключить от платы. Видим 4 винта, воспользуемся отвёрткой и выкрутим их, вытащив привод из корпуса, а также отсоединив батарею.

Подсовываем карту в щель между топкейсом и нижней крышкой, проходимся согласно стрелкам и снимаем нижний кейс. Видим перед собой плату. Отключаем батарею CMOS (с обратной стороны платы).

image loader

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

image loader

P.S. Делайте несколько копий оригинального ROM-а.

P.S.2. Лучше не делайте это «клешнёй», а демонтируйте микросхему и считайте припаянную к программатору или к плате-переходнику. Так вы минимизируете возможные потери блоков при считывании из-за пропадающего иногда контакта.

Чтобы понять, где у нас хранится пароль, я приобрёл чистый дамп BIOS на одном из форумов (это дешевле приобретения платы, да и дамп нужен был в исследовательских целях, вам он не понадобится), и начал сравнивать их друг с другом через Fairdell HexCmp2.

image loader

Находим все строки, которые содержат необходимую последовательность. Ниже её находятся строки, которые содержат значения Password (указаны на картинке), заменяем их на нули.

image loader

После этого сохраняем дамп и прошиваем его. Проверяем на запуск и радуемся, что у нас нет более пароля.

Собираем в обратном порядке, проверяем правильно подключение батареи – (белой полоской вверх, точкой вниз. Видимо, такую маркировку предпочитает Lenovo).

HP Probook, HP Elitebook

Рассмотрим линейку HP ProBook линеек 4×20-40, Elitebook (2010-2015 годы выпуска) с флеш-памятью 32 – 64 M-BIT.

image loader

Здесь всё намного прозаичнее и проще.

image loader

Как мы видим на картинке, у HP пароль зашифрован между последовательностями 66 9D C5 и AA 55 7F.

Нам нужны последовательности, которые содержать в себе следующие значения:

Источник

Как установить, удалить и сбросить пароль в БИОС (BIOS)?

Иногда любопытные пользователи персональных компьютеров или же те, кто стремится максимально защитить свои данные, постоянно ставят пароли на всем, на чем только можно: начиная от документа Word или папки и заканчивая паролем на Windows и даже BIOS (ставить код на БИОС желательно только тогда, если вы знаете, как снять пароль с БИОСа). Плюс ко всему этому у каждого пользователя есть еще и аккаунты в социальных сетях, почтовые ящики, различные программы (вроде Skype) или сайты — и везде стоят пароли. А если они еще и все разные, то довольно часто эти комбинации забываются или просто путаются.

Особенно тяжело переносится утеря пароля БИОС, т.е. пароля на загрузку систему. В данной ситуацииполучится, что если пользователь забыл код от BIOS, то он даже не включит компьютер. Кроме того, он не сможет зайти в БИОС, чтобы попробовать переустановить Windows, тем самым сбросив пароль. Такие случаи довольно часто заканчиваются покупкой новой материнской платы (именно там и хранится БИОС). Однако всего этого можно избежать, воспользовавшись некоторыми слабостями архитектуры ЭВМ. Несмотря на то что BIOS считается довольно мощным средством защиты, все равно существуют «тайные дорожки», с помощью которых можно обойти установленный пароль в BIOS. Благо разработчики материнских плат предусмотрели вероятность возникновения подобных ситуаций и преднамеренно оставили несколько вариантов («черных ходов»), с помощью которых можно сбросить пароль на БИОС.

Как сбросить пароль БИОС ноутбука и компьютера

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

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

Таким образом, BIOS позволяет получить полный доступ к вашему «железу» и настраивать параметры как угодно. Смысл установки пароля, конечно, имеется, но как быть, если вы его забыли?

lazy placeholder

Последствия потерянного пароля BIOS

На секунду представим, что вы забыли именно тот пароль, который сами ставили. Резервные коды легко найти в интернете, поэтому не о них сейчас речь.

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

К счастью, имеются аппаратные методы, как можно убрать пароль с BIOS.

lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder

Общая информация

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

Способ 1: используем инженерный пароль

Данный способ более привлекателен в том плане, что вам не требуется сбрасывать все настройки БИОСа. Чтобы найти инженерный пароль, вам нужно знать основную информацию о вашей базовой системе ввода-вывода (как минимум, версию и производителя).

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

Стоит помнить, что при вводе инженерного пароля пользовательский остаётся на месте, поэтому его необходимо снять и задать новый. К счастью, если вы уже смогли войти в БИОС, то сможете сделать сброс, даже не зная свой старый пароль. Для этого воспользуйтесь данной пошаговой инструкцией:

lazy placeholder

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

Сброс пароля BIOS с помощью батарейки CMOS

На любой системной плате есть специальный чип, где хранятся все настройки системы ввода-вывода (БИОС). Чтобы эти настройки не сбрасывались при выключении компьютера, они постоянно питаются с помощью батарейки CMOS (Complimentary Matal-Oxide-Semiconductor — Комплиментарный Металло-Оксидный Полупроводник). Данный способ называется обнуление CMOS памяти.

lazy placeholder

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

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

Как убрать пароль BIOS с помощью джампера

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

lazy placeholder

Если вы не можете обнаружить джампер на плате, то внимательнее присмотритесь к надписям, рядом с элементами. Джампер обычно обозначается следующим образом: CLR_CMOS, PWD, CLEAR CMOS, PASSWORD, CLR, CLEARPWD, JCMOS1, CLEAR RTC, PASSWD, PSWD и похожим образом.

Так же есть кнопка для сброса, которую достаточно просто нажать. Но чаще всего она отсутствует.

lazy placeholder

Как снять пароль с БИОСа программным методом

Существует специальная утилита – CMOSPWD, которая поможет сбросить пароль из-под Windows. Это сработает, конечно, если у вас есть доступ к системе, вы помните пароль BIOS, но не хотите заходить туда, чтобы стереть его. Либо не знаете как.

Скачайте утилиту отсюда. Откройте и далее сделайте так: зажмите клавишу SHIFT, нажмите правой кнопкой мышки, затем выберите опцию «Открыть окно команд».

lazy placeholder

Запустится командная строка, где можно посмотреть, какие команды доступны в этой утилите. Для этого введем следующее – cmospwd_win.exe /?.

Чтобы осуществить сброс пароля BIOS необходимо ввести такую команду:

Для подтверждения действия очистки CMOS введите цифру 1 и нажмите Enter.

Программу спокойно можно использовать не только в Windows, но и с загрузочной флешки DOS. Первоначально ее нужно поместить в образ.

Использование инструмента debug.exe в Windows

При использовании Windows XP вы можете воспользоваться специальной утилитой. Данный отладчик можно обнаружить по следующему пути – WINDOWSsystem32debug.exe. Вы можете скопировать этот адрес и запустить отладчик с помощью окна «Выполнить», которое открывается сочетанием Win+R.

Чтобы сбросить пароль БИОС необходимо ввести команды для различных версий систем ввода-вывода:

AMI BIOS:

AWARD BIOS:

Phoenix BIOS:

После каждой введенной строчки надо нажимать Enter. Так же обозначение этих кодов следующее:

Использование утилиты PC CMOS Cleaner

Чтобы убрать пароль Биос, существует не одна утилита. Сейчас я объясню, как использовать инструмент PC CMOS Cleaner, которое легко может сбросить пароль CMOS BIOS, привести настройки к заводскому состоянию.

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

lazy placeholder

Очистка пароля BIOS с помощью сервисов

Данный способ хорошо срабатывает на современных системных платах и ноутбуках. Для реализации этого способа вам понадобится смартфон или другой компьютер с выходом в интернет.

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

lazy placeholder

Этот код поможет нам в отключении пароля БИОС. Запишите его или запомните. Затем зайдите на сайт BIOS-PW.org и впишите его в поле «Enter your code». Нажмите кнопку «Get password».

lazy placeholder

Далее вы можете использовать в качестве пароля указанные ниже варианты паролей. Чтобы его ввести – отключите компьютер, заново включите и введите пароль с сайта в поле.

lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder lazy placeholder

Мастер-пароли

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

Для большинства брендов эта контрольная сумма отображается после ввода неверного пароля в третий раз:

Сообщение “система отключена” – это просто тактика запугивания: когда вы удалите все питание с ноутбука и перезагрузите его, он будет работать так же, как и раньше. Из такой контрольной суммы (также называемой “хэш”), допустимые пароли могут быть найдены с помощью грубой силы.

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

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

Другие поставщики просто получают мастер-пароль от серийного номера. В любом случае, мои скрипты могут быть использованы для получения действительных паролей.

Некоторые поставщики реализовали меры по обфускации, чтобы скрыть хэш от конечного пользователя – например, некоторые ноутбуки FSI требуют ввести три специальных пароля для отображения хэша (например, “3hqgo3 jqw534 0qww294e”,” включить мастер-пароль”).

Как пользоваться генератором для мастер-паролей BIOS?

lazy placeholder

Данный генератор мастер-пароля BIOS позволяет:

Принцип работы генератора мастер-паролей

Мастер пароль ноутбуков, работающих на Phoenix BIOS, генерируется по серийному номеру модели конкретного производителя.

Как проверить работоспособность скрипта?

Для проверки работоспособности скрипта скопируйте данную комбинацию в поле «Код»: 39854365.

Скрипт должен возвратить ответ в виде мастер-пароля для ноутбука Fujitsu-Siemens: 06211328.

Ссылка на генератор мастер-паролей – https://bios-pw.org/

А так же можно посмотреть исходный код генератора в репозитории GitHub

Code source ‘Password generator for BIOS: https://github.com/bacher09/pwgen-for-bios

Как сбросить пароль BIOS на ноутбуке или компьютере Acer

Если у вас имеется ноутбук Acer, а также доступ к операционной системе, то вы легко удалите пароль БИОС с помощью встроенной утилиты Acer eSettings Management. Если у вас она есть, замечательно, а если нет, то загрузите с официального сайта + Acer Empowering.

lazy placeholder

Это интересно: Как узнать версию BIOS компьютера и ноутбука

Обратиться к производителю системной платы или ноутбука

Если вышеуказанные методы не помогли вам удалить пароль с БИОС, то единственным вариантом остается только одно – написать обращение производителю устройства. Ведь только они знают, как правильно очистить CMOS память и вернуть BIOS к состоянию по умолчанию.

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

Надеюсь, данные методы помогли вам, и вы сбросили свой пароль БИОС на компьютере или ноутбуке. Будьте аккуратны, когда в следующий раз будете устанавливать новый пароль.

Обращаемся за помощью к специалистам

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

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

Источник

Понравилась статья? Поделить с друзьями:
  • Программа для руководство телефона
  • Мукосат уколы инструкция по применению отзывы пациентов принимавших препарат
  • Проточный водонагреватель zanussi 3 logic 3 5 ts инструкция
  • Сименс кофемашина eq3 s100 инструкция по применению
  • Должностная инструкция ведущего экономиста в доу