Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Документация »   BIOS-моддинг
RSS

BIOS-моддинг

<<Назад  Вперед>> Страницы: 1 2
Печать
 
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
BIOS-моддинг

Автор: © Крис Касперски ака мыщъх

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

Введение или "что нам понадобится?"

Для экспериментов нам потребуется материнская плата с FLASH-BIOS'ом на борту. BIOS может быть любым. Главным образом, мы будет говорить об Award'е, как самом "правильном" и популярном BIOS'е, однако владельцы всех остальных не останутся в стороне. Для них мы приготовили универсальный способ внедрения, работающий со всеми BIOS'ами!

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

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


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


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


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


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

Комплект утилит для прошивки BIOS'а можно найти на сайте разработчика BIOS'а или производителя материнской платы. Некоторые производители (Intel, ASUS) вносят в BIOS множество изменений, в результате чего "родные" утилиты перестают с ними работать и приходится использовать инструментарий, поставляемый вместе с материнской платой. Ассемблер - MASM, TASM или FASM, дизассемблер - IDA Pro (четвертая версия которой распространяется на бесплатной основе) или NASM, шестнадцатеричный редактор - HIEW или HexWorkshop.

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

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

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

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

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

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


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

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

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


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

BIOS изнутри

Чтобы модифицировать BIOS, необходимо знать его структуру. Настоящие хакеры модифицируют непосредственно машинный код, дописывая все необходимые компоненты вручную. В древних AT весь BIOS умещался в последнем сегменте адресного пространства, простилающимся от F000:0000 до F000:FFFF. Современные прошивки занимают порядка 256 - 512 Кб и чтобы обеспечить обратную совместимость, BIOS пришлось разбить на несколько частей, в результате чего он приобрел сложную модульную структуру, с которой не так-то просто разобраться.

Но мы же не боимся трудностей, верно? Вот перед нами лежит прошивка (пусть для определенности это будет прошивка 06/19/2003-i845PE-W83627-9A69VPA1C-00 с именем файла 4PE83619.BIN). Как дизассемблировать ее?! IDA едет крышей и ничего путного не показывает. Будем исходить из того, что последний байт прошивки расположен по адресу F000h:FFFFh, а точка входа в BIOS находится по адресу F000h:FFF0h.

Загружаем файл в HIEW или ИДУ, отсчитываем 10h байт от его конца и дизассемблируем код. С вероятностью близкой к единице, там будет торчать межсегментный переход:


Рисунок 6. HEX-дамп последних 30h байт прошивки (машинная команда, расположенная в точке входа, выделена красным цветом).


Рисунок 7. Дизассемблерный листинг окрестностей точки входа в прошивку.

В данном случае переход указывает на адрес F000h:E05Bh. Как найти это место в прошивке? Да проще простого - если 7FFF0h это F000h:FFF0h, то 0F000h:0E05Bh это: 7FFF0h ‑ (FFF0h ‑ E05Bh) =7FFF0h ‑ 1F95h = 7E05Bh. Здесь расположен следующий код:


Рисунок 8. Начало дизассемблирования boot-блока.

Место, в которое мы попали, называется загрузочным блоком (boot-block или boot-kernel). Загрузочный блок, предельно допустимый размер которого составляет 64 Кб, выполняет первичную инициализацию оборудования и загружает все остальные блоки, хранящиеся в упакованном виде.


Рисунок 9. Вот так (или примерно так) устроен Award BIOS.

Естественно, перед дизассемблированием остальных блоков их необходимо распаковать. Нормальный распаковщик можно написать и самостоятельно, однако проще взять уже готовый и автоматически извлечь все модули. В частности, обладатели Award'а могут запустить cbrom с ключом /D (или bp.exe с ключом /e), чтобы узнать - из каких блоков состоит данная версия BIOS и по каким адресам они располагаются? (Утилиту cbrom можно найти на диске, прилагаемом к материнской плате или скачать с сайта www.rom.by).

В нашем случае картина будет выглядеть так:




Рисунок 10. Результат работы утилиты BP.EXE, распечатывающей список модулей, слагающих BIOS, с их основными характеристиками.


