CHM — это переодетая папка
Внутри .chm лежит совершенно обычный маленький сайт: HTML-страницы, одна-две таблицы стилей, несколько картинок и файл содержания .hhc. Контейнер ITSS от Microsoft держит их в каталоге записей, разложенных по одному или двум разделам содержимого — раздел 0 как есть, раздел 1 сжат алгоритмом LZX.
Этот инструмент перечисляет каждую запись с путём, размером, разделом и типом и записывает их обратно настоящими файлами. Архив сохраняет внутренние пути: /html/page1.htm становится html/page1.htm, поэтому после распаковки получается папка, по которой можно ходить, а не куча файлов с искалеченными именами. Ради этого справку и извлекают: ссылки между страницами после этого продолжают работать.
Механика, если она нужна
За переключателем список показывает и те потоки ITSS, которые обычная распаковка прячет: ::DataSpace/NameList, ::DataSpace/Storage/MSCompressed/ControlData, таблицу сброса LZX, /#SYSTEM, /#STRINGS и прочие. Это и есть устройство контейнера, и возможность в него заглянуть иногда оказывается именно тем, что нужно.
О записях, которые не удалось восстановить, сказано прямо
Если байты записи получить не удалось, она не попадает в архив. Она появляется в списке ошибок с конкретным сообщением.
Причина такой твёрдости: декодер LZX на этом сайте написан по спецификации [MS-PATCH] и по lzxd.c из libmspack, и хотя его чтение битового потока, декодирование Хаффмана, несжатые блоки и фильтр x86 покрыты модульными тестами, декодирование блоков verbatim и aligned ни разу не запускалось на выводе компрессора самой Microsoft — офлайн-корпуса для проверки не было.
Обрезанный или испорченный файл внутри извлечения хуже отсутствующего: проблема обнаружится намного позже, когда файл уже где-то в другом месте, а CHM исчез. Поэтому неудача сообщается как неудача.
Также показано
Заголовок справки, тема по умолчанию, имена файлов содержания и указателя, компилятор, который её собрал, и какое сжатие используют разделы содержимого. Чтобы читать страницы, а не извлекать их, воспользуйтесь просмотром CHM.
Конфиденциальность
Файл справки открывается и распаковывается в браузере. Ничего не загружается на сервер.
Tiny Online Tools







