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

Стряпаем MBR

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

Хакер, номер #079, стр. 079-114-6


PUSH DEVICE_NAME ; имя устройства

CALL CreateFile ; открываем устройство

INC EAX

TEST EAX,EAX

JZ error

DEC EAX

…

DEVICE_NAME DB "\\.\PHYSICALDRIVE0",0

BUF RB 512 ; буфер

Открыв физический диск и убедившись в успешности этой операции, мы должны прочитать оригинальный MBR-сектор в буфер, перезаписать первые 1BBh байт, ни в коем случае не трогая Таблицу Разделов и сигнатуру 55h AAh (мы же не хотим, чтобы диск перестал загружаться, верно?). Обновление MBR, закрытие хэндла устройства, и останется только перезагрузиться, затем все изменения вступят в силу. А может быть, и не вступят… Загрузчик жестоко мстит за малейшие ошибки проектирования, и чтобы не потерять содержимое своих разделов, для начала лучше попрактиковаться на VM Ware или любом другом эмуляторе PC.

Под Windows 9x, кстати говоря, трюк с CreateFile не работает. Но там можно воспользоваться симуляцией прерываний из DMPI или обратится к ASPI-драйверу. Оба способа подробно описаны в моей книге «Техника защиты компакт-дисков от копирования», фрагмент которой прилагается к журналу. И хотя в ней идет речь о CD, а не о HDD, жесткие диски программируются аналогичным способом.

[заключение]

Программирование загрузчиков — одна из тех немногих областей, в которых применение ассемблера действительно оправдано. Языки высокого уровня для этого слишком абстрагированы от оборудования и недостаточно гибки. Вот почему хакеры так любят возиться с загрузчиками, добавляя сюда множество новых фич, таких, например, как: автоматическая загрузка с CD-ROM или SCSI-винтов, противодействие вирусам, парольная защита с шифрованием данных и т.д. Здесь действительно есть где развернуться и показать себя. Но читать о новых идеях скучно и неинтересно. Намного приятнее генерировать их самостоятельно. Так чего же ты сидишь?!

[отладка загрузчика]

Отлаживать код загрузчиков невероятно трудно. Загрузчик получает управление задолго до запуска операционной системы, когда никакие отладчики еще не работают. Несколько лет назад это представляло огромную проблему и при разработке навороченных загрузчиков приходилось либо встраивать в них специальный мини-отладчик, либо выискивать ошибки руками, головой и карандашом. С появлением эмуляторов все изменилось. Достаточно запустить BOCHS и отлаживать загрузчик, как и любую другую программу!

[содержимое компакт-диска]

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

ge2000.asm: тщательно откомментированный Stealth-вирус, подменяющий системный загрузчик своим собственным. Не опасен, может быть использован в учебных целях.

mbr.asm: предельно простой, но полнофункциональный загрузчик с поддержкой разделов свыше 8 Гбайт, но увы — без комментариев.

boot.asm: отличный менеджер мультизагрузки с подробными комментариями, переходит в защищенный режим, может грузиться с дискеты, компакт-диска, zip'а, винчестера и т.д., поддерживает разделы свыше 8 Гбайт, показывает индикатор загрузки и делает множество других полезных вещей, которые не помешает изучить.

Назад на стр. 079-114-5  Содержание  Вперед на стр. 079-114-7