Ух ты, сколько всего! Первым идет 9a69vpa1.BIN (original.tmp). Основной код BIOS'а сосредоточен именно здесь. Как мы видим, original.tmp загружается по адресу 5000h:0000h и занимает 128Кб. Да-да, BIOS загружается в оперативную память, впрочем надолго он в ней не задерживается и перед передачей управления загрузочному сектору (на винчестерах это MBR, на дискетах - boot) он обязан освободить эти адреса.

Следом идет awardext.rom (ALT part). Это расширение основного BIOS, которое инициализирует оборудование на финальной стадии загрузки (автодетектирует жесткие диски и оптические приводы, выводит таблицу PnP/PCI устройств и т.д.), а в модуле awardeyt.rom (ALT_2 part) содержится его продолжение.

CPUCODE.BIN - это просто набор микрокодов для всех поддерживаемых BIOS'ом моделей процессоров. Микрокоды предназначены для исправления ошибок, допущенных при их разработке, однако для нормальной работы системы этот модуль, в общем-то, некритичен. Хотя, при желании можно скачать свежую версию микрокодов с сайта Intel или AMD и залить их в BIOS.

ACPITBL.BIN - еще один модуль данных. Здесь содержится таблица ACPI (Advanced Configuration and Power Interface - Улучшенный Интерфейс Питания и Конфигуации). ACPI - это отнюдь не простой менеджер питания (как наивно полагают многие). Это еще и корневой перечислитель, грубо говоря - самая главная шина, управляющая всеми устройствами и автоматически распределяющая системные ресурсы (в частности - прерывания). Модификация этой таблицы открывает большие возможности, однако это тема для отдельного разговора.

_EN_CODE.BIN - набор текстовых ASCIIZ-строк, используемых BIOS'ом. Вот где можно развернуться начинающим хакерам!

AWDFLASH.EXE - утилита для прошивки BIOS. Вполне окейный исполняемый файл, запускаемый из-под MS-DOS. Так что для написания универсального прошивальщика BIOS ничего, кроме этого самого BIOS, не нужно! Для написания вирусов, поражающих BIOS, это актуально.

pxe.lom - хотя BP.EXE опознала этот модуль как "SCSI", текстовые строки внутри него показывают, что в действительности это набор драйверов для интегрированных устройств, а именно: VIA VT6105 Rhine III Fast Ethernet Adapter, VIA VT6105M Rhine III Management Adapter, Intel UNDI, PXE-2.0 (build 082).

Помимо вышеперечисленных, в BIOS могут входить и другие модули, например: VGA BIOS для поддержки интегрированного видео, anti_vir.bin для защиты загрузочных секторов от вирусов, decomp_blk.bin - обособленный LHA-распаковщик и т.д. Мы также можем добавлять свои собственные модули для поддержки ISA и PCI-устройств, чем мы в последствии с успехом и воспользуемся (естественно, никаких "своих" устройств у нас нет, это просто один из многих способов внедрения постороннего кода в BIOS).

Впрочем, модификацией BIOS'а мы займемся потом, после того, как разберемся с уже имеющимися модулями. Чтобы начать дизассемблирование, необходимо найти точку входа. А как ее найти? Существует, по меньшей мере, пять основных типов модулей. У первых точка входа расположена по смещению 10h байт от конца модуля. Если здесь находится jmp, значит это наш клиент! (Так, в частности, устроены загрузочный и основные блоки).


Рисунок 11. Модуль 9a69vpa1.BIN с точкой входа по смещению 10h от конца (первый байт точки входа выделен красным).


Другие блоки содержат сигнатуру 55h AAh в своем начале. Если это так, следующий байт определяет длину модуля, выраженную в 512-байтовых секторах (например, 10h секторов соответствует 8Кб). Точка входа находится по смещению 03h от начала и обычно здесь стоит jmp. Так, в частности, устроены pxe.lom, i815.vga, все ISA/PCI-модули и многие другие блоки.


Рисунок 12. Модуль pxe.lom c сигнатурой 55 AA.

