Восстановление информации своими руками


Последовательности обновления (update sequence) - часть 2


По смещению 006h от начала сектора находится 16-разрядное поле, хранящее совокупный размер номера последовательности обновления вместе с массивном последовательности обновления (sizeof(update sequence number) + sizeif(update sequence array)), выраженный в словах (не в байтах!). Поскольку, размер номера последовательности обновления всегда равен одному слову, то размер массива последовательности обновления, выпаженный в байтах, равен: (update sequence number & update sequence array ? 1)*2. Соответственно, смещение массива оригинального содержимого равно: (offset to update sequence number) + 2. В NT и W2K update sequence number всегда располагается по смещению 2Ah от начала FILE Record Header/INDEX Header, а update sequence array – по смещению 2Сh. В XP же и более старших системах – по смещениям 2Dh и 2Fh соответственно.

Первое слово массива последовательности обновления соответствует последнему слову первого сектора FILE Record/INDEX. Второе – последнему слову второго сектора, и т. д. Для восстановления сектора в исходный вид, мы должны вернуть все элементы массива последовательности обновления на их законные места (естественно, модифицируется не сам сектор, а его копия в памяти).

Продемонстрируем это на следующем примере:

 

--> начало первого сектора FILE Record

00000000:  46 49 4C 45-2A 00 03 00-7C 77 1A 04-02 00 00 00  FILE* ¦ |w>¦O  

00000010:  01 00 02 00-30 00 01 00-28 02 00 00-00 04 00 00  O O 0 O (O   ¦ 

00000020:  00 00 00 00-00 00 00 00-06 00 06 00-00 00 47 11          ¦ ¦   G<

000001F0:  00 00 00 00-00 00 00 00-00 00 00 00-00 00 06 00                ¦

<-- конец первого сектора FILE Record

000003F0:  07 CC E1 0D-00 09 00 00-FF FF FF FF-82 79 06 00  •Iad 0  yyyyВy¦

<-- конец второго сектора FILE Record




Начало  Назад  Вперед



Книжный магазин