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