Блоки третьего типа начинаются с обыкновенного текстового (или нетекстового) заголовка, заканчивающегося нулем. За нулем находится точка входа, опять-таки в подавляющем большинстве случаев представляющая старый добрый jmp. По такому принципу устроены awardext.rom, decomp_blk.bin, anti_vir.bin...


Рисунок 13. Модуль decomp_blk.bin с текстовым заголовком, завершающимся нулем.

Блоки четвертого типа лишены заголовка и сразу же начинаются с точки входа. Наглядный пример тому - awardeyt.rom.


Рисунок 14. Модуль awardeyt.rom с точкой входа в самом начале.

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

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

Сложнее всего дизассемблирование INTEL BIOS'ов. Фактически, это AMI BIOS'ы, но какие же они извращенные! Точка входа лежит в середине файла и чтобы ее найти, необходимо отыскать последовательность FA/FC/8C C8/8E D0 (CL/CLD/MOV AX,CS/MOV SS,AX). Собственно, это не совсем точка входа, но нечто, очень к ней приближенное. Впрочем, для наших целей она вполне подходит.

Боевое крещение или ISA-ROM модуль

Разобравшись с устройством BIOS'а, мы можем написать свое собственное расширение. Проще всего добавить к BIOS'у нестандартный ISA ROM модуль. Обычно такие модули используются для управления интегрированными ISA-контроллерами (например, дополнительным COM-портом). Разумеется, никакого ISA-контроллера у нас нет. ISA-слоты давно исчезли с материнских плат, но ISA-модули по-прежнему поддерживаются BIOS'ом (программистам лень править отлаженный код). ISA-модуль загружается после того, как отработает основной код BIOS (original.tmp), и получает полный доступ ко всему оборудованию, в том числе и PCI-шине. (При желании, можно добавить и PCI-модуль, однако это намного сложнее. Потребуется взвести регистр XROMBAR - Expansion ROM Base address - и подделать идентификатор PCI-устройства в заголовке модуля так, чтобы он совпадал с идентификатором реально существующего устройства).

ISA модуль представляет собой обычный двоичный файл с размером, кратным 200h байт, всегда загружающийся по адресу xxxx:0000h. Часть оборудования (оперативная память, клавиатура, видеокарта) к моменту его вызова уже инициализирована, а часть (жесткие диски, например) еще нет. Прерывания INT 10h (видео) и INT 16h (клава) можно использовать не боясь, а вот с INT 13h (диски) ничего не получится (то есть, получится, конечно, но не сразу и не просто так).

В начале ISA-модуля расположен стандартный 55 AA-заголовок, о котором мы уже говорили, а в последнем байте хранится контрольная сумма. Простейший ISA-ROM модуль, написанный на FASM'е, выглядит так:


Листинг 1. ISA-модуль. При загрузке компьютера выводит приветствие на экран и ждет слова "мыщъх", набранного на латинской раскладке (ENTER - начать ввод заново). Что-то вроде дополнительной парольной защиты, которую без выдирания BIOS'а никто не взломает!

Пропустив исходный файл через транслятор ("FASM ISAOEM.ASM"), мы получим на выходе ISAOEM.BIN. Загружаем его в HIEW и дополняем нулями до размера кратного 200h байт, затем рассчитываем контрольную сумму. Контрольная сумма рассчитывается стандартным образом: мы просто складываем все байты друг с другом и находим остаток от деления на 100h. Т.е. sum = (sum + next_byte) & 0xFF. Контрольная сумма всего блока должна равняться нулю, следовательно, последний байт блока равен (100h - sum) & 0xFF. Для расчета контрольной суммы я написал нехитрый скрипт для IDA:


Листинг 2. IDA-скрипт, автоматически рассчитывающий контрольную сумму.

Как вариант, можно использовать Hew Workshop (tools -> Generate Check sum -> 8 bit checksum). В нашем случае Hew Workshop сообщает CFh, следовательно, последний байт равен: 100h - CFh = 31h. Записываем его по смещению 1FFh и сваливаем из HIEW'а. Добавляем новый модуль в BIOS (CBROM.EXE 4PE83619.BIN /ISA ISAOEM.bin) и с замиранием сердца прожигаем BIOS утилитой UNIFLASH или любой другой. Перезагружаем машину...

