Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #78, ИЮНЬ 2005 г.

BIOS на блюдечке

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

Хакер, номер #078, стр. 078-108-3


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

Первым в списке модулей идет 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 – набор текстовых ASCII-строк, используемых BIOS'ом. Вот где можно развернуться начинающим хакерам. Подделать, скажем, версию BIOS’а на «Xakep Edition».

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'а мы займемся потом, после того как разберемся с уже имеющимися модулями. Чтобы начать дизассемблирование, необходимо найти их точки входа. Существует по меньшей мере пять основных типов модулей, и у каждого свои особенности в этом плане.

Назад на стр. 078-108-2  Содержание  Вперед на стр. 078-108-4