Редактируем BIOS. Перепрошивка BIOS на картах AMD (для новичков к изучению!)

BIOS-моддинг

крис касперски ака мыщъх

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

введение

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

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

А моддинг? Разве не заманчиво заставить компьютер перемигиваться огоньками во время загрузки или выводить красочный логотип на экран?! Наконец, при желании можно написать крутой вирус, заражающий BIOS и препятствующий его удалению оттуда. Это не штука! Ничего сложного в этом нет, особенно если подцепить к вирусу готовые утилиты для редактирования BIOS"а (их объем не составляет и полсотни килобайт), а утилита прошивки, как мы скоро увидим, содержится в самом BIOS"е!

Одним словом, хачить BIOS не только можно, но и нужно. Главным образом мы будем говорить об Award BIOS"ах. В AMI все сильно по другому… Однако, когда-нибудь мы доберемся и до них. Кстати говоря, фирма Award была выкуплена Phoenix"ом и в настоящее время существует только как бренд (в смысле - торговая марка). А это значит, что Phoenix-BIOS"ы устроены точно так же как и Award, поскольку их пишет одна и та же фирма.

что нам понадобиться

Для экспериментов нам потребуется материнская плата с Award-BIOS"ом на борту. Опознать микросхему BIOS"а очень легко - на ней обычно накалена голографическая этикетка, которую необходимо оторвать, чтобы обнажить маркировку. Маркировка представляет длинный ряд цифр наподобие "28F1000PPC-12C4". Идем на, заполняем строку запроса и получаем pdf-файл с подробным описанием чипа (так называемый datasheet). Теперь необходимо найти идентичный или совместимый чип FLASH-памяти, над которым мы, собственно, и будем экспериментировать. Его можно купить на радио-рынке или вытащить с поломанной матери.

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

Рисунок 1 различные типы микросхем FLASH-памяти


Рисунок 2 BIOS Saviour, облегчающий выемку чипа с работающей матери

Рисунок 3 BIOS extractor в действии!

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

Комплект утилит для прошивки BIOS"а можно найти на сайте разработчика BIOS"а или производителя материнской платы. Некоторые производители (например, ASUS) вносят в BIOS множество изменений, в результате чего "родные" Award"овские утилиты перестают с ними работать и приходится использовать инструментарий, поставляемый вместе с материнской платой. Обычно там содержится: awdflsh.exe – "прожигатель", modbin – простой редактор BIOS"а, cbrom – просмотрщик содержимого BIOS"а и "добавитель" новых модулей в прошивку. Все эти утилиты можно найти на сайте www.rom.by. Там же находится замечательный падчер BIOS"а - BP.exe (сокращение от "BIOS Pather"), исправляющий ошибки в известных ему прошивках и разблокирующий многие заблокированные возможности. Нашим основным инструментом будет интерактивный редактор BIOS"а Award BIOS Editor, который можно бесплатно скачать с /.

Ассемблер - MASM, TASM или FASM, дизассемблер - IDA Pro (четвертая версия которой распространяется на бесплатной основе) или NASM, шестнадцатеричный редактор - HIEW или HexWorkshop.

как мы будем действовать

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

Вот для этих целей нам и требуется второй BIOS! Запускаем материнскую плату, дампим прошивку (или скачиваем обновленную версию с сайта производителя), модифицируем ее по своему вкусу, затем, не выключая компьютера, аккуратно вынимаем оригинальный чип, откладывая его в сторону, вставляем чип, над которым мы будем экспериментировать, и, запустив AWDFLASH.EXE, заливаем хакнутую прошивку в BIOS. Теперь, случись вдруг чего, мы всегда сможем вернуть оригинальный чип на место, исправить ошибку и перешить экспериментальный BIOS вновь.

Насколько такая процедура безопасна? По правде говоря, опасности нас подстерегают на каждом шагу. Микросхема может выскользнуть из рук и упасть на плату, малейшая ошибка в прошивке может вывести оборудование из строя (например, нечаянно "задрать" напряжение или тактовую частоту). До приобретения боевого опыта лучше всего насиловать старые материнские платы, которые все равно идут в утиль (например, Pentium-155).

>>> врезка как прожигают BIOS"ы

AMI BIOS"ы имеют специальный интерфейс, позволяющий работать с микросхемой FLASH-памяти (читать или прожигать), доступный через прерывания INT 15h и INT 16h (подробности - в Interrupt List"e Ральфа Брауна). Award BIOS"ы такой возможности не имеют и программируются через порты ввода/вывода.

Конструктивно FLASH-микросхема подключена к южному мосту чипсета. Со всеми вопросами обращайтесь к нему, а точнее к его документации.


Рисунок 4 микросхема FLASH-памяти, подключенная к южному мосту

>>> врезка DUAL-BIOS своим руками

Всякий, умеющий держать паяльник в руках, может доработать материнскую плату, установив на нее сразу две микросхемы FLASH–памяти. Тогда, между ними можно будет переключаться без рискованных манипуляций с chip-extractor"ом. Пример схемы подключения приведен ниже. Как видно, ничего сложного в DUAL-BIOS"е нет.


Рисунок 5 принципиальная схема DUAL-BIOS"а и ее материальное воплощение

начинаем хулиганить