Если все было сделано правильно, экран должен выглядеть приблизительно так:


Рисунок 16. Хакнутый BIOS, ожидающий ввода секретного пароля.

Оторвать мыщъх'у хвост! Это работает!!! (а если не работает, то оторвать и подавно). Теперь поговорим о том, как захачить жесткие диски (например, написать boot-вирус, который бы автоматически восстанавливался после форматирования). Прерывание INT 13h здесь не поможет, поскольку ISA-блок отрабатывает до инициализации дисков, и приходится писать резидент. (А еще говорят, что вирусы в BIOS'е не живут! Еще как живут! Даже резидентством занимаются). Основной код BIOS'а всегда загружает boot/MBR-сектор по адресу 0000:7C000h и передает ему управление. Установив на этот адрес аппаратную точку останова, мы "всплывем" в тот момент, когда все оборудование уже инициализировано и работает как часы.

Весь вопрос в том, куда спрятать наш код? По умолчанию, ISA-блок распаковывается в оперативную память, которая впоследствии злобно затирается всеми, кому не лень. Давным-давно, когда землей владели динозавры, а на компьютерах стояла MS-DOS, многие вирусы размешались внутри таблицы прерываний, верхняя половина которой остается незадействованной и по сей день. От адреса 0000:01E0h до ~0000:384h простилается ничейная область, в которой можно разместить ~360 байт своего обработчика. Для наших целей этого вполне достаточно.

Следующий код устанавливает аппаратную точку и перехватывает прерывание INT 01h, которое генерируется при передаче управления на загрузочный сектор. Обработчик прерывания пусть каждый пишет самостоятельно. Фактически, он представляет собой обыкновенный boot-вирус, образец которого легко найти в сети.


Листинг 3. Перехватчик передает управление нашему коду в момент загрузки Boot-сектора.

BIOS на виражах или модификация boot-блока

Вышеописанный способ внедрения работает только на Award и отчасти Phoenix, что не есть хорошо. Существует универсальный способ, совместимый со всеми BIOS'ами, однако он далеко не так прост. Единственное место, куда мы можем внедриться - это boot-блок, а точнее - безусловный переход, лежащий по адресу F000h:FFF0h.

Давайте возьмем какой-нибудь BIOS и дизассемблируем его (пусть для определенности это будет AMI 6728 ver. 52 от материнской платы MSI 865PE Neo3-F, имя файла прошивки A6728IMS.520).


Листинг 4. Внешний вид типичного boot-блока (фрагмент).

В хвосте boot-блока находится ~200h нулей, что вполне достаточно для размещения нашего кода. Исправляем EA CD FF 00-F0 (jmp 0F000:0FFCD) на EA 30 7F 00 F0 (jmp 0F000:7F30), копируем свой код поверх нулей и радуемся жизни. Естественно, в других прошивках эти цифры могут несколько отличаться, поэтому перед внедрением в BIOS наш код должен автоматически находить длинную последовательность нулей в его хвосте. Это легко. Сложнее пересчитать контрольную сумму. Различные BIOS'ы хранят ее в различных местах. Что делать? Матчасть учить, вот что! Контрольная сумма boot-блока равна нулю. Это закон. Поэтому нам достаточно рассчитать контрольную сумму нашего кода и добавить к его концу два байта (у boot-блоков, в отличие от ISA-блоков, подсчет контрольной суммы ведется не по байтам, а по словам), добившись чтобы его контрольная сумма равнялась нулю, тогда и контрольная сумма всего boot-блока будет равна нулю! Искать местоположение оригинальной контрольной суммы не нужно!

Итак, мы в boot-блоке. Ну, и что мы будем делать? А ничего! Никакие устройства еще не инициализированы, даже стека нет! Оперативная память также не подготовлена, поэтому установка аппаратных точек останова ничего не даст, мы просто не сможем перехватить вектор прерывания! Это конец? Вовсе нет, это только начало! Мы знаем, что всякий boot-блок, независимо от своей половой принадлежности, выполняет первичную инициализацию оборудования - в частности, подключает внешние BIOS'ы, находящиеся на картах расширения. И делает он это тогда, когда оперативная память уже подготовлена к работе.

