Win95.CIH: Рукописи не горят!
        Три дня прошло с момента эпидемии вируса (статья опубликованна 29.04.99), попортившего жизнь многим пользователям. Три дня вполне достаточный срок чтобы впасть в отчаяние, да и отформатировать винчестер (это если у Вас Flash BIOS не рухнул) и переустановить систему, и я приношу свои извинения за задержку выхода этой заметки.
        Кто рассчитывает на ироничное чтиво на тему ╚как всё запущено╩ (в духе остальных материалов этого сайта) может чтение не продолжать. Это довольно сложный, технический материал о том как восстановить информацию жесткого диска утраченную в результате атаки вируса. Не стоит и думать о том что бы восстановить всю информацию, даже в самом благоприятном случае это возможно чисто теоретически. Используя эту заметку Вы, с некоторой степенью вероятности, сможете восстановить только наиболее актуальные для Вас файлы.
        Сначала теория. Физически стереть информацию с целого жесткого диска объёмом хотя бы 1 Гбайт довольно не просто. На это уйдёт минимум 10 минут, а если стирать информацию случайным образом (не последовательно) то значительно больше. Учитывая количество служебной (не авторской) информации на наших HDD можно надеется что Ваша информация ещё жива, но не доступна. И так наша задача упростилась. Информацию восстанавливать не надо, надо только восстановить доступ к ней. Для этого рассмотрим принцип хранения информации на диске для систем FAT12, FAT16, FAT32 и организацию самого диска.
        Сразу оговорюсь что данное описание является не техническим, а обзорным и нужно для понимания тех действий которые Вам предстоит предпринять для спасения файлов.
        Диск устроен очень просто. Он состоит из нескольких поверхностей по которым позиционируются головки. Позиционируются они по концентрическим дорожкам на каждой из которых располагается несколько секторов с данными. Сектор является минимальным адресуемым блоком данных для диска. Сектор содержит 512 байт полезной информации и ECC блок который нас не интересует.
        В самом начале диска находится главная загрузочная запись - MBR (Master Boot Record) и таблица разделов - PT (Partition Table), далее идёт загрузочная запись операционной системы - BR (Boot Record), затем таблица размещения файлов - FAT (File Allocation Table), корневой каталог - ROOT и файловая область - FA (File Area) (см. рис. 1).

        PT - состоит из четырёх элементов описывающих разделы диска. DOS и Windows используют только первые два элемента. Описание раздела диска содержит информацию о первых и последних головках, дорожках, секторах раздела, общем количестве секторов в разделе, типе файловой системы и признак того что раздел является загрузочным.
        MBR - находится в том же секторе что и PT. Данные в MBR представляют собой код процессора необходимый для дальнейшей загрузки операционной системы. В последних двух байтах MBR находится сигнатура 55AAh указывающая на то что данные в MBR необходимо использовать для загрузки. Если эта сигнатура отсутствует данные MBR не будут использованы.
        PT и MBR расположены на самом первом секторе HDD.
        BR - содержит массу данных и служит для описания параметров файловой системы. В отличии от диска, минимальным адресуемым блоком данных для операционной системы служит кластер состоящий из одного или нескольких секторов. В BR нам интересны такие данные как размер кластера, размер и количество копий FAT.
        FAT - Состоит из 12, 16 или 32 битных элементов количество которых равно количеству кластеров на диске. Нужны эти элементы для связи кластеров в цепочки соответствующие файлам. (см рис. 2)
        ROOT - Корневой каталог диска. Содержит записи описывающие файлы (дескрипторы файлов) в корневом каталоге. Такая запись описывает имя, тип, дату создания, размер, атрибуты файла, а так же содержит указатель на первый кластер файла. Каталоги представляют собой файлы идентичные по структуре корневому каталогу. Каталог кроме записей описывающих файлы содержит две записи одна из которых содержит указатель на первый кластер самого каталога, вторая на первый кластер родительского каталога.

        Будем считать что Вы всё поняли. :-) Если нет, то существует специальная литература где эти вещи расписаны подробнее и вероятно более доступно.
        Переходим к основной части - восстановление данных на HDD.
        Нам потребуются следующие вещи:
        По моим наблюдениям Win95.CIH в первую очередь ╚убивает╩ такие вещи как FAT и BR, при этом любезно оставляет нам ROOT. Приступим:
        ВАЖНО: Эта инструкция написана для ситуации когда имеется 1 логический диск.
        Если Вы поняли меньше 30% написанного здесь, Вам стоит обратится к услугам более компетентного человека, предварительно ознакомив его с данным текстом и удостоверившись в том что он понял более 30% информации.
        Удачи!
        PS: Данный метод был проверен и оказался эффективен на IDE HDD Quantum - 2.1Gb, Win95/Fat32, одного моего друга. Метод был использован для восстановления файлов курсовой работы.

Продолжение...
        Приведённая выше статья, вызвала отклик и мне хотелось бы ответить на некоторые часто задаваемые вопросы.
        Чаще всего спрашивают можно ли что то предпринять, когда винчестер уже отформатирован, а область ROOT не сохранена или разрушена вирусом ещё до форматирования.
        Да можно, при условии что файл(ы), который необходимо восстановить, находился в подкаталоге. Последовательность действий здесь такая:
        Вторым, часто задаваемым вопросом, был вопрос о восстановлении HDD ╚разбитого╩ на несколько логических дисков. Скажу сразу, по моим наблюдениям на таких HDD страдает только диск C: (первый раздел), а остальные разделы сохраняются и восстанавливаются довольно просто.
        Сначала немного теории. Как было сказано в первой части этой статьи таблица разделов (PT) состоит из 4-х элементов из которых используются только два. Этого явно не достаточно (даже при использовании всех 4-х элементов) для определения 26 логических дисков (максимальное число дисков для файловых систем FATxx). Поэтому при наличии более одного логического дика создаётся раздел типа EXTEND. В том месте диска где расположен первый сектор этого раздела находится запись формата PT. В ней описан сам логический диск и, следующий за ним раздел типа EXTEND (если таковой существует). Для такой ╚цепочки╩, естественно не существует ограничения в 26 элементов, оно введено исходя из количества букв в латинском алфавите. Поскольку у нас появился целый ряд записей формата PT условимся называть PT запись расположенную в самом первом секторе винчестера (там же где и MBR) - корневой PT или RPT.
        И так для восстановления всех логических дисков (исключая диск C) достаточно восстановить указатель на раздел EXTEND в RPT.
        Для того что бы это сделать надо предпринять следующие шаги:
        Удачи!