воскресенье, 4 декабря 2011 г.

1C: структура файла 1Cv7.MD

В файле живут метаданные программы. Только вот достаточно разумного объяснения как их разбирать я не нашел. Собирать пришлось по крупицам. Структура файла подпадает под MS формат Compound File Binary Format, который принято разбирать средствами MS. С MS мы не дружим и дружить не планируем. Структуру можно посмотреть каким-нибудь приложением, но дальше не продвинулся, потому что метаданные запакованы. Для упаковки использована библиотека zlibeng.dll. Я бы хотел научиться разбирать метаданные 1C, чтобы конвертировать базы.


Мое изучение метаданных началось с приложения Compound File Explorer, из которого я увидел, что 'MD program text' занимает минимально два байта 0x03 00. Написал тестовую программку с использованием функции zlib compress()
получил результат упаковки пустой строки в hex: 78 9C 03 00 00 00 00 01
Шапка '789C' означает стандартную упаковку, а в хвосте живет контрольная сумма по Adler-32 в порядке MSB. Контрольная сумма считается функцией adler32(1L, str, length);
Написал распаковку  'MD program text' используя zlib inflate(), для этого подставляю в начало потоку магические цифры '789C'. Умею теперь добывать тексты программ из 1Cv7.MD.

Комментариев нет:

Отправить комментарий