В нашем случае, эта конструкция находится по смещению 7078Dh от начала файла.


Листинг 5. "Волшебная" последовательность 55 AA 7x.

Все, что нам надо - это найти последовательность типа "55 AA 7x ??" (CMP XXX, AA55h) и заменить "7x ??" на "EB xx" (JMP SHORT ххх, где xxx - указатель на наш код, внедренный в boot-блок). Естественно, перед затиранием "7x ??" его необходимо сохранить в своем коде. Вот теперь можно устанавливать перехватчик на boot-сектор. Причем, поскольку наш код находится в BIOS'е в неупакованном виде, ютиться в таблице прерываний совершенно необязательно и можно перенаправить вектор прерывания INT 01h прямо в BIOS!

Преодолевая барьеры

Мы можем перехватить прерывание INT 13h (и не давать его изменять!) оставаясь в BIOS'е резидентно. Только что это дает? Windows не использует INT 13h и потому наш код будет активен только на стадии первичной загрузки операционной системы. Но ведь мы же можем читать/писать сектора? Правда, писать собственный драйвер файловой системы нам лень. Хорошо, если это FAT, а как быть с NTFS? Да как два пальца об асфальт! Последовательно сканируя сектора, находим сектор с сигнатурой "MZ" в начале. Смотрим, если за концом EXE-заголовка, расположена "PE"-сигнатура, значит это PE-файл и мы можем внедряться в него любым приемлемым способом. Внедряться лучше всего в PE-заголовок, поскольку файл может быть фрагментирован и не факт, что все последующие сектора принадлежат ему, а не какому-нибудь другому, ни в чем не повинному файлу.

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

Разгон системы

Чтобы разогнать систему, необходимо написать свой ROM-модуль, настраивающий чипсет на максимальную производительность. Конфигурирование чипсета осуществляется через специальные регистры, находящиеся глубоко внутри него и подключенные к шине PCI. Описание регистров можно найти в даташите. Где-то там будет раздел "PCI Configuration Registers" или что-то в этом роде. Сравнение конфигурационных возможностей чипсета с BIOS Setup показывает, что часть настроек обычно бывает умышленно заблокирована производителем материнской платы.

В частности, регистр 80000064h чипсета VIA Apollo Pro 133 управляет чередованием банков памяти (чередование существенно увеличивает производительность), в то время как многие материнские платы на его основе такой возможности не имеют. А как ее поиметь?

У PCI-шины есть два замечательных порта. В порт CF8h заносится адрес чипсетного регистра, с которым мы хотим работать, а через порт CFCh происходит обмен данными. Большинство чипсетных регистров представляют собой набор управляющих битов, поэтому перед тем, как что-то записывать в порт CFCh, мы сперва должны прочитать текущее состояние чипсета, взвести/опустить нужные нам биты при помощи операций OR и AND, после чего затолкать обновленный регистр на место.

На языке ассемблера это выглядит так:


Листинг 6. Расширение BIOS'а, задействующее режим чередования DRAM-банков (только для чипсета VIA Apollo Pro 133! Обладатели других чипсетов должны заменить константы в соответствии со своей документацией).

Данный модуль может быть оформлен либо как ISA-ROM, либо внедрен в boot-блок. Главное, чтобы он получил управление после того, как BIOS произведет первичную инициализацию оборудования, иначе наши настройки будут проигнорированы! Зашив обновленную прошивку в BIOS, мы с удовлетворением замечаем, что быстродействие системы ощутимо возросло. Таким же точно образом можно редактировать и остальные регистры, отсутствующие в BIOS Setup, разгоняя систему до скорости реактивного гепарда, которому в известное место залетел шмель.

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


Рисунок 17. Пропускная способность подсистемы памяти с режимом чередования по умолчанию.


Рисунок 18. Пропускная способность подсистемы памяти после разгона.

Заключение

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

Интересные ссылки

• 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/ga586hx_mod.html;

• Award BIOS Reverse Engineering
Статья известнейшего хакера BIOS'а Mappatutu Salihun Darmawan по внедрению своего кода в BIOS (на английском языке): http://www.codebreakers-journal.com/content/view/57/97/;

