Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:bios.modding [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== BIOS.modding ======
 +<​sub>​{{BIOS.modding.odt|Original file}}</​sub>​
 +
 +====== BIOS-моддинг ======
 +
 +крис касперски ака мыщъх
 +
 +**модификация ****BIOS****'​а таит в себе практически неограниченные возможности:​ экстремальный разгон системы,​ разблокирование заблокированных фич, исправление ошибок разработчиков,​ неуловимые вирусы,​ "​украшательства"​ под свой вкус — это высший пилотаж хакерства,​ требующий знания железа и умения держать дизассемблер в руках. это дремучий лес, в котором очень легко заблудится,​ но я покажу вам кратчайший путь.**
 +
 +===== введение =====
 +
 +Если процессор это сердце компьютера,​ то BIOS — его душа. Качество прошивки определяет все! К сожалению,​ качественные прошивки в живой природе встречаются крайне редко. Разработчики допускают грубые ошибки,​ блокируют многие полезные возможности (вот редиски!) и вообще ведут себя самым непотребным образом. Старые модели материнских плат зачастую вообще не имеют свежих прошивок и с новым оборудованием (например,​ жесткими дисками большого размера) они уже не работают,​ а ведь могли бы… ​
 +
 +Многие качественные материнские платы умышленно препятствуют разгону,​ имеют скудный диапазон допустимых знаний или слишком грубый шаг их изменения. Разумеется,​ очень многое зависит и от электрической части, но без правильной прошивки — никуда! В сети можно найти множество улучшенных прошивок,​ хакнутых энтузиастами,​ однако,​ все они заточены под вполне конкретную модель (как правило,​ уже устаревшую) и раздобыть прошивку для своей материнской платы невероятно трудно.
 +
 +А моддинг?​ Разве не заманчиво заставить компьютер перемигиваться огоньками во время загрузки или выводить красочный логотип на экран?​! Наконец,​ при желании можно написать крутой вирус, заражающий BIOS и препятствующий его удалению оттуда. Это не штука! Ничего сложного в этом нет, особенно если подцепить к вирусу готовые утилиты для редактирования BIOS'​а (их объем не составляет и полсотни килобайт),​ а утилита прошивки,​ как мы скоро увидим,​ содержится в самом 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 saviour (BIOS-спаситель). Приобрести их можно в продвинутых радиомагазинах или заказать по Интернету.
 +
 +{{bios.modding_Image_0.jpg?​314}}
 +
 +Рисунок 1 различные типы микросхем FLASH-памяти
 +
 +{{bios.modding_Image_1.jpg?​553}}
 +
 +Рисунок 2 BIOSSaviour,​ облегчающий выемку чипа с работающей матери
 +
 +{{bios.modding_Image_2.jpg?​198}}
 +
 +Рисунок 3 BIOSextractor в действии!
 +
 +Еще нам потребуется документация на чипсет материнской платы. Компании Intel и AMD бесплатно выкладывают все даташиты на сайт. Другие производители (VIA, SiS) держат ее под спудом и отдают только за деньги плюс подписку о неразглашении,​ поэтому приходится изрядно попыхтеть,​ прежде чем удается что-то нарыть.
 +
 +Комплект утилит для прошивки BIOS'​а можно найти на сайте разработчика BIOS'​а или производителя материнской платы. Некоторые производители (например,​ ASUS) вносят в BIOS множество изменений,​ в результате чего "​родные"​ Award'​овские утилиты перестают с ними работать и приходится использовать инструментарий,​ поставляемый вместе с материнской платой. Обычно там содержится:​ awdflsh.exe – "​прожигатель",​ modbin – простой редактор BIOS'​а,​ cbrom – просмотрщик содержимого BIOS'​а и "​добавитель"​ новых модулей в прошивку. Все эти утилиты можно найти на сайте www.rom.by. Там же находится замечательный падчер BIOS'​а — BP.exe (сокращение от "​BIOSPather"​),​ исправляющий ошибки в известных ему прошивках и разблокирующий многие заблокированные возможности. Нашим основным инструментом будет интерактивный редактор BIOS'​а AwardBIOSEditor,​ который можно бесплатно скачать с http://​awdbedit.sourceforge.net/​.
 +
 +Ассемблер — MASM, TASM или FASM, дизассемблер — IDA Pro (четвертая версия которой распространяется на бесплатной основе) или NASM, шестнадцатеричный редактор — HIEW или HexWorkshop.
 +
 +===== как мы будем действовать =====
 +
 +Модификация BIOS'​а — очень рискованное занятие (только для сильных духом мужчин!). Малейшая ошибка — и система отказывается загружаться,​ выдавая унылый черный экран. Большинство современных матерей снабжены защитами от неудачных прошивок,​ однако,​ они срабатывают лишь тогда, когда BIOS действительно поврежден. К тому же, как мы покажем в дальнейшем,​ легко написать свое OEM-расширение ROM, препятствующее перезаписи BIOS"​а штатными средствами.
 +
 +Вот для этих целей нам и требуется второй BIOS! Запускаем материнскую плату, дампим прошивку (или скачиваем обновленную версию с сайта производителя),​ модифицируем ее по своему вкусу, затем, не выключая компьютера,​ аккуратно вынимаем оригинальный чип, откладывая его в сторону,​ вставляем чип, над которым мы будем экспериментировать,​ и, запустив AWDFLASH.EXE,​ заливаем хакнутую прошивку в BIOS. Теперь,​ случись вдруг чего, мы всегда сможем вернуть оригинальный чип на место, исправить ошибку и перешить экспериментальный BIOS вновь.
 +
 +Насколько такая процедура безопасна?​ По правде говоря,​ опасности нас подстерегают на каждом шагу. Микросхема может выскользнуть из рук и упасть на плату, малейшая ошибка в прошивке может вывести оборудование из строя (например,​ нечаянно "​задрать"​ напряжение или тактовую частоту). До приобретения боевого опыта лучше всего насиловать старые материнские платы, которые все равно идут в утиль (например,​ Pentium-155).
 +
 +
 +
 +===== >>>​ врезка как прожигают BIOS'​ы =====
 +
 +AMIBIOS'​ы имеют специальный интерфейс,​ позволяющий работать с микросхемой FLASH-памяти (читать или прожигать),​ доступный через прерывания INT 15h и INT 16h (подробности — в InterruptList'​e Ральфа Брауна). AwardBIOS'​ы такой возможности не имеют и программируются через порты ввода/​вывода.
 +
 +Конструктивно FLASH-микросхема подключена к южному мосту чипсета. Со всеми вопросами обращайтесь к нему, а точнее к его документации. ​
 +
 +{{bios.modding_Image_3.png?​553}}
 +
 +Рисунок 4 микросхема FLASH-памяти,​ подключенная к южному мосту
 +
 +===== >>>​ врезка DUAL-BIOS своим руками =====
 +
 +Всякий,​ умеющий держать паяльник в руках, может доработать материнскую плату, установив на нее сразу две микросхемы FLASH–памяти. Тогда, между ними можно будет переключаться без рискованных манипуляций с chip-extractor'​ом. Пример схемы подключения приведен ниже. Как видно, ничего сложного в DUAL-BIOS'​е нет.
 +
 +{{bios.modding_Image_4.png?​278}}{{bios.modding_Image_5.jpg?​254}}
 +
 +Рисунок 5 принципиальная схема 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) и другие идентификационные строки подобного типа. А давайте напишем "​hackedbyVisualSexLtd,​ hacker'​sTurbo-BIOS",​ чтобы потом поприкалываться над подвыпившими приятелями.
 +
 +{{bios.modding_Image_6.png?​553}}
 +
 +Рисунок 6 AwardBIOSeditor готовый к хачинью текстовых строк, высвечивающихся при загрузке системы
 +
 +Точно так же можно заменить все надписи в BIOS Setup (они находятся во вкладке BIOS Options),​ при желании указав значения по умолчанию (ну те самые, что загружаются по команде "​loaddefaultBIOSconfiguration"​). Наибольший интерес представляют пункты,​ помеченные как "​Disabled"​. Это опции, заблокированные производителем! Простым переводом радио кнопки в состояние "​Active"​ мы разблокируем их! Разумеется,​ никакой гарантии,​ что они заработают у нас нет! Чаще всего блокируются недоделанные или нестабильно работающие режимы и возможности. Реже — производитель просто не хочет, чтобы материнские платы начального уровня конкурировали с дорогими моделями,​ вот и тормозит их.
 +
 +{{bios.modding_Image_7.png?​553}}
 +
 +Рисунок 7 разблокирование заблокированных возможностей в BIOS Setup
 +
 +А хотите изменить логотип,​ высвечивающийся в северо-восточном углу экрана?​ Это совсем несложно сделать. Старые BIOS'​ы хранили картинку в logo-формате (конвертор для которого прилагается к статье),​ который страдал кучей ограничений. Сейчас же секция "​LOGO"​ обычно пуста, а картинка хранится в секции "​EPA pattern"​ в стандартном BMP-формате. Ограничений на размер и глубину цветности нет никаких,​ однако,​ не все BIOS'​ы поддерживают слишком большие и цветастые картинки. Я поступал так: извлекал оригинальный логотип в файл ("​ExportasWindows BMP"​),​ загружал его в Paint, где и правил его в свое удовольствие без изменения количества цветов и размеров. Результат моей работы приведен ниже. Мыщъх – это я. И я атакую! При желании можно зашить в BIOS полноэкранное лого, высвечивающиеся при загрузке (этим занимается одноименная утилита от Award, входящая в штатный комплект поставки многих ASUS'​ых матерей).
 +
 +{{bios.modding_Image_8.png?​553}}
 +
 +Рисунок 8 хакнутый логотип
 +
 +Запустив утилиту BP.EXE с ключиком /c, мы сможем вручную задать имя процессора,​ высвечивающиеся при загрузке и его тактовую частоту. Реальная тактовая частота процессора отображаться уже не будет. Почему бы не написать "​AMDPentium-5 600 GHz"​ и не показать это друзьям?​
 +
 +Да много чего можно придумать! В умелых руках BP.EXE и Award BIOSeditor творят чудеса! Как бы там ни было, после всех издевательств прошивка должна быть залита в BIOS. О том как это сделать,​ можно прочитать в документации на материнскую плату, мы же не будем толочь воду в ступе, оставим мелкие шалости и перейдем к более серьезным вещам.
 +
 +===== настройка PCI-регистров =====
 +
 +Конфигурирование чипсета осуществляется через специальные регистры,​ доступные через шину PCI. При загрузке системы BIOS настраивает процессор,​ контроллер системной шины, контроллер оперативной памяти и всю прочую периферию в соответствии с настойками,​ выбранными в BIOS Setup. Однако,​ практически ни один BIOS не дает доступа ко всем настройкам или умышленно ограничивает диапазон доступных значений. Как быть, что делать?​
 +
 +Запускаем Award BIOSeditor,​ заходим в System BIOS,​ находим вкладку "​ChipsetRegisters"​ и открываем документацию на чипсет. Где-то там будет раздел "PCI Configuration Registers"​ или что-то в этом роде. Для каждого из регистров будет указано устройство (device), к которому он "​подключен"​),​ номер функция (function) и номер самого регистра,​ называемый смещением (offset). Все регистры 8-битные,​ однако,​ несколько последовательных регистров могут объединяться в слова или даже двойные слова.
 +
 +Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает,​ что часть настроек в ней отсутствуют. Даже в заблокированных возможностях (о которых мы уже говорили выше) их нет! В частности,​ мой любимый AMD 761 поддерживает намного больший диапазон таймингов,​ чем BIOS. В частности,​ чтобы установить <​sup>​t</​sup>​PR в 1 такт (BIOS по умолчанию ставит 3 такта и не дает это умолчание изменять),​ необходимо модифицировать 8 и 7 биты регистра Dev 0:​F0:​0x54,​ присвоив им значение 2 (или "​10"​ в двоичной нотации). Остальные биты не трогать! А как это сделать?​ Необходимо наложить маску (mask), которая в данном случае будет выглядеть так: "​XXXX XXX1 1XXX XXXX"​. Как видно, 8 и 7 бит установлены в единицу,​ остальные помечены знаком "​Х",​ указывающим BIOS'​у что данный бит необходимо оставить без изменений.
 +
 +
 +
 +{{bios.modding_Image_9.png?​552}}
 +
 +Рисунок 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.
 +
 +Возвращаемся к AwardBIOSEditor'​у,​ находим среди регистров регистр с номером 0x54, и кликнув правой клавишей мыши, выбираем пункт "​modify"​. В появившимся окне первые три поля (Register, PCI, PCI) оставляем без изменений (это номер регистра,​ устройства и функции),​ а вот с двумя последующими полями "​Resister"​ и "​Value"​ придется разобраться особо. Мы не можем просто взять и записать значение 0x80, поскольку в этом регистре уже хранятся какие-то параметры,​ модифицирующие остальные поля. Мы должны устанавливать лишь "​наши"​ биты (в данном случае это бит 7), а над остальными выполнить операцию логическое "​OR"​ по маске. Аналогичным образом настраивается и регистр 55h.
 +
 +{{bios.modding_Image_10.png?​553}}
 +
 +Рисунок 10 разгон системы при помощи редактирования конфигурационных регистров
 +
 +Залив обновленную прошивку в BIOS и установив качественные модули памяти,​ мы с удовлетворением замечаем,​ что быстродействие системы ощутимо возросло. Таким же точно образом можно редактировать и остальные регистры,​ отсутствующие в BIOS Setup,​ однако наши возможности будут довольно ограничены.
 +
 +===== >>>​ выноска =====
 +
 +Некоторые утилиты,​ например,​ WPCREDIT.EXE,​ позволяют редактировать содержимое некоторых регистров чипсета "​налету"​ прямо из-под Windows, что особенно полезно для экспериментов по экстремальному разгону систем,​ однако,​ их возможности весьма ограничены,​ поскольку многие регистры должны настраиваться лишь на стадии инициализации чипсета и всякая попытка их изменения на работающей системе носит непредсказуемых характер или не носит вообще никакого (чипсет нас попросту игнорирует).
 +
 +===== >>>​ врезка интересные ссылки =====
 +
 +  - **BIOSmods**
 +    - портал,​ посвященный 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____/​__;​
 +  - **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'​а MappatutuSalihunDarmawan по внедрению своего кода в 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**
 +    - редактор AwardBIOS'​ов,​ распространяемый с исходными текстами на бесплатной основе:​ __http____://​____awdbedit____.____sourceforge____.____net____/​__;​
 +  - **AWDhack****v****1.3**
 +    - утилита для автоматизированного внедрения своего кода в BIOS__http____://​____webzoom____.____freewebs____.____com____/​____tmod____/​____Awdhack____.____zip__;​
 +