Запускаем Award BIOS editor (кстати говоря, он запускается только из-под GUI, а под FAR"ом просто "слетает"), в меню File выбираем файл с прошивкой, которую мы будем модифицировать (предварительно ее необходимо скачать с сайта производителя или запустить AWDFLASH.EXE с ключом /sy, чтобы сдампить текущую прошивку в файл). В левой колонке выбираем пункт "System BIOS" и смотрим, что хорошего тут можно изменить. А изменить тут можно достаточно многое! Например, имя BIOS"а, высвечивающееся при загрузке (в моем случае это: Award Modular BIOS v6.00PGN), дату выхода и название чипсета (03/29/2001-i815-W83627F-6A69RI3DC-00) и другие идентификационные строки подобного типа. А давайте напишем "hacked by Visual Sex Ltd, hacker"s Turbo-BIOS", чтобы потом поприкалываться над подвыпившими приятелями.


Рисунок 6 Award BIOS editor готовый к хачинью текстовых строк, высвечивающихся при загрузке системы

Точно так же можно заменить все надписи в BIOS Setup (они находятся во вкладке BIOS Options), при желании указав значения по умолчанию (ну те самые, что загружаются по команде "load default BIOS configuration"). Наибольший интерес представляют пункты, помеченные как "Disabled". Это опции, заблокированные производителем! Простым переводом радио кнопки в состояние "Active" мы разблокируем их! Разумеется, никакой гарантии, что они заработают у нас нет! Чаще всего блокируются недоделанные или нестабильно работающие режимы и возможности. Реже - производитель просто не хочет, чтобы материнские платы начального уровня конкурировали с дорогими моделями, вот и тормозит их.


Рисунок 7 разблокирование заблокированных возможностей в BIOS Setup

А хотите изменить логотип, высвечивающийся в северо-восточном углу экрана? Это совсем несложно сделать. Старые BIOS"ы хранили картинку в logo-формате (конвертор для которого прилагается к статье), который страдал кучей ограничений. Сейчас же секция "LOGO" обычно пуста, а картинка хранится в секции "EPA pattern" в стандартном BMP-формате. Ограничений на размер и глубину цветности нет никаких, однако, не все BIOS"ы поддерживают слишком большие и цветастые картинки. Я поступал так: извлекал оригинальный логотип в файл ("Export as Windows BMP"), загружал его в Paint, где и правил его в свое удовольствие без изменения количества цветов и размеров. Результат моей работы приведен ниже. Мыщъх – это я. И я атакую! При желании можно зашить в BIOS полноэкранное лого, высвечивающиеся при загрузке (этим занимается одноименная утилита от Award, входящая в штатный комплект поставки многих ASUS"ых матерей).


Рисунок 8 хакнутый логотип

Запустив утилиту BP.EXE с ключиком /c, мы сможем вручную задать имя процессора, высвечивающиеся при загрузке и его тактовую частоту. Реальная тактовая частота процессора отображаться уже не будет. Почему бы не написать "AMD Pentium-5 600 GHz" и не показать это друзьям?

Да много чего можно придумать! В умелых руках BP.EXE и Award BIOS editor творят чудеса! Как бы там ни было, после всех издевательств прошивка должна быть залита в BIOS. О том как это сделать, можно прочитать в документации на материнскую плату, мы же не будем толочь воду в ступе, оставим мелкие шалости и перейдем к более серьезным вещам.

настройка PCI-регистров

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

Запускаем Award BIOS editor, заходим в System BIOS, находим вкладку "Chipset Registers" и открываем документацию на чипсет. Где-то там будет раздел "PCI Configuration Registers" или что-то в этом роде. Для каждого из регистров будет указано устройство (device), к которому он "подключен"), номер функция (function) и номер самого регистра, называемый смещением (offset). Все регистры 8-битные, однако, несколько последовательных регистров могут объединяться в слова или даже двойные слова.

Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает, что часть настроек в ней отсутствуют. Даже в заблокированных возможностях (о которых мы уже говорили выше) их нет! В частности, мой любимый AMD 761 поддерживает намного больший диапазон таймингов, чем BIOS. В частности, чтобы установить t PR в 1 такт (BIOS по умолчанию ставит 3 такта и не дает это умолчание изменять), необходимо модифицировать 8 и 7 биты регистра Dev 0:F0:0x54, присвоив им значение 2 (или "10" в двоичной нотации). Остальные биты не трогать! А как это сделать? Необходимо наложить маску (mask), которая в данном случае будет выглядеть так: "XXXX XXX1 1XXX XXXX". Как видно, 8 и 7 бит установлены в единицу, остальные помечены знаком "Х", указывающим BIOS"у что данный бит необходимо оставить без изменений.


Рисунок 9 страничка из документации на чипсет, описывающая конфигурационные регистры

Запись "Dev0:F0:0x54" обозначает: Device 0:Function 0:Register 0x54. На самом деле, этих регистров целых два. Регистр 0x54 хранит младшую, а 0x55 - старшую половину слова. Следовательно, в 0x54 необходимо занести 80h ("10.00.00.00"), а в 0x55 – 01h. Соответственно, в первом случае маска будет равна 80h ("1X.XX.XX.XX"), а во втором 01h.

Возвращаемся к Award BIOS Editor"у, находим среди регистров регистр с номером 0x54, и кликнув правой клавишей мыши, выбираем пункт "modify". В появившимся окне первые три поля (Register, PCI, PCI) оставляем без изменений (это номер регистра, устройства и функции), а вот с двумя последующими полями "Resister" и "Value" придется разобраться особо. Мы не можем просто взять и записать значение 0x80, поскольку в этом регистре уже хранятся какие-то параметры, модифицирующие остальные поля. Мы должны устанавливать лишь "наши" биты (в данном случае это бит 7), а над остальными выполнить операцию логическое "OR" по маске. Аналогичным образом настраивается и регистр 55h.


Рисунок 10 разгон системы при помощи редактирования конфигурационных регистров

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

>>> выноска

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

>>> врезка интересные ссылки

    BIOSmods

    • статьи по прошивке и доработке прошивок, уникальный инструментарий (на русском языке): http://www.rom.by ;

  • Часто задаваемые вопросы о BIOS

    • довольно устаревшее, но все-таки полезное FAQ по BIOS"ам (на русском языке): /mainboard/faq/biosfaq.shtml ;

    Th e Official Website of Pinczakko

    • сайт улетного индонезийского хакера, исследовавшего кучу BIOS"ов вдоль и поперек и вытворяющий с ними такое, что другим даже не снилось (на английском и индонезийском языках): http :// www . geocities . com / mamanzip / ;

    Modification of GigaByte GA-586HX BIOS rev 2.9 for support of HDD above 32 GiB

    • интересная статья о модификации BIOS, название которой говорит само за себя (на английском языке): http :// www . ryston . cz / petr / bios / ga 586 hx _ mod . html ;

    Award BIOS Reverse Engineering

    • статья известнейшего хакера BIOS"а Mappatutu Salihun Darmawan по внедрению своего кода в BIOS (на английском языке):http :// www . codebreakers - journal . com / include / getdoc . php ? id =83& article =38& mode = pdf ;

    Award BIOS Code Injection

    • новые идеи по внедрению своего кода в BIOS (на английском языке): http :// www . codebreakers - journal . com / include / getdoc . php ? id =127& article =58& mode = pdf ;

    AWARD BIOS Source

    • исходные тексты пары устаревших прошивок со скупыми комментариями. помогают понять общие принципы функционирования BIOS"а и разобраться в некоторых тонких местах, неочевидных при дизассемблировании: (на языке ассемблера): http :// miscellaneous . newmail . ru / ;

    Редактируем BIOS (Award Modular v.4.51)

    • описание формата BIOS"а для его ручной распаковки (на русском языке): http :// www . winsov . ru / bios 002. php ;

    AMD 762 Chipset Tweaking (MP/MPX) Guide

    • статья по редактированию регистров чипсета (на русском языке): http :// www . tweakfactor . com / articles / tweaks / amd 762/1. html ;

    Using Oda"s WPCREDIT On VIA Motherboards

    • разгон системы путем редактирования регистров чипеста (на английском языке): http :// www . overclockers . com / tips 105/ index . asp ;

    H.Oda"s Home Page

    • утилита для модификации регистров чипеста на лету: http :// www . h - oda . com / ;

    Award BIOS Editor

    AWDhack v 1.3

    • утилита для автоматизированного внедрения своего кода в BIOS http :// webzoom . freewebs . com / tmod / Awdhack . zip ;

КРИС КАСПЕРСКИ

Модифицируем BIOS

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

Если процессор – это сердце компьютера, то BIOS – его душа. Качество прошивки определяет все! К сожалению, качественные прошивки в живой природе встречаются достаточно редко. Разработчики допускают грубые ошибки, блокируют многие полезные возможности, в общем, по отношению к потребителю ведут себя нехорошо. Древние модели материнских плат, выпущенные до 2000 года, зачастую вообще не имеют свежих прошивок и с новым оборудованием (например, жесткими дисками большого объема) они уже не работают, а ведь могли бы…

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

А моддинг? Разве не заманчиво заставить компьютер перемигиваться клавиатурными огоньками во время загрузки или выводить красочный логотип на экран?! Одним словом, модифицировать BIOS не только можно, но и нужно. Главным образом мы будем говорить об Award BIOS. В AMI все сильно по-другому… Однако когда-нибудь мы доберемся и до них. Кстати говоря, фирма Award была выкуплена Phoenix и в настоящее время существует только как бренд. А это значит, что последние версии Phoenix-BIOS устроены точно так же, как и Award, поскольку их разрабатывает одна и та же фирма, правда, на старые прошивки это утверждение не распространяется. Впрочем, существуют готовые редакторы и для них, но не будет заострять внимание на мелочах, а сразу перейдем к делу.

Что нам понадобится

Для экспериментов нам потребуется материнская плата с Award-BIOS на борту. Опознать микросхему BIOS очень легко – на ней обычно наклеена голографическая этикетка, которую необходимо оторвать, чтобы обнажить маркировку. Маркировка представляет последовательность цифр наподобие «28F1000PPC-12C4».

Как ее расшифровать? Идем на http://www.datasheetarchive.com , заполняем строку запроса и получаем pdf-файл с подробным описанием чипа (так называемый datasheet). Теперь необходимо найти идентичный или совместимый чип FLASH-памяти, над которым мы, собственно, и будем экспериментировать. Его можно приобрести в специализированном радиомагазине или вытащить с поломанной материнской платы. Большого дефицита эти чипы не представляют, поскольку в материнских платах используются серийные микросхемы, выпускаемые независимыми поставщиками.

Для «горячей» замены BIOS (т.е. выдергивания микросхемы с работающей платы) русские умельцы аккуратно обвязывают микросхему нитками, а затем осторожно тянут вверх (можно, конечно, просто подковырнуть отверткой, но при этом легко что-то закоротить), а вот иностранцы после эпидемии «чиха» придумали специальные приспособления – chip extractor (съемщик чипов) и BIOS savior (BIOS-спаситель). По сути дела, это одно и то же приспособление, только торговые марки разные. Приобрести их можно в радиомагазинах или заказать по Интернету (см. рис. 1-6).




Рисунок 2. Набор BIOS Savior kit для безопасного извлечения микросхемы BIOS с материнской платы и «кроватка»

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





Еще нам потребуется документация на чипсет материнской платы. Компании Intel и AMD бесплатно выкладывают все, что нужно на сайт. Другие производители (VIA, SiS) держат документацию под спудом и отдают только за деньги плюс подписку о неразглашении. В частности, на дисках, рассылаемых компанией AMD, встречается много интересной документации со штампом «confidential», пролистывая которую, ощущаешь волнующее чувство причастности к тайне.

Комплект утилит для прошивки BIOS можно найти на сайте разработчика конкретного BIOS или производителя материнской платы. Некоторые производители (например, ASUS) вносят в BIOS большое количество изменений, в результате чего «родные» утилиты от Award перестают с ними работать и приходится использовать инструментарий, поставляемый вместе с материнской платой. Обычно там содержится:

  • awdflsh.exe – «прожигатель»;
  • modbin – простой редактор BIOS;
  • cbrom – просматривает содержимое BIOS и добавляет новые модули в прошивку.

Все эти утилиты можно найти на сайте http://www.rom.by . Там же находится замечательный «патчер» BIOS – BP.exe (сокращение от «BIOS Patсher»), исправляющий ошибки в известных ему прошивках и разблокирующий многие заблокированные возможности. Нашим основным инструментом будет интерактивный редактор BIOS Award BIOS Editor, который можно бесплатно скачать c .

Как мы будем действовать

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

Вот для этих целей нам и требуется второй BIOS! Запускаем материнскую плату, считываем содержимое прошивки соответствующей утилитой (или скачиваем обновленную версию с сайта производителя), модифицируем ее по своему вкусу, затем, не выключая компьютера, аккуратно вынимаем оригинальный чип, откладывая его в сторону, и вставляем чип, над которым мы будем экспериментировать. Остается запустить AWDFLASH.EXE и зашить модифицированную прошивку в BIOS. Теперь, случись вдруг что, мы всегда сможем вернуть оригинальный чип на место, исправить ошибку в экспериментальной прошивке и повторить всю процедуру вновь. Другими словами, мы будем экспериментировать только над «нашим» чипом, оставляя родной BIOS в неприкосновенности.

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

Первые эксперименты

Запускаем Award BIOS editor (кстати говоря, он запускается только из-под GUI, а под FAR просто «слетает»), в меню File выбираем файл с прошивкой, которую мы будем модифицировать (предварительно ее необходимо скачать с сайта производителя или запустить AWDFLASH.EXE с ключом /sy, чтобы сохранить текущую прошивку в файл). В левой колонке выбираем пункт «System BIOS» и смотрим, что хорошего тут можно изменить. А изменить тут можно очень многое! Например, имя BIOS, высвечивающееся при загрузке (в моем случае это: Award Modular BIOS v6.00PGN), дату выхода и название чипсета (03/29/2001-i815-W83627F-6A69RI3DC-00) и другие идентификационные строки подобного типа. А давайте напишем «assembled at military-industrial USA factory», чтобы потом подшучивать над приятелями (см. рис. 7).


Точно так же можно заменить все надписи в «BIOS Setup» (они находятся во вкладке «BIOS Options») и отредактировать значения по умолчанию (те самые, что загружаются по команде «load default BIOS configuration») под свой вкус. Наибольший интерес представляют пункты, помеченные как «Disabled». Это и есть опции, заблокированные производителем! Простым переводом радиокнопки в состояние «Active» мы разблокируем их! Разумеется, никакой гарантии, что система после этого заработает, у нас нет. Чаще всего блокируются недоделанные или нестабильно работающие режимы и возможности. Реже – производитель просто не хочет, чтобы материнские платы начального уровня конкурировали с дорогими моделями, вот и тормозит их. Нестабильно работающая материнская плата способна разрушить содержимое жесткого диска еще в процессе загрузки Windows, поэтому экспериментировать на своем рабочем винчестере недопустимо! Используйте запасной жесткий диск, на котором нет ничего ценного. Запустите несколько тестирующих программ и дайте им поработать несколько суток. Если за это время не произойдет ни перезагрузок, ни зависаний, можно переходить на основной жесткий диск, на всякий случай, предварительно зарезервировав его содержимое (см. рис. 8).


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

Сейчас же секция «LOGO» в большинстве случаев пуста, а картинка хранится в секции «EPA pattern» в стандартном BMP-формате. Ограничений на размер и глубину цветности нет никаких, однако не все BIOS поддерживают слишком большие и цветастые картинки. Что произойдет, если подсунуть BIOS картинку, которую он не в состоянии обрабатывать? Ничего страшного! Система либо откажется выводить ее на экран или выведет с искажениями. Чтобы не попасть впросак, рекомендуется отталкиваться от уже существующей картинки: извлекаем оригинальный логотип в файл (в Award BIOS Editor за это отвечает команда «Export as Windows BMP»), загружаем его в Paint и правим в свое удовольствие без изменения глубины цветности и размеров. Один из примеров такой работы приведен ниже.

При желании можно зашить в BIOS полноэкранный логотип, высвечиваемый при загрузке. Этим занимается одноименная утилита от Award, входящая в штатный комплект поставки многих материнских плат ASUS. Однако в некоторых BIOS задержка вывода полноэкранного логотипа столь мала, что ряд CRT-мониторов просто не успевают прогреться за это время! Но ведь не переходить же ради этого на LCD-монитор? Разумеется, нет! Достаточно найти величину задержки в настойках BIOS и увеличить ее! А для этого нам вновь пригодится Award BIOS editor (см. рис. 9).


Рисунок 9 . Изменение стандартного логотипа, выводимого при загрузке на экран

А вот еще один трюк. Запустив уже упомянутую утилиту BP.EXE с ключом /c, мы сможем вручную задать имя процессора, высвечивающееся при загрузке, и его тактовую частоту. Реальная тактовая частота отображаться уже не будет. Почему бы не написать «AMD Pentium-V 666 GHz beta» и не похвастаться перед друзьями?

Да много чего можно придумать! В умелых руках BP.EXE и Award BIOS editor творят настоящие чудеса! Как бы там ни было, после всех издевательств прошивка должна быть залита в BIOS. О том, как это сделать, можно прочитать в документации на материнскую плату (см. рис. 10).


Рисунок 10 . Прожигание BIOS специализированной утилитой от ASUS

Настройка PCI-регистров

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

Запускаем Award BIOS editor, заходим в System BIOS, находим вкладку «Chipset Registers» и открываем документацию на чипсет. Где-то там должен быть раздел «PCI Configuration Registers» или что-то в этом роде. Для каждого из регистров будет указано устройство (device), к которому он «подключен», номер функции (function) и номер самого регистра, также называемый смещением (offset). Все регистры 8-битные, однако несколько последовательных регистров могут объединяться в слова или даже двойные слова.

Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает, что часть настроек в ней отсутствуют. Даже в заблокированных возможностях (о которых мы уже говорили выше) их нет! В частности, мой любимый AMD 761 поддерживает намного больший диапазон таймингов, чем указано в BIOS Setup. Взять хотя бы величину tPR (time to precharge), определяющую время закрытия DRAM-страницы, в процессе которого происходят возврат данных в банк памяти и его перезарядка. По умолчанию BIOS ставит 3 такта и не дает его изменять. Чтобы сократить tPR до 1 такта, необходимо модифицировать 8 и 7 биты регистра Dev 0:F0:0x54, присвоив им значение 2 («10» в двоичной нотации). Остальные биты не трогать! А как это сделать? Необходимо наложить маску (mask), которая в данном случае будет выглядеть так: «XXXX XXX1 1XXX XXXX». Как видно, 8 и 7 биты установлены в единицу, остальные помечены знаком «Х», указывающим BIOS, что данный бит необходимо оставить без изменений (см. рис. 11).


Рисунок 11 . Страничка из документации на чипсет, описывающая конфигурационные регистры

Запись «Dev0:F0:0x54» обозначает: Device 0:Function 0:Register 0x54. На самом деле этих регистров целых два. Регистр 0x54 хранит младшую, а 0x55 – старшую половину слова. Следовательно, в 0x54 необходимо занести 80h («10.00.00.00»), а в 0x55 – 01h. Соответственно в первом случае маска будет равна 80h («1X.XX.XX.XX»), а во втором 01h.

Возвращаемся к Award BIOS Editor, находим регистр с номером 0x54 и, кликнув правой клавишей мыши, выбираем пункт «modify». В появившемся окне первые три поля (Register, PCI, PCI) оставляем без изменений (это номер регистра, устройства и функции), а вот с двумя последующими полями «Resister» и «Value» придется разобраться особо. Мы не можем просто взять и записать значение 0x80, поскольку в этом регистре уже хранятся какие-то параметры, модифицирующие остальные поля. Мы должны устанавливать лишь «наши» биты (в данном случае это бит 7), а над остальными выполнить операцию логическое «OR» по маске. Аналогичным образом настраивается и регистр 55h (см. рис. 12 ).


Рисунок 1 2 . Разгон системы при помощи редактирования конфигурационных регистров

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

Аналогичным образом можно редактировать и остальные регистры, отсутствующие в BIOS Setup, однако наши возможности будут довольно ограничены.

Заключение

Кроме Award BIOS editor существуют и другие программы для редактирования BIOS или расширения его возможностей. Они перечислены во врезке.

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

Приложение

Как прожигают BIOS

AMI BIOS имеют специальный интерфейс, позволяющий работать с микросхемой FLASH-памяти (читать или прожигать), доступный через прерывания INT 15h и INT 16h (подробности– в Interrupt List Ральфа Брауна). Award BIOS такой возможности не имеют и программируются через порты ввода/вывода.

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


Рисунок 13 . Микросхема FLASH-памяти, подключенная к южному мосту

DUAL-BIOS своими руками

Каждый радиолюбитель, умеющий держать паяльник в руках, может доработать материнскую плату, установив на нее сразу две микросхемы FLASH–памяти. Тогда между ними можно будет переключаться без труднодоступного и притом весьма дорогостоящего chip-extractor. Как видно из рис. 14, ничего сложного в DUAL-BIOS нет.


Custom UEFI and BIOS utilities for Aptio and AMIBIOS simplify the development and debug experience. AMI"s Aptio firmware offers an easy transition to the Unified Extensible Firmware Interface (UEFI) specification, giving developers all the advantages of UEFI - modularity, portability, C-based coding - while retaining easy-to-use tools that facilitate manufacturing and enhance productivity. AMI"s rich set of utilities for BIOS ROM image customization without rebuilding the firmware provide a clear advantage in reducing both time and cost.

AMI Firmware Update (AFU)

AMI Firmware Update (AFU) is a scriptable command line utility for DOS, Microsoft Windows®, Linux, FreeBSD and the UEFI shell. Utilized for factory or field BIOS updates, AFU is flexible enough to update the entire Flash part or only a portion. It programs the main BIOS image, boot block or OEM configurable ROM regions.

AMI BIOS Configuration Program (AMIBCP)

The AMI BIOS Configuration Program (AMIBCP) for Aptio enables customers to modify parameters in a BIOS ROM without rebuilding from source. Developers can modify default values for BIOS setup parameters, modify default boot order in BIOS setup, view and edit sign-on and setup strings, and edit SMBIOS string data. AMIBCP also features

AMI Setup Control Environment (AMISCE)

AMISCE is a command line tool which provides an easy way to update NVRAM variables, extract variables directly from the BIOS, change settings using either a text editor or a setup program and update the BIOS. AMISCE produces a script file that lists all setup questions on the system being modified by AMISCE. The user can then modify the script file and use it as input to change the current NVRAM setup variables.

AMI Setup Data Extraction (AMISDE)

AMISDE is a command line tool for exporting setup data from an Aptio ROM image, including spreadsheet applications such as Microsoft Excel®. It generates a helpful summary report of BIOS setup parameters and default values that enhances productivity in testing and manufacturing.

AMISLP

AMISLP allows the insertion of Microsoft System Locked Pre-Installation (SLP) key files into the BIOS image. SLP keys are used for OEM activation of Microsoft Windows® 7 and Vista®. For Windows® 8.1 and Windows® 10, the OEM Activation 3.0 eModule is used in conjunction with AFU v2.35 or greater.

AMI Utility Configuration Program (AMIUCP)

AMIUCP is a utility that is used to pre-configure the Aptio Flash Utility (AFU). Users can insert and exchange the default command string and ROM image used in AFU to create a customized version of the utility. AMIUCP supports AFU v2.35 or AFUWINGUI v1.12 or later.

Change Logo

ChangeLogo allows developers to easily change logos displayed by Aptio at boot. The full screen "splash" logo and small logos appearing on the main screen during POST can be replaced with custom logos. ChangeLogo also allows logos to be extracted from existing Aptio ROM files.

Desktop Management Interface Edit (DMIEdit)

DMIEdit is a scriptable command line utility for DOS, Microsoft Windows®, Linux and the UEFI shell. The Desktop Management Interface Editor for Aptio enables developers to modify strings associated with platform SMBIOS tables (System, Base Board, Chassis, OEM string, etc). In manufacturing, use DMIEdit to embed platform serial numbers, UUID and license keys into the SMBIOS table, which identifies platforms to management software.

Module Management Tool (MMTool)

Aptio"s Module Management Tool (MMTool) allows developers to manage firmware file modules contained within an Aptio firmware ROM image. Use MMTool to extract, replace and insert binary components such as modules, Option ROMs, microcode patches and ROM holes using its graphical or command line interface. With MMTool, developers can also create reports on the contents of an opened ROM image.

] ВНИМАНИЕ! Неквалифицированная прошивка BIOS, а уж тем более его редактирование, ведет к потере гарантии и может быть потенциально опасна! Мы не несем никакой ответственности за возможные последствия применения данного материала на практике - ты действуешь на собственный страх и риск!