• Award BIOS Code Injection
Новые идеи по внедрению своего кода в BIOS (на английском языке): http://www.codebreakers-journal.com/content/view/282/97/;

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

• Редактируем BIOS (Award Modular v.4.51)
Описание формата BIOS'а для его ручной распаковки (на русском языке): http://www.winsov.ru/bios002.php;

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

• Using Oda's WPCREDIT On VIA Motherboards
Разгон системы путем редактирования регистров чипсета (на английском языке): http://www.overclockers.com/tips105/index.asp;

• H.Oda's Home Page
Утилита для модификации регистров чипсета "на лету": http://www.h-oda.com/;

• Award BIOS Editor
Редактор Award BIOS'ов, распространяемый с исходными текстами на бесплатной основе: http://awdbedit.sourceforge.net/;

• AWDhack v1.3
Утилита для автоматизированного внедрения своего кода в BIOS http://www.bios.ru/programs/crack/awdhack.zip;


Источник: http://www.insidepro.com
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
Залил подборку утилит для работы с BIOS.

AMI:

amiflash 8.95
AMIBCP 7.60.04
AMIBCP 3.13
MMTool 3.19

AWARD:

AWARD BIOS source for 6a69mv3
AWARD BIOS source for i430TX
awdflash v8.87
Award BIOS Editor
AWDhack v1.3
cbrom32 v1.82
CBROM V2.07
CBROM V2.08
CBROM V2.15
CBROM V6.06
modbin6 2.01.02
WinFlash 1.92
Award BIOS Reverse Engineering
LHA version 2.55
Award BMP2EPA 1.1 - конвертер файлов BMP->EPA
Converta - Award BIOS formats converter 3.08 (BMP/MON/BIT/LAY)
Руководство пользователя программы Converta (на русском)

PHOENIX:

Phlash16 1.6.5.4
BIOS Editor Pro 2.0.18.0
BIOS Editor Pro 2.2.0.1
WinPhlash 1.50.55


Подборка, включающая:
- Описание настроек Award Setup BIOS
- Советы по настройке BIOS Setup
- Как перепрошить BIOS
- Утилиты для работы с BIOS:
-- CBROM V2.05
-- CBROM V2.07
-- CBROM V2.08
-- CBROM V6.02B
-- MODBIN V4.50.60
-- MODBIN V4.50.75
-- ModBin6 1.00.20
-- awdflash V6.6
-- awdflash V7.08
-- awdflash V7.21
-- awdflash V7.33
-- awdflash V7.53
-- awdflash V7.7
-- awdflash V7.76A
-- awdflash V8.08

BIOS utility v 1.35.1 - программа для всяких дополнительных функций оперирования с биосом - от ClearCMOS до выключения ATX из-под доса.

CMOSdump - программуля для сохранения CMOS, причём не только 128, а всех 256 байт.

Коллекция UniFlash разных версий:
1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.40

Коллекция UniFlash разных версий + исходные коды на Паскале:
1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.40
uav1606
Advanced Member


Откуда: Енакиево
Всего сообщений: 4373
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 янв. 2008
Книжка Рэя Дункана "IBM ROM BIOS":
http://depositfiles.com/ru/files/5693983
Ещё немного утилит (раздел неподходящий, но раз уже начали :-) :
Утилита CMOSER для работы с CMOS памятью:
ftp://ftp.csus.edu/pub/ASME/programs/cmoser.zip
Утилита Tweak BIOS для настройки разных параметров чипсетов, BIOS, PCI-устройств и т.д. (в основном, старых):
ftp://musicpro.inion.ru/FreeSo...wk153b.zip
Утилита RW-Everything для чтения (и записи - в некоторых случаях) различной информации об аппаратном обеспечении (включая информацию об основной BIOS и BIOS плат расширения):
http://rweverything.phpnet.us/bin/RwV034.zip
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
На тему замены логотипов BIOS:

- Замена Energy Star Logo в Award BIOSе (статья на ixbt.com)
- Галерея готовых логотипов в форматах png/bmp/epa1/epa2 (более 250 штук!) - ссылка сдохла
- Ещё галерея готовых логотипов

