BIOS.modding.lite

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 микросхема Award BIOS с традиционной голографической наклейкой

Рисунок 2 набор BIOSSaviorkit для безопасного извлечения микросхемы BIOS'а с материнской платы и «кроватка» для резервного BIOS'а с переключателем, устанавливаемым на заднюю панель

Рисунок 3 положение рук при съемке микросхемы

Рисунок 4 установка «кроватки» с двойным BIOS'ом — снизу оригинальная микросхема, сверху — экспериментальная

Рисунок 5 двойной BIOS в собранном состоянии

Рисунок 6 переключатель, отвечающий за выбор между оригинальным (ORG) и экспериментальным (RD1) BIOS'ом

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

Комплект утилит для прошивки BIOS'а можно найти на сайте разработчика конкретного BIOS'а или производителя материнской платы. Некоторые производители (например, ASUS) вносят в BIOS большое количество изменений, в результате чего «родные» Award'овские утилиты перестают с ними работать и приходится использовать инструментарий, поставляемый вместе с материнской платой. Обычно там содержится: awdflsh.exe – «прожигатель», modbin – простой редактор BIOS'а, cbrom – просмотрщик содержимого BIOS'а и «добавитель» новых модулей в прошивку. Все эти утилиты можно найти на сайте www.rom.by. Там же находится замечательный падчер BIOS'а — BP.exe (сокращение от «BIOSPatсher»), исправляющий ошибки в известных ему прошивках и разблокирующий многие заблокированные возможности. Нашим основным инструментом будет интерактивный редактор BIOS'а AwardBIOSEditor, который можно бесплатно скачать c http://awdbedit.sourceforge.net/.

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

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

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

AMIBIOS'ы имеют специальный интерфейс, позволяющий работать с микросхемой FLASH-памяти (читать или прожигать), доступный через прерывания INT 15h и INT 16h(подробности — в InterruptList'e Ральфа Брауна). AwardBIOS'ы такой возможности не имеют и программируются через порты ввода/вывода.

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

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

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

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

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

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

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

Рисунок 10 разблокирование заблокированных возможностей в BIOS Setup в Award BIOSeditor'e

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

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

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

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

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

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

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

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

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

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

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

Запись «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.

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

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

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

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

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

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

  1. BIOSmods:
    1. портал, посвященный BIOS'у и его доработке (на английском языке): http:www.biosmods.com/; - ROM: - статьи по прошивке и доработке прошивок, уникальный инструментарий (на русском языке): http://www.rom.by__; - Часто задаваемые вопросы о BIOS: - довольно устаревшее, но все-таки полезное FAQ по BIOS'ам (на русском языке): http://www.ixbt.com/mainboard/faq/biosfaq.shtml__; - The Official Website of Pinczakko: - сайт неординарного индонезийского хакера, исследовавшего кучу BIOS'ов вдоль и поперек и вытворяющий с ними такое, что другим даже не снилось (на английском и индонезийском языках): http:www.geocities.com/mamanzip/;
  2. Modification of GigaByte GA-586HX BIOS rev 2.9 for support of HDD above 32 GiB:
    1. интересная статья о модификации BIOS, название которой говорит само за себя (на английском языке): http:www.ryston.cz/petr/bios/ga586hx_mod.html; - Award BIOS Reverse Engineering: - статья известнейшего хакера BIOS'а MappatutuSalihunDarmawan по внедрению своего кода в BIOS (на английском языке):http:www.codebreakers-journal.com/include/getdoc.php?id=83&article=38&mode=pdf;
  3. Award BIOS Code Injection:
    1. новые идеи по внедрению своего кода в BIOS (на английском языке): http:www.codebreakers-journal.com/include/getdoc.php?id=127&article=58&mode=pdf; - AWARD BIOS Source: - исходные тексты пары устаревших прошивок со скупыми комментариями. помогают понять общие принципы функционирования BIOS'а и разобраться в некоторых тонких местах, неочевидных при дизассемблировании: (на языке ассемблера): http:miscellaneous.newmail.ru/;
  4. Редактируем BIOS (Award Modular v.4.51):
    1. описание формата BIOS'а для его ручной распаковки (на русском языке): http:www.winsov.ru/bios002.php; - AMD 762 Chipset Tweaking (MP/MPX) Guide: - статья по редактированию регистров чипсета (на русском языке): http:www.tweakfactor.com/articles/tweaks/amd762/1.html;
  5. Using Oda's WPCREDIT On VIA Motherboards:
    1. разгон системы путем редактирования регистров чипеста (на английском языке): http:www.overclockers.com/tips105/index.asp; - H.Oda's Home Page: - утилита для модификации регистров чипеста на лету: http:www.h-oda.com/;
  6. Award BIOS Editor:
    1. редактор AwardBIOS'ов, распространяемый с исходными текстами на бесплатной основе: http:awdbedit.sourceforge.net/; - AWDhackv1.3: - утилита для автоматизированного внедрения своего кода в BIOShttp:webzoom.freewebs.com/tmod/Awdhack.zip;