Зачем редактировать BIOS ?

Самыми распространенными целями редактирования BIOS"а являются следующие:

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

Помимо BIOS"ов материнских плат и видеокарт часто редактируются BIOS"ы оптических приводов. В данном случае выполняется интеграция поддержки новых наименований носителей (например, DVD-RAM дисков), если такая функция была намеренно заблокирована изготовителем устройства. Кроме того, иногда таким образом можно отключить зональную защиту, интегрировать корректную поддержку носителей новых производителей и т.п.
Сам BIOS (basic input-output system - базовая система ввода-вывода) представляет собой некий микрокод, отдаленно напоминающий операционную систему. Для его редактирования в простейшем случае применяется HEX-редактор. Такой метод мало доступен широкому пользователю и нами рассматриваться не будет - благо на сегодняшний день существует достаточное количество специализированных программ, интерфейс и инструменты которых будут понятны и новичку. Именно о таких вариантах и пойдет речь в данной статье: как, где и что можно отредактировать/перепрошить, не постигая азы программирования.

Обработка BIOS"а видеокарты.

Наиболее часто пользователи сталкиваются с необходимостью редактирования и перепрошивки BIOS"ов видеокарт. Поговорим о них подробнее.
Пожалуй, одними из первых видеокарт, дающих непосредственную пользу от редактирования некоторых параметров BIOS"а, является семейство nVIDIA GeForce 59x0, и особенно некогда очень популярная видеокарта 5900 XT. Отыскав в закромах Palit 5900 XT, мы решили провести и описать несколько экспериментов.
Итак, чем же интересна такая карта, как 5900 ХТ, с точки зрения редактирования BIOS"а? Все дело в том, что 5900 ХТ имеет два режима функционирования видео: 2D и 3D. Между собой кроме всего прочего они отличаются частотами и напряжением питания видеоядра. Переход из одного режима в другой, а также повышения напряжения и частот управляются BIOS"ом. При этом даже малоопытным оверклокерам известно, что частотный потенциал разгоняемого элемента зависит от напряжения питания - чем больше напряжение, тем больших частот можно достичь (разумеется, в рамках разумных пределов). Здесь вывод напрашивается сам собой: отредактировать BIOS так, чтобы увеличилось подаваемое на ядро напряжение и достичь можно было тем самым более высоких частот. Кроме того, былая популярность 5900 ХТ обусловила выход в свет программ не только изменяющих напряжение питания видеоядра, но и оптимальным образом настраивающих тайминги работы видеопамяти. Приступим...
Первым делом нам понадобится программа NiBitor и непосредственно сам прошивальщик nvflash. Все это можно найти в файловом разделе сайта overclockers.ru .
Далее нам понадобится сам BIOS. Его лучше всего "слить" непосредственно с твоей видеокарты. Для этого загружаемся с системной дискеты или реаниматора в режим DOS и, находясь в той папке, куда ты сохранил программу-прошивальщик, пишем следующее: nvFlash.exe -b oldbios.rom
Операция сохранения образа BIOS"а занимает несколько секунд. Далее загружаемся в обычном режиме и запускаем NiBitor, открываем им сохраненный BIOS.
В окне программы мы видим, максимальный предел поднятия питающего видеоядро напряжения - 1.5 В, при исходном значении 1.4 В. Пожалуй, это единственный недостаток так называемого софт-вольтмода. Однако преимущества оного очевидны: сохранение гарантийного внешнего вида видеокарты, относительная безопасность и простота (всегда можно вернуть все назад, кроме того, неудачная прошивка BIOS"а дело поправимое.
Любое повышение напряжения влечет за собой увеличение тепловыделения. Для охлаждения подопытной мы применили недорогой процессорный кулер.
Разгон карты до нашего вмешательства в BIOS, но с уже замененной системой охлаждения составил 450 МГц по ядру (номинал 390 МГц). После прошивки отредактированного BIOS"а с помощью цифрового мультиметра мы удостоверились в увеличении напряжения питания видеоядра с 1.40 В до 1.45 В в 3D-режиме.
После тестов на стабильность видеокарта показала стабильную работу на частоте 480 МГц, но наше "колдовство" над видеоядром на этом не заканчивается. Все дело в так называемом "автотормозе" - способности карты даже при невидимых глазом человеческим дефектах изображения переключаться в некий safe-mod режим, понижая при этом как напряжение питания, так и частоту видеоядра. С этим также можно бороться путем редактирования BIOS"а.
В окне программы мы можем видеть, что имеется три режима, первый из которых (2D) нас не интересует. Для отключения "автотормоза" достаточно лишь присвоить одинаковые значения всем параметрам оставшихся двух режимов. Тогда при попытке видеокарты уйти в safe-mode режим (так называемый throtling) произойдет так сказать переключение из 3D в 3D. Другими словами, ничего не изменится. Такой "хинт" дал нам возможность выжать еще 20 МГц по ядру.

Что касается памяти, то здесь все просто. Частотный потенциал оной зависит от задержек (таймингов). Максимальная производительность же будет достигнута при оптимальном сочетании частоты и совокупности настроек задержек. Определение такого оптимума - достаточно трудоемкое и скучное занятие. Здесь снова на помощь приходит Интернет, ведь такая карта, как 5900 ХТ, ранее была у очень большого числа оверклокеров. Совместными трудами были определены наилучшие настройки задержек для Palit GeForce 5900 XT. Для их внесения в BIOS удобнее воспользоваться программой MHZ5900, которую ты так же можешь скачать с файлового архива сайта overclockers.ru.
Открыв сохраненный NiBitor"ом BIOS со всеми нашими измененными настройками в MHZ5900, мы увидим стандартные настройки памяти для этой видеокарты. Устанавливаем оптимальные настройки соотношения частоты и таймингов. Наша видеокарта по памяти изначально имела разгон 820 МГц. После применения программы MHZ5900 и очередной перепрошивки подопытной мы получили впечатляющую для Hynix 2.8 ns частоту 925 МГц!
Здесь следует сказать, что по имеющейся у нас информации во времена популярности 5900 ХТ компания Hynix выпускала очень качественные чипы памяти DDR-1 в упаковке BGA, в результате чего любая партия таких микросхем отвечала требованиям DDR-1 2.2-2.5ns. Это приводит к мысли о типичной перемаркировке чипов на более "медленные" по маркетинговым соображениям. Также очевидно, что применение производителем таких неудачных таймингов могло быть намеренным, дабы суперразгоняющиеся 5900 ХТ не подставили под удар продажу более дорогих видеокарт (5900-5950 Ultra).
Примененные нами тайминги оптимальны для карт серии 59х0 с памятью производства Hynix. Для чипов другого производителя оптимальные тайминги могут быть иными. Сама прошивка отредактированного BIOS"a осуществляется из-под DOS-режима следующей командой: nvFlash.exe -f 5900bios.rom -4 -5 -6
Здесь 5900bios.rom - имя отредактированного BIOS"a.

Редактирование BIOS"ов современных видеокарт.

Помимо перечисленного выше, с помощью NiBitor можно изменить параметр Vendor (производитель карты), Device ID, параметры загрузки и многое другое. Так, например, ныне популярная серия видеокарт NVIDIA GeForce 7x00 имеет такой нюанс, как разделение частот для функциональных блоков GPU: блок растеризации (ROP), шейдерный блок (Shader) и блок геометрии.
Первые два из них оказывают наибольшее влияние на производительность видеокарты в современных приложениях, в то время как последний наиболее критичен к поднятию частоты видеоядра в целом, то есть является в какой-то степени сдерживающим фактором в разгонном потенциале современных видеоускорителей nVIDIA.
Редактирование и последующая перепрошивка BIOS"а поможет нам обойти это препятствие - все, что нужно сделать, это понизить частоту блока геометрии относительно ROP и Shader. Для этого с помощью все той же программы NiBitor вводится отрицательная частотная дельта.
Среднестатистическое значение дельты, применяемой оверклокерами, лежит в пределах -90...-40 МГц. Да-да, именно минус - мы ведь хотим понизить частоту сдерживающего разгон блока, не так ли?
Конкретное значение отрицательной дельты подбирается в индивидуальном порядке путем изучения разгонного потенциала чипа после перепрошивки.

Редактирование и перепрошивка BIOS материнских плат.

Подвергать редактированию целесообразно также и BIOS"ы материнских плат, в особенности старых. Как и в случае с видеокартами, здесь речь снова пойдет о специализированной утилите, название
которой - Bios Patcher. Все файлы, о которых ниже пойдет речь, можно найти в файловом архиве сайта rom-by.com .
Bios Patcher работает в режиме командной строки из-под DOS, то есть windows-интерфейса для нее нет. Программа разработана для сканирования образов BIOS"ов материнских плат с последующим внесением исправлений, если программа обнаруживает ошибки или недочеты. Здесь сразу возникает два вопроса: откуда в файлах BIOS"ов ошибки и насколько корректно программа их исправляет. Ответ на первый вопрос очень прост. Фактически, все интеллектуальные права на использование Award BIOS (BIOS Patcher работает только с Award, AMI - не поддерживается) принадлежат самому концерну Award, который просто продает программный код, коим и является BIOS, изготовителям материнских плат. Последние, в свою очередь, по мере надобности вносят изменения или дополнения в исходный код. Поскольку производителям материнских плат второго эшелона просто не по карману содержать штат высококвалифицированных программистов, на этапе внесения изменений в BIOS возникают ошибки. Самая распространенная из них - отсутствие поддержки на старых материнках жестких дисков объемом более 8.4 Гб в одних случаях и 32 Гб - в других. Примечательно, что с аппаратной точки зрения проблем, как правило, не возникает - вся проблема в BIOS"е. Разумеется, решить оную можно запросто путем перепрошивки обновленной версии BIOS"а, скачанного с сайта производителя. И вот здесь возникает загвоздка: совершенно не обязательно, что производитель твоей платы спустя годы после снятия оной с производства будет выпускать новые версии BIOS"а. В таких случаях (а также во многих других) поможет BIOS Patcher.
Сканирование файла-образа BIOS"а производится интеллектуально с учетом его "брендовости". Так, например, достаточно специфичные изменения в исходный код от Award очень любит вносить Asus. Некоторые индивидуальные отличия от "стандарта" присущи и BIOS"ам материнских плат Gigabyte. В BIOS Patcher"е учтены такие особенности. Уникальность этой программы заключается в том, что никаких изменений непосредственно в сам BIOS она не вносит. Коррекция ошибок выполняется путем добавления еще одной дополнительной части BIOS"а в так сказать виртуальном виде. При старте ПК во время POST все исправления вносятся "на лету" на самой первой стадии старта ПК.
Отмену внесения исправлений, если программа делает это некорректно (здесь хочется отметить, что BIOS Patcher ошибается феноменально редко), можно выполнить, удерживая клавишу "-" (минус) в нажатом состоянии с момента старта твоего компьютера. К сожалению, нет универсальной инициализации клавиатуры, в результате чего трюк с клавишей "-" может не сработать. Тогда просто отключи клавиатуру и после старта ПК подсоедини заново (только аккуратно!). В обоих случаях ПК запустится с оригинального BIOS"а, минуя все результаты деятельности BIOS Patcher"а. В дальнейшем плату можно будет перепрошить заново оригинальным, нетронутым BIOS"ом.
"Официальные" возможности BIOS Patcher"а такие:

* Поддержка Flash-ROM микросхем следующих типов: 1 Мбит (128 кб), 2 Мбит (256 кб), 4 Мбит (512 кб).
* Корректная работа с Award 4.5x, Award(Phoenix) 6.xx.
* Поддержка платформ Pentium - Socket5, Socket7, SuperSocket7, Pentium II/III Socket8/Slot1/Socket370(PPGA/FC-PGA/FC-PGA2),AMD K7 - Slot-A, SocketA, Pentium 4 (Socket423/Socket478).
* Поддержка "стандарта" от Asus упаковки модулей BIOS (который появился, начиная с CUSL/TUSL).
* Добавление "поддержки", так сказать, "новых" для данной материнской платы процессоров (для платформ, обладающих автоматическим "детектом"). Здесь подразумевается то, что после применения данной программы материнская плата перестанет отображать при старте название процессора как "Unknown". Помимо "интеграции" правильного названия процессора BIOS Patcher обеспечит корректное распознавание L2-кэша и частоты/коэффициента умножения вплоть до интеграции поддержки различных степпингов и "банального" добавления/обновления микрокодов. Разумеется, должна быть аппаратная совместимость с данным процессором.
* Устранение ошибок в BIOS"е, которые приводят к неработоспособности винчестеров объемом более 32 Гб (а иногда и 8.4 Гб).
* Активирование отключенных производителем платы возможностей BIOS"а - например, возможность выбора вручную таких параметров, как частота системной шины, тайминги памяти, питающие напряжения и т.п. Кроме того, в некоторых случаях возможно расширение диапазона настроек.
* Включение асинхронного режима работы с памятью и интерливинга на VIA 693A/694X/694T.

Как мы уже отмечали, BIOS Patcher работает из-под DOS. Тебе понадобится загрузочная дискета или диск-реаниматор. Предварительно создай папку с произвольным названием, в которую помести следующие файлы:

* непосредственно BIOS Patcher;
* файл-образ BIOS"a твоей материнской платы;
* CBROM - программа для просмотра/распаковки различных модулей BIOS"а;
* MODBIN - программа, позволяющая редактировать некоторые регистры чипсета, а также изменять надписи/опции в BIOS Setup.
* LHA - архиватор от Haruyasu Yoshizaki, алгоритм которого легв основу упаковки модулей Award BIOS;
* REALL.COD - файл микрокодов.

Напоминаем, что все необходимые файлы можно найти на сайте rom-by.com .
Далее в режиме DOS пишем следующее: Bp имя_файла-образа /ключ

Список доступных ключей декларируется следующим образом:
/c - задать название процессора, которое будет выводиться на экран ПК при старте. Указанное название будет одинаковым для любого вставленного в материнскую плату процессора.
/d - не удалять временные файлы.
/e - показать информацию о файле BIOS"а.
/h - вывод помощи.
/m - выбор пунктов для правки пользователем. Перед каждым внесением исправления будет выдан запрос.
/p - решение проблем работы памяти на VIA 693A/694X/694T.
/s - отключение срабатывания "отката". Рекомендуется к использованию после того, как ты убедишься в работоспособности пропатченного BIOS"a.
/v - оптимизация работы памяти для VIA-based MB P1/P2/P3.

Использовать какие-либо ключи необязательно - BIOS Patcher в таком случае автоматически внесет все исправления, если таковые необходимы.

Тестовое редактирование и перепрошивка BIOS"а старой материнской платы.

Для эксперимента мы взяли очень старую материнскую плату Lucky Star 5I-TX1 с процессором Intel Pentium MMX 200 МГц. Плата отказалась распознавать жесткие диски объемом более 32 Гб.
Приступаем к делу. Для начала скачиваем прошивальщик awdflash и сохраняем образ BIOS"а следующим образом: Awdflash.exe bios.bin /sy
Здесь bios.bin имя файла-образа.
Далее мы пошли самым простым путем: дали возможность BIOS Patcher"у сделать все самостоятельно. Для этого даем такую команду: BP-4_23.exe bios.bin
Здесь BP-4_23.exe - имя исполнительного файла BIOS Patcher"а версии 4.23. Процесс корректировки нашего BIOS"а занял несколько секунд (мы работали со старенького винчестера 4.3 Гб, при использовании дискеты времени уйдет больше). BIOS Patcher отрапортовал о внесенных изменениях, и мы вновь обратились к прошивальщику awdflash для прошивки исправленного BIOS"a в материнскую плату: Awdflash.exe bios.bin /py
После подключения жесткого диска Samsung SP0842N он был четко идентифицирован при старте. До наших операций с BIOS"ом старт ПК с таким винчестером был невозможен - загрузиться удавалось, только если новый винчестер выставить в состояние "Limit Capacity to 32 Gb".

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

  • Tutorial

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

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

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

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

AES NI unlock

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

Whitelist removal

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

BIOS lock removal

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

Advanced settings unlock

Что : разблокировка доступа к скрытым настройкам BIOS Setup.
Зачем : среди эти настроек может попасться что-то интересное, но обычно их скрывают не просто так.
Где искать : для Phoenix и Insyde меню хранится в HII-файлах с именами вроде SetupMain, SetupAdvanced и т.п. Для AMI меню хранится в файле Setup, а настройки - в AMITSE. Более того, AMI предоставляет пороизводителям end-user продуктов свою программу AMIBCP, версии которой частенько утекают в публичный доступ. Работа с ней достаточно проста, поэтому описывать её я не вижу смысла - скачайте и попробуйте.
Способ модификации : для AMI - открываем образ в AMIBCP, меняем настройки по умолчанию, сохраняем, прошиваем, выполняем сброс настроек, готово. Для Insyde и Phoenix все немного сложнее. Если доступ на запись в NVRAM не запрещен, можно воспользоваться методом товарища , описанным в , а вот если доступа нет - придется модифицировать прошивку. Потребуется разобрать формат 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, ибо это очень широкая тема, а статьи по ней буквально некуда приткнуть.
Спасибо за внимание, желаю вам удачных модификаций.

Метки: Добавить метки