Софт для этого дела можно скачать из вышеуказанной подборки утилит для работы с BIOS (добавил конвертер файлов BMP->EPA и утилиту "converta" - Award BIOS formats converter с описанием на русском).

Примеры логотипов из галереи:



Крайний справа логотип когда-то был успешно "интегрирован" мной в BIOS материнки Abit BE6-II. :cool:
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
Книга "BIOS. Дизассемблирование, модификация, программирование" + CD-ROM
Автор - Дармаван Салихан, издательство - "БХВ-Петербург", 2007г.



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

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

Зеркало 1
Зеркало 2
Зеркало 3
Зеркало 4
Зеркало 5

За ссылки благодарим notsaint.
DOS Logic
Advanced Member
d(-_-)b

Откуда: Украина. Ивано-Франковск
Всего сообщений: 4778
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
1 июля 2006
[q]
Книга "BIOS. Дизассемблирование, модификация, программирование" + CD-ROM
[/q]
у меня есть такая бумажная :thumbup:

Кстати там в книге в начале 6-й главы, вспоминается такой набор утилит как BNOBTC (Borg Number One's BIOS Tool Collection) так вот я их в инете долго искал а потом качнул откуда-то с торрентов и то не очень быстро качало. Сейчас перезалил архивчик, там тучи программ для работы и разными боисами. Архив 126 мб. Качать отсюда:
http://www.sendspace.com/file/i9dbe3
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
DOS Logic написал:
[q]
Сейчас перезалил архивчик, там тучи программ для работы и разными боисами.
[/q]
Спасибо! :thumbup:
Baza
Advanced Member


Откуда: С-Петербург
Всего сообщений: 615
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
13 мая 2005
BNOBTC какой сборки?
у меня вроде есть шестая
Krautsov
Advanced Member


Откуда: Беларусь, Минская область, Клецк
Всего сообщений: 459
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
11 сен. 2008
UFO написал:
[q]
- Галерея готовых логотипов в форматах png/bmp/epa1/epa2
[/q]
Not Found

The requested URL /epas.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.9 Server at www.biosmods.com Port 80
Krautsov
Advanced Member


Откуда: Беларусь, Минская область, Клецк
Всего сообщений: 459
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
11 сен. 2008
Krautsov написал:
[q]
UFO написал:
[q]
- Галерея готовых логотипов в форматах png/bmp/epa1/epa2
[/q]
Not Found

The requested URL /epas.php was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.9 Server at www.biosmods.com Port 80
[/q]
Может кто знает где скачать набор FullscreenLogo различные... У меня мать Epox ?
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
Вот тут есть кое-какие логотипы из той галерии:

http://www.rabidhardware.net/?id=378
Krautsov
Advanced Member


Откуда: Беларусь, Минская область, Клецк
Всего сообщений: 459
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
11 сен. 2008
UFO написал:
[q]
Вот тут есть кое-какие логотипы из той галерии:
[/q]
а может кто встречал уже готовые фуллскрин лого ?
timon44
Newbie


Всего сообщений: 1
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 мар. 2012
перезалито!
BNOBTC v6 ( BIOS Tool Collection) можно скачать по этому адресу ;)

http://depositfiles.com/files/xwdnc84n6?redirect
wrenchrox
Advanced Member
Inhale

Откуда: Москва
Всего сообщений: 1888
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
11 нояб. 2009
UFO написал:
[q]
"BIOS. Дизассемблирование, модификация, программирование"
[/q]
Ссылки умерли...
UFO
Гость


Всего сообщений: 5443
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
12 дек. 2006
wrenchrox написал:
[q]
UFO написал:
[q]
"BIOS. Дизассемблирование, модификация, программирование"
[/q]
Ссылки умерли...
[/q]
Вроде бы, первая ссылка (на depositfiles.com) живая.
wrenchrox
Advanced Member
Inhale

Откуда: Москва
Всего сообщений: 1888
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
11 нояб. 2009
О, точно, поехало.
Один раз выдало, что файл недоступен.
<<Назад  Вперед>> Страницы: 1 2
Печать
Полигон-2 »   Документация »   BIOS-моддинг
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS