Теперь, разбив файловую запись на атрибуты, можно приступить к исследованию каждого из атрибутов в отдельности. Начнем с разбора имени. 8-разрядное поле, находящееся по смещению 08hот начала атрибутного заголовка (и по смещению 98hот начала сектора), содержит флаг нерезидентности. В данном случае этот флаг равен нулю. Это значит, атрибут резидентный, и его тело хранится непосредственно в самой файловой записи, что уже хорошо. 16-разрядное поле, расположенное по смещению 0Сhот начала атрибутного заголовка (и по смещению 9Chот начала сектора) равно нулю, следовательно, тело атрибута не сжато и не зашифровано. Таким образом, можно приступать к разбору тела атрибута. 32-разрядное поле, расположенное по смещению 10hот начала атрибутного заголовка (и по смещению A0hот начала сектора), содержит длину атрибутного тела, равную в данном случае 54hбайт. 16-разрядное поле, расположенное по смещению 14hот начала атрибутного заголовка и по смещению A4hот начала сектора, хранит смещение атрибутного тела, равное в данном случае 18h. Следовательно, тело атрибута $FILE_NAMEрасполагается по смещению A8hот начала сектора.
Формат атрибута типа $FILE_NAMEописан в табл. 6.9. Первые восемь байт содержат ссылку на родительский каталог этого файла, равную в данном случае 11ADBh:01(индекс — 11ADBh, номер последовательности — 01h). Следующие 32 байта содержат данные о времени создания, изменения и времени последнего доступа к файлу. По смещению 28hот начала тела атрибута и D0hот начала сектора лежит 64-разрядное поле выделенного размера, а за ним — 64-разрядное поле реального размера. Оба равны нулю, что означает, что за размером файла следует обращаться к атрибутам типа $DATA.
Длина имени файла содержится в 8-разрядном поле, находящемся по смещению 40hбайт от начала тела атрибута и по смещению E8hот начала сектора. В данном случае оно равно 09h. Само же имя начинается со смещения 42hот начала тела атрибута и со смещения EAhот начала сектора. И здесь находится имя файла llfak.dbx.
Переходим к атрибуту основных данных файла, пропустив атрибут стандартной информации, который не содержит решительно ничего интересного. 8-разрядный флаг нерезидентности, расположенный по смещению 08hот начала атрибутного заголовка и по смещению 108hот начала сектора, равен 01h, следовательно, атрибут нерезидентный. 16-разрядный флаг, расположенный по смещению 0Chот начала атрибутного заголовка и по смещению 10Chот начала сектора, равен нулю, значит, атрибут не сжат и не зашифрован. 8-разрядное поле, расположенное по смещению 09hот начала атрибутного заголовка и по смещению 109hот начала сектора, равно нулю — атрибут безымянный. Реальная длина тела атрибута (в байтах) содержится в 64-разрядном поле, расположенном по смещению 30hот начала атрибутного заголовка и по смещению 130hот начала сектора. В данном случае она равна 4ED1F0h(5.165.552). Два 64-разрядных поля, расположенных по смещениям 10h/110hи 18h/118hбайт от начала атрибутного заголовка/сектора соответственно, содержат начальный и конечный номер виртуального кластера нерезидентного тела. В данном случае они равны: 0000hи 4EDhсоответственно.
Остается лишь декодировать список отрезков, адрес которого хранится в 16-разрядном поле, находящемся по смещению 20hот начала атрибутного заголовка и 120h от начала сектора. В данном случае поле равно 40h, что соответствует смещению от начала сектора в 140h. Сам же список отрезков выглядит так: 32 EE 04 D9 91 00 00. Ага! Два байта занимает поле длины (равное в данном случае 04EEhкластерам) и три — поле начального кластера ( 0091h). Завершающий ноль на конце говорит о том, что этот отрезок последний в списке отрезков.
Подытожим полученную информацию. Файл называется llfak.dbx, он начинается с кластера 0091hи продолжается вплоть до кластера 57Fh, при реальной длине файла в 5.165.552 байт. Это все, что надо! Теперь остается только скопировать файл на резервный носитель (например, ZIP или стример).
Сейчас мы немного отвлечемся и поговорим о... компьютерных вирусах, обитающих внутри NTFS и активно использующих ее расширения в своих личных целях. В любом случае конструирование вирусов — отличный стимул к изучению ассемблера! И хотя вирус в принципе можно написать и на Си, это будет как-то не по-хакерски и вообще неправильно! Настоящие хакеры пишут только на FASM. Итак, запускаем Multi-Edit или TASMED и погружаемся в мрачный лабиринт кибернетического мира, ряды обитателей которого скоро пополнятся еще одним зловредным созданием...
Читать дальше
Конец ознакомительного отрывка
Купить книгу