Блог технического писателя Ильи Жукова

Декомпиляция CHM-файла

Файл в формате CHM представляет собой скомпилированный HTML. В него могут входить HTML-страницы, рисунки, таблицы стилей, скрипты и другие файлы. Подробное описание состава CHM смотрите в материале Формат HTML Help. Результирующий файл в формате CHM не редактируется. Отредактировать можно только файлы, входящие в его состав. Извлечь файлы или декомпилировать CHM можно при помощи бесплатной программы HTML Help Workshop.

 

Чтобы декомпилировать выбранный для примера файл api.chm:

  1. На локальном диске, например на диске С, создайте папку для работы test и в ней подпапку decompiled.
  2. Скопируйте файл chm в папку test.
  3. Запустите HTML Help Workshop.
  4. Выберите File / Decompile.

команда декомпиляции

  1. В окне Decompile .CHM file: нажмите на кнопку Browse справа от поля Destination folder и выберите папку decompiled.
  2. В поле Compiled help file: аналогичным образом выберите файл chm.

параметры декомпиляции

  1. Нажмите на кнопку ОК. На экран будет выведено сообщение о том, что 64 файла извлечено из файла chm.

Это именно те файлы, которые мы будем редактировать. Рассмотрим их подробнее:

  • CSS-файлы содержат таблицы стилей, определяющих внешний вид контента справки;
  • Рисунки в формате GIF — это скриншоты и другие рисунки, использованные в CHM-файле;
  • HTM-файлы соответствуют страницам разделов справки содержат текст, ссылки на рисунки, скрипты и т.д.
  • файл api.hhc содержит оглавление справки;
  • файл api.hhk содержит ключевые слова.

декомпилированные файлы

  1. Откройте в Проводнике папку C:\test\decompiled и найдите в ней .htm-файл, который соответствует разделу справки, открываемому по умолчанию при запуске chm. Это файл ov_main.htm.

 

Важно! Обратите внимание на то, что в содержании api.chm нет ссылки для открытия раздела из файла ov_main.htm. Это раздел справки, который открывается по умолчанию при запуске CHM-файла. Его можно также открыть при помощи кнопки Домой.

На этом декомпиляция CHM-файла завершена. Далее необходимо научиться собирать новый CHM-файл с функционалом, аналогичным оригиналу. Дело в том, что во время редактирования нужно будет периодически собирать CHM, чтобы в случае возникновения ошибок их было проще и быстрее найти. О том, как собрать новый CHM из полученных файлов, речь пойдет в следующем материале Создание и настройка проекта в HTML Help Workshop.

 

Добавить комментарий

Комментарии  

Ирина
# 0 Ирина 17.01.2019 15:35
Илья, здравствуйте!
Возможно, стоит добавить, что после декомпиляции и повторной сборки chm-файла теряется информация о контекстных вызовах справки. То есть, если chm-файл был частью какого-либо приложения и при работе в этом приложении по F1 открывались определенные страницы справки, то после процедуры редактирования справка будет везде открываться на первой странице (при условии, конечно, что ее назвали прежним именем и положили в прежнее место).
Или я не права и как-то можно при декомпиляции получить сведения, содержавшиеся в разделе MAP?
Ответить Ответить с цитатой Цитировать
Илья Жуков
# 0 Илья Жуков 18.01.2019 18:43
Ирина, здравствуйте! Вы правы: во время декомпиляции часть данных из CHM-файла, в т.ч. информация о контекстных вызовах справки, теряется. Во время декомпиляции из CHM не извлекаются служебные файлы. Полный список файлов из CHM можно посмотреть, например, при помощи 7-Zip. Данные о контекстных вызовах формируются из разделов .hhp --- [MAP] #define IDH_DefaultPage 1000 и [ALIAS] IDH_DefaultPage=ov_main.htm. --- и содержатся в служебном файле #IVB в виде 1000 = ov_main.htm. Извлекать такие данные из CHM и воссоздавать файл проекта .hhp умеют программы KeyTools (бесплатная) и CHMDecompiler (платная). Но в пересобранном из такого проекта CHM данных о контекстных вызовах не будет. Данные из разделов [MAP] и [ALIAS] можно получить во время декомпиляции, если в сборку исходного CHM-файла был включен файл проекта .hhp. Он не является служебным и будет декомпилирован вместе с остальными файлами описанным в статье способом.
Ответить Ответить с цитатой Цитировать
Ирина
# 0 Ирина 23.01.2019 14:18
Спасибо, Илья, очень интересно!
Я знала, что chm можно открыть архиватором, но не знала, что это за служебные файлы, начинающиеся с решетки. Правда, мой #IVB нечитаемый получился((
Ответить Ответить с цитатой Цитировать
Илья Жуков
# 0 Илья Жуков 24.01.2019 10:12
Часть служебных файлов из CHM можно прочитать при помощи программы KeyTools (разработчики Ralph Walden и Cheryl Lockett Zubak). Для просмотра файлов, входящих в состав CHM, без декомпиляции выберите Tools \ Examine CHM File. Файлы: #IDXHDR – количество узлов разделов; #IVB – данные контекстных вызовов; #SYSTEM – большая часть данных из файла проекта .HHP; #TOPICS – заголовки и URL разделов; #WINDOWS – определения использованных типов окон и другие файлы.
Ответить Ответить с цитатой Цитировать
Ирина
# 0 Ирина 30.01.2019 17:16
Спасибо еще раз, Илья. Собственно, пока у меня нет такой задачи, но на всякий случай приму к сведению.
Ответить Ответить с цитатой Цитировать

