Amibcp как пользоваться
Категория: Инструкции Опубликовано: 15 июля 2020
AMIBCP программа для редактирования настроек биоса производства American Megatrends. Компания American Megatrends свободно не распространяет AMIBCP. Но вот уже много лет все успешно пользуются этим замечательным инструментом. Для редактирования биоса плат на сокетах 2011 подойдёт версия v4.53, а для редактирования биоса плат на сокетах 2011-3 подойдёт версия v5.02.
С помощью AMIBCP можно например установить настройки биос по умолчанию, открыть скрытые пункты меню и настроек, самое простое это посмотреть информацию о дампе BIOS во вкладке «BIOS Features».
Например можно выставить тиайминги оперативной памяти вручную, если их от нас скрыл производитель, но будьте осторожны, если вы слишком занизите тайминги, то откатиться можно будет только программатором.
Будьте внимательны при установках настроек по умолчанию, так как при сбросе биоса именно они будут применены и если плата не сможет запуститься с данными настройками, то откатиться\прошиться можно будет только с помощью программатора.
Если вы хоть немного разбираетесь и знаете какая настройка за что отвечает, настроить биос под свои нужды не составит труда.
Дополнительная информация:
v4.53 подойдёт для плат на сокетах 2011
v5.02 подойдёт для плат на сокетах 2011-3
Скачать AMIBCP: v4.53, v5.02.
Модификация UEFI BIOS, часть вторая: полезные модификации
В этой статье я постараюсь рассказать о наиболее популярных и полезных модификациях UEFI BIOS, условиях их применения и способах поиска. Кроме этого, на описанной в первой части утилите UEFITool свет еще не сошелся клином, поэтому будут упомянуты и другие программы, используемые для модификации UEFI BIOS’ов различных производителей.
Если тема вам интересна — добро пожаловать под кат.
Введение и еще один отказ от ответственности
Не хочу повторять свою тираду про необходимость SPI-программатора и тот факт, что все модификации вы делаете на свой страх и риск, поэтому если вдруг вы ее не читали — прочтите и возвращайтесь.
С этого момента я полагаю, что с восстановлением после неудачной прошивки у вас пролем нет, и с UEFITool’ом вы тоже знакомы, поэтому останавливаться на технических вопросах типа «Как мне вытащить из образа файл» и «как потом его вставить обратно» не буду.
Необходимые инструменты
- Hex-редактор на ваш выбор.
- Редактор образов UEFI, в качестве которого я, по понятным причинам, буду использовать UEFITool, но вы также можете использовать PhoenixTool (универсальный и хорошо отлаженый, но не без ограничений) или MMTool (более или менее сносно работает только с образами AMI Aptio).
- Если для необходимой модификации не нашлось постоянного паттерна, могут потребоваться ассемблер и дизассемблер с поддержкой x86-64. Ассемблера вполне досточно онлайнового, а вот дизассемблер нужен нормальный, иначе поиски точки модификации могут сильно затянуться.
К сожалению, бесплатная версия IDA Pro не поддерживает разбор 64-битных PE-файлов, поэтому для Windows я рекомендую использовать утилиту dumpbin, входящую в набор компиляторов Microsoft, а для MacOS X — либо objdump, либо пробную версию Hopper Disassembler. - Если модификация может быть выполнена утилитой от производителя UEFI-платформы, пусть ей она и будет выполнена — это надежнее, чем вручную. К сожалению, «узок круг этих революционеров и страшно далеки они от народа», поэтому чаще всего подходящей утилиты от производителя не существует.
Модификации
Довольно предисловий, перейдем к сами модификациям. Здесь я опишу только те модификации, которые протестировал сам, поэтому список может быть обязательно будет неполным. Если вы пробовали какие-то другие моды — прошу поделиться результатами в коментариях. Формат описания будет таким: название модификации или класса модификаций, назначение и краткое описание необходимых шагов. Поехали.
CPU PM patch, MSR 0xE2 lock removal
Что: обход установки бита LOCK (0x0F) в регистр MSR_PMG_CST_CONFIG_CONTROL (0xE2) после прохождения POST
Зачем: открытый регистр 0xE2 необходим для работы подсистемы CPU Power Management в MacOS X, при закрытом происходит kernel panic. Если вы не планируете её уставновку или в вашем UEFI BIOSе присутсвует настройка «Unlock C-State MSR» — эта модификация вам не нужна.
Где искать: в UEFI-драйверах, относящихся к CPU PM. В старых БИОСах код установки лока находится в модуле CpuPei, в новых — в модуле PowerManagement (может также называться PowerManagement2.efi или PowerMgmtDxe.efi).
Способ модификации: В CpuPei код, который нужно модифицировать, выглядит примерно так:
81 FB D0 06 02 00 cmp ebx,206D0h 75 0C jne FFFE426E 0D 00 80 00 18 or eax,18008000h ; Бит 15 (LOCK) ставится здесь EB 05 jmp FFFE426E 0D 00 80 00 00 or eax,8000h ; Или здесь 6A FF push 0FFFFFFFFh 6A F8 push 0FFFFFFF8h 6A 00 push 0 50 push eax 56 push esi E8 DC 0F 00 00 call FFFE5257 ; А внутри этой функции находится wrmsr
Достаточно заменить в этом месте 00800018 на 00000018 и 00800000 на 00000000, чтобы обойти установку лока.
В PowerManagement код выглядит иначе, чаще всего вот так:
80 FB 01 cmp bl,1 ; Если BL == 1 75 08 jne 0000000180002700 ; Перепрыгнуть две следующие команды 0F BA E8 0F bts eax,0Fh ; Установить бит 15 (LOCK) 89 44 24 30 mov dword ptr [rsp+30h],eax ; Сохранить результат в переменную на стеке 48 8B 54 24 30 mov rdx,qword ptr [rsp+30h] ; Загрузить значение из этой переменной в RDX B9 E2 00 00 00 mov ecx,0E2h ; А номер MSR в ECX E8 79 0C 00 00 call 0000000180003388 ; И вызвать функцию с wrmsr внутри
Можно заменить JNE на JMP, BTS на BTR или просто «занопать» весь код установки лока. Проще всего сделать первое, т.е. поменять 75 08 на EB 08.
Если такого кода в вашем UEFI BIOS не нашлось, ищите в драйверах, относящихся к CPU Power Management, значение 0xE2, и проверяйте весь код на предмет установки 15-го бита. В последних версиях BIOSов для некоторых современных десктопных плат AMI перестали лочить этот регистр, поэтому такого кода в них уже не найти — считайте, что производитель сделал этот мод за вас.
AES NI unlock
Что: обход установки бита LOCK (0x02) в регистр MSR 0x13C
Зачем: включение аппаратного ускорения AES на системах с экспортными ограничениями
Где искать: в UEFI-драйверах, относящихся к CPU PM, чаще всего в PowerManagement
Способ модификации: мало чем отличается от PM patch’а (и уже был описан на хабре), поэтому останавливаться подробно на нем не буду.
Whitelist removal
- Вставить несовместимую карту в нотбук, дождаться сообщения о невозможности загрузки и запомнить его.
- Найти это сообщение в одном из FFS-файлов.
- Найти код, который ссылается на это сообщение.
- Исследовать этот код и попробовать изменить его так, чтобы проверка всегда заканчивалась успешно. Сделать это можно двумя способами: либо пропатчить переход, либо добавить свои Vendor ID и Device ID в белый список.
44 38 0D F0 0F 00 00 cmp byte ptr [00001BF0h],r9b 75 18 jne 0000000000000C1A E8 35 FD FF FF call 000000000000093C 48 85 C0 test rax,rax 4C 8B C8 mov r9,rax 0F 88 77 FF FF FF js 0000000000000B8A C6 05 D6 0F 00 00 01 mov byte ptr [00001BF0h],1 49 8B C1 mov rax,r9 E9 68 FF FF FF jmp 0000000000000B8A
Все переходы к этому коду необходимо пропатчить на безусловные, а в самом коде необходимо «занопать» первую и вторую строки, после чего проверка всегда будет заканчиваться успешно.
BIOS lock removal
Что: снятие защиты от прошивки модифицированных образов UEFI встроенным программатором.
Зачем: при большом количестве экспериментов с UEFI доставать каждый раз программатор быстро надоедает, да и прошивка встроенным программатором происходит быстрее (засчет работы по протоколу QuadSPI вместо обыкновенного SPI в случае внешнего программматора).
Где искать: в драйверах чипсета, чаще всего в PchInitDxe (другой вариант мода — в BiosWriteProtect)
Способ модификации: вариант модификации PchInitDxe полностью описан здесь на английском, поэтому я приведу только идею. Необходимо найти запись бита BIOS Lock Enable (BLE) в регистр BIOS_CNTL чипсета и предотвратить её. Сделать это можно в нескольких местах, например, вот здесь:
48 8B 4C 24 40 mov rcx,qword ptr [rsp+40h] ; Загрузить в RCX адрес структуры PchPlatformData 48 8B 41 50 mov rax,qword ptr [rcx+50h] ; А в RAX - адрес дочерней структуры LockdownConfig F6 00 10 test byte ptr [rax],10h ; Проверить, установлен ли пятый бит (BiosLock) 74 25 je 0000000180001452 ; Если не установлен, перепрыгнуть весь код ниже 8A 50 01 mov dl,byte ptr [rax+1] B9 B2 00 00 00 mov ecx,0B2h ; E8 A2 5A 00 00 call 0000000180006EDC 4C 8D 87 DC 00 00 00 lea r8,[rdi+000000DCh] ; В RDI лежит базовый адрес регистров LPC чипсета, а 0xDC - смещение регистра BIOS_CNTL 33 C9 xor ecx,ecx 4C 8B CD mov r9,rbp 33 D2 xor edx,edx 4C 89 44 24 20 mov qword ptr [rsp+20h],r8 E8 AA 76 00 00 call 0000000180008AFC ; Установить лок
Можно изменить JE на JMP, но иногда вместо короткого прыжка попадается длинный, у которого приходится дополнительно вычислять смещение, поэтому лучше изменить test на любую команду, устанавливающую флаг ZF, например на xor rax, rax (48 31 C0), а возможную разницу в размерах команд исправить добавлением NOP’ов.
Если в PchInitDxe нужного кода не нашлось, можно изменить драйвер BiosWriteProtect таким образом, чтобы обойти регистрацию находящегося в нем SMI-обработчика, который устанавливает бит BLE при попытке его сброса, после чего для разблокировки прошивки достаточно сбросить этот бит. У меня отлично работает вышеописанный способ, поэтому этот вариант я пока не пробовал и потому подробно описывать не буду.
Advanced settings unlock
Что: разблокировка доступа к скрытым настройкам BIOS Setup.
Зачем: среди эти настроек может попасться что-то интересное, но обычно их скрывают не просто так.
Где искать: для Phoenix и Insyde меню хранится в HII-файлах с именами вроде SetupMain, SetupAdvanced и т.п. Для AMI меню хранится в файле Setup, а настройки — в AMITSE. Более того, AMI предоставляет пороизводителям end-user продуктов свою программу AMIBCP, версии которой частенько утекают в публичный доступ. Работа с ней достаточно проста, поэтому описывать её я не вижу смысла — скачайте и попробуйте.
Способ модификации: для AMI — открываем образ в AMIBCP, меняем настройки по умолчанию, сохраняем, прошиваем, выполняем сброс настроек, готово. Для Insyde и Phoenix все немного сложнее. Если доступ на запись в NVRAM не запрещен, можно воспользоваться методом товарища Falseclock, описанным в этой его статье, а вот если доступа нет — придется модифицировать прошивку. Потребуется разобрать формат HII Form File либо вручную, либо предоставить это скрипту, описанному в вышеупомянутой статье, или утилите Universal IFR Extractor, которую необходимо натравить на извлеченные из образа UEFI файлы HII. После этого достаточно изменить в извлеченном файле HII Form условия SUPRESS_IF так, чтобы они никогда не выполнялись, и все меню станут доступны.
CPU Microcode, OptionROM, drivers and images update
Что: обновление микрокодов CPU, прошивок различных переферийных устройств, EFI-драйверов и отображаемых при загрузке и в BIOS Setup картинок.
Зачем: иногда обновление помогает исправить ошибки в работе системы, иногда добавляет поддержку важной фичи (работу TRIM для SSD в RAID0, к примеру), но чаще всего обновление производится потому, что наконец вышла новая версия.
Где искать: сильно зависит от производителя, EFI-драйверы можно найти просто по имени (SataDriver, например), микрокод можно найти по Model ID процессора, для которого он предназначен, OROMы — по VID/DID устройств, которые они обслуживают, картинки в формате JPEG можно найти по строке «JFIF», в GIF — по «GIF8» и т.п.
Способ модификации: прост как мычание — найти новую версию в свободном доступе, найти, где в образе лежит старая, и заменить одно на другое. Для AMI товарищем LS_29 был написан набор для автоматического обновления на основе утилиты MMTool, скачать можно из нашей темы на оверах. Об автоматизированных решениях для Phoenix или Insyde я пока не слышал.
Замена картинок может быть сделана либо утилитами вроде AMI ChangeLogo, либо вручную, но чаще всего не подготовленная специальным образом картинка вызывает зависание, т.к. декодеры форматов изображений бывают сильно ограничены. В общем, данные EXIF лучше удалить заранее.
Заключение
В этой статье я описал только те моды, которые успешно делал своими руками. Если у вас есть какие-то замечания и дополнения — буду рад вашим комментариям.
Еще раз смиренно попрошу администрацию Хабра и лично НЛО о создании хаба UEFI, ибо это очень широкая тема, а статьи по ней буквально некуда приткнуть.
Спасибо за внимание, желаю вам удачных модификаций.
- Assembler
- Системное программирование
- UEFI
Разблокируем скрытые настройки БИОС
Повсеместно распространена практика сокрытия различных функций, параметров, используемых на этапах разработки и тестирования. Вместе с тем производится и сегрегация плат на уровне БИОС. Как результат, пользователь лишается доступа к фактически прописанным и реализованным возможностям.
Естественно, пытливого юзера не может устраивать такое злодейское ограничение пользовательской свободы. В связи с чем предлагаю рассмотреть способы обхода этих искусственных препон. Рассматривать будем на примере плат Intel 100-300 чипсетов. Аспекты работы с AMIBCP общеприменимы.
реклама
Способ 1. Простой
требуется: программа AMIBCP и навык прошивки МП
Качаем подходящую версию AMIBCP. В нашем случае v5.02.
реклама
File → Open… (файл_биос)
Слева представлено структурное меню БИОС. Сопоставляя названия с фактически наблюдаемыми при входе в БИОС, определяем главный блок.
Именно в этом блоке в соответствующих меню и подменю находятся все доступные настройки. Иерархия та же, что и в БИОС. Наряду со знакомыми наблюдаем и совершенно новые отдельные параметры и даже целые разделы!
реклама
Для открытия элемента достаточно поменять значение в колонке Access/Use на USER:
Обратите внимание, на разделы, описанные как бы наравне с главным, есть ссылки в теле главного блока. Т.е. доступ к ним получить можно. Например, по пути Setup → Advanced → System Agent (SA) Configuration → Memory Configuration большой раздел с настройками памяти.
реклама
Помимо открытия доступа к настройкам, AMIBCP позволяет изменить значения настроек по умолчанию, переименовать параметры и разделы.
Этим способом можно открыть только те настройки, которые непосредственно прописаны в главном блоке.
Способ 2. Сложный (для разделов)
то же + UEFITool, IFR-Extractor и HEX-редактор
Попытаемся разблокировать тот же раздел с настройками памяти на Gigabyte. Организация БИОС здесь другая, упоминаний нужного раздела в главном блоке нет.
Подменим доступный раздел скрытым. «Пожертвуем», к примеру, подменю USB Configuration (Setup → Peripherals).
Определились с тем, что хотим открыть, определились, что хотим закрыть. К делу!
UEFITool
Ищем модуль по сигнатуре $SPF: *Ctrl+F* → Text
Извлекаем и сохраняем модуль: *ПКМ* → 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: полный контроль или как разблокировать скрытые функции
Сегодня каждый рядовой пользователь имеет возможность регулярно обновлять BIOS, и этим, пожалуй, никого не удивишь. А вот то, что BIOS можно модифицировать, включая в его установках скрытые дополнительные параметры, — об этом знают лишь немногие опытные пользователи. Эта статья адресована, прежде всего, тем, кто занимается оптимизацией и постоянно ищет пути для повышения производительности своего «железного друга «, кто не боится рисковать и ставит на своем компьютере смелые эксперименты.
Откуда берет свое начало BIOS (Basic Input/Output System) — базовая система ввода/вывода? Ее программный код рождается в лабораториях разработчиков. Наиболее известные из них — фирмы Award и AMI. Затем каждый производитель материнских плат адаптирует BIOS к конкретной модели и по своему усмотрению отключает (блокирует) определенные функции. Причем заблокированными могут оказаться многие функции, влияющие на «тонкую» настройку BIOS, и от которых, в свою очередь, зависит производительность компьютера.
Для чего же производители материнских плат блокируют некоторые функции? Прежде всего, это делается в целях упрощения процедуры настройки Setup BIOS. Отключают и те функции, которые в конкретной материнской плате отсутствуют, но могут быть задействованы в следующих модификациях. Используя специальное программное обеспечение (утилиты), можно разблокировать практически все отключенные функции и опции в BIOS. После модификации результаты необходимо сохранить в отдельном файле и затем произвести обновление BIOS. При загрузке Setup BIOS на экране монитора можно будет увидеть новые дополнительные возможности настройки. Для каждой фирмы нужна своя утилита. Обладателям Award BIOS понадобится утилита Modbin, а для тех, у кого на компьютере установлена AMI BIOS, необходимо скачать программу AMIBCP. Интересен тот факт, что утилита AMIBCP разработана программистами самой фирмы AMI.
А теперь перейдем к самому главному — к практическим занятиям. Прежде всего, следует подготовить необходимое программное обеспечение. Итак, для модификации потребуются утилита для обновления («прошивальщик»), файл с действующей версией BIOS и утилита для модификации. Утилиту для «прошивки» можно найти в Интернете на сайте производителя материнской платы или на компакт-диске, прилагающемся к «материнке». После чего ее необходимо скопировать на жесткий диск компьютера. Файл, в котором размещена текущая версия BIOS, можно получить с помощью этой утилиты. Утилиты для модификации BIOS можно скачать из Интернета: для Award по адресу http://www.biosmods.com/download.php , а для AMI — Файл, содержащий BIOS, желательно разместить на жестком диске в одной папке вместе с утилитой для ее модификации. Обязательно перед модификацией сделайте резервную копию файла с BIOS. Теперь, когда все готово, можно смело загружать утилиту.
В качестве примера рассмотрим случай, когда на компьютере установлена AMI BIOS. Что касается BIOS от Award, то принцип модификации аналогичен, и в этой статье рассматриваться не будет. Утилита AMIBCP является DOS-программой и без проблем загружается под Windows без перезагрузки в режим эмуляции MS-DOS. Объем AMIBCP (файл amibcp75.exe) в распакованном виде составляет 542 Кбайт. После загрузки утилиты AMIBCP необходимо с клавиатуры ввести имя файла, содержащего BIOS, например, 7vr_f4.bin. Далее, находясь в главном меню программы, ищем раздел «Configure Setup Data» и просматриваем по порядку все подразделы. Особенно интересны для нас будут подразделы «Chipset Setup» и «BIOS Features Setup». Сама модификация заключается в активации заблокированных опций. В каждом подразделе присутствуют столбцы с заголовками «Option Name», «Active», «Rights», «Optimal» и «FailSafe». Заблокированные опции подсвечены, напротив этих опций в столбце «Active» указано значение «No». Клавишами Page Up и Page Down можно задействовать ту или иную заблокированную установку. Возможны случаи, когда в столбце с заголовком «Option Name» названия опций на экране полностью отсутствуют. В таком случае придется включать все опции подряд «вслепую». Закончив изменения, выходят в главное меню программы AMIBCP и, нажимая на клавишу F10, сохраняют модифицированный BIOS в файле. После сохранения модифицированного файла применяют «прошивальщик» — утилиту для обновления BIOS. Ряд производителей материнских плат выпускает свои фирменные программы для обновления BIOS непосредственно в среде Windows. К их числу относятся утилиты фирм Gigabyte, ASUS, Intel и др. Перед прошивкой следует убедиться в том, что в Setup BIOS разрешено обновление — в разделе BIOS Features Setup параметр BIOS Flash Protection должен находиться в положении Disabled или Auto. После «прошивания» производят перезагрузку компьютера и входят в Setup BIOS. В моей практике модификации были случаи, когда в BIOS оказывались заблокированными настройки, позволяющие повышать производительность системы. А именно: возможность изменять напряжение на шине AGP в интервале 1,5. 1,8 В с шагом 0,1 В и на модулях памяти DDR в пределах 2,5. 2,8 В с шагом 0,1 В, а также увеличивать на 5; 7,5 или 10 % штатное напряжение на ядре процессора. Имели место случаи, когда в BIOS были заблокированы режим S.M.A.R.T. для жестких дисков и режим Bypass Mode для оптимальной работы CPU (см. рисунок).
Интересной оказалась и заблокированная опция в подразделе Hardware Monitor — Slow Down CPU Duty Cycle. При переходе системы в режим Doze тактовая частота CPU уменьшается. С помощью этой опции можно установить другое значение тактовой частоты CPU в процентах от предыдущего. В заключение хочу напомнить: не стоит из-за полного контроля над BIOS терять голову. И поэтому к модификации и изменению параметров следует подходить с некоторой долей осторожности и с пониманием того, что вы делаете и на что идете.
Похожие публикации
- Есть ли жизнь в мире без ПК
- Поддержка твердотельных накопителей в Windows 7
- Диагностика аппаратных проблем