Криптография - статьи




Формат PWL-файлов Windows'OSR2/98/ME - часть 2


01E0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

01F0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

0200: FF FF FF FF FF FF FF FF 52 02 00 00 00 00 00 00

0210: 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00

0220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0240: 01 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00

0250: 00 00 88 51 47 58 2C 74 13 7C 6F D7 9E 9D 58 59

0260: 0B 3A A5 22 85 22 94 80 58 F9 61 00 B6 51 72 28

0270: D5 D7 3A 58 23 03 DD BC A7 4B E7 E2 71 65 66 CE

0280: 3F 58 FC 59 76 02 F0 12 8E 5F 79 94 39 E0 36 29

0290: 13 B9 8E 3B A1 F3 74 D4 78 38 01 E0 B5 FE DE A3

02A0: 80 CC 4E B7 67 1D 7C 36 7B C5 AA 76 4C D0 8E EE

02B0: 28 78 8A BB 7A 5A 81 2C AB 29 79 97 33 89 60 79

02C0: F7 6C 1C 72 1B 33 0A 09 F2 7E E4 3A A6 BE F4 C6

02D0: AE 06 DE 31 67 BB EA 7B D5 CA AE 01

Теперь внимательно посмотрим, из каких полей состоит файл:

  1. Сразу оговорю следующие ограничения PWL-файлов: в файле может находится максимум 16 блоков ресурсов. Максимальное количество ресурсов в файле - 255. Это ограничения самой Windows. В каждом блоке может располагаться любое количество ресурсов, но их суммарное количество не может быть больше 255. И еще одно ограничение PWL-файла - то, что он не может быть больше 64кБ.
  2. Итак, первое, что мы видим - это сигнатура (т.е. первые 4 байта файла), которая равна 0x968582E3, сразу же замечу, что у PWL-файлов от Windows'3.11/95 сигнатура другая - 0x4E464DB0.
  3. По смещению 0x4 следует DWORD с неизвестным содержимым.
  4. По смещению 0x8 следует WORD. Он определяет общее кол-во ресурсов в файле. В нашем примере - 2 ресурса.
  5. Начиная с адреса 0x00A до адреса 0x109 располагается странная таблица размером 255 байт. Какую она содержит информацию, известно лишь Microsoft. Есть предположение, что там хранятся номера ресурсов, хотя эта таблица для декодирования данных из файла в принципе не нужна.
  6. Начиная с адреса 0x109 до адреса 0x208 находится другая таблица (тоже размером 255 байт), в которой хранится такая информация: любой байт из этой таблицы равный i (кроме 0xFF) означает, что i-й блок содержит ресурсы. Количество одинаковых байт равных i в данной таблице отражает количество ресурсов в i-м блоке. В нашем примере - 1-й байт в таблице показывает, что у нас имеются ресурсы в 13-м (0x0D) блоке, а 2-й байт в таблице показывает, что у нас имеются ресурсы в 3-м блоке ресурсов.



  7. Содержание  Назад  Вперед