Последние статьи

Что нового в Help+Manual 8

10 февраля 2020 года вышла 8-я версия Help+Manual. Любой желающий может бесплатно скачать пробную версию с сайта компании-разработчика и оценить ее потенциал. В течени...

Читать полностью...

Работа со стилями в Help and Manual 7

Чтобы внешний вид нового CHM-файла соответствовал оригиналу, необходимо создать стили, применить их к проекту и очистить встроенное форматирование. Это позволит обеспе...

Читать полностью...

Форматы справки для ОС Linux

В рамках замещения импортного программного обеспечения все больше государственных структур переходят на отечественные сборки Linux. Прежде всего, это Alt Linux и Astra...

Читать полностью...

Сборка CHM-файла в Help and Manual

Регулярная сборка выходных файлов позволяет контролировать качество справки и исправлять ошибки по горячим следам. Она необходима для любого формата справки, а также д...

Читать полностью...

Основные настройки проекта в Help and Ma…

Если для сборки справки не используется шаблон (skin-file), внешний вид и основной функционал CHM-справки берется из настроек проекта. В этой статье я расскажу о том, ...

Читать полностью...

Импорт CHM в Help and Manual

Программный комплекс Help and Manual позволяет импортировать документацию из ряда форматов, в том числе, из HTML и CHM. Готовую документацию можно загрузить как в суще...

Читать полностью...

Как отредактировать CHM в Help and Manua…

Если вам нужно внести несколько небольших правок в CHM-файл, такую задачу можно успешно решить при помощи бесплатных программ HTML Help Workshop и Notepad++. Серьезная...

Читать полностью...

Как сделать качественные скриншоты

Равно как звук считается одним из основных показателей качества обучающих видеороликов, пользовательская и техническая документация не может быть признана качественной...

Читать полностью...

Внесение изменений и сборка нового CHM-ф…

Перед тем, как приступить непосредственно к редактированию содержимого CHM-файла, подытожим выполненные заранее подготовительные работы. Определившись с бесплатными пр...

Читать полностью...

Создание и настройка проекта в HTML Help…

Установив необходимые бесплатные программы, мы разобрали исходный файл api.chm и получили 64 файла (подробнее смотрите материал Декомпиляция CHM-файла). Это основная ч...

Читать полностью...

Редактирование CHM бесплатными программа…

Если заказчику или работодателю не принципиально, какое программное обеспечение использовать, я предпочитаю редактировать CHM в Help+Manual 7. Но как показывает практи...

Читать полностью...

Как отредактировать CHM-файл

Пользовательская документация для приложений, работающих в ОС Windows, чаще всего поставляется в формате CHM как встроенная в программу справка. Технические писатели, ...

Читать полностью...

Как создать справку в формате CHM

Формат HTML Help или CHM был разработан компанией Microsoft в 1997 г. Сегодня CHM остается стандартом справки для приложений, работающих в ОС Windows. Средство для про...

Читать полностью...

Бесплатный локальный сервер HM2GO для We…

Одна из моих предыдущих статей была посвящена особенностям работы WebHelp на локальных компьютерах. Некоторые популярные браузеры, в том числе Google Chrome, Opera и Я...

Читать полностью...

Дата в полном формате с месяцем в родите…

Сегодня пользовательская документация поставляется, как правило, в электронном формате и содержит дату выпуска. Ее обычно указывают в хедере, футере или в специальном ...

Читать полностью...

Корректная работа WebHelp на локальном к…

Вряд ли кто-то считает тестирование справки хоть сколько-нибудь сложной задачей. Тестирование документации вообще очень редко упоминается в профильной литературе. Мног...

Читать полностью...

Все о справке и документации для пользователей!

Следить за новыми статьями:

© Илья Жуков, 2019. Охраняется законом об авторском праве.