【问题标题】:Microsoft CHM contents -- how to view them?Microsoft CHM 内容——如何查看它们?
【发布时间】:2023-05-08 14:32:01
【问题描述】:

我有一个 .chm 文件(来自 7-Zip,但我认为这并不重要)。我提取了 .chm 的内容并获得了预期的 .hhc、.hhk、.htm 和 .css 文件。但是,我还有 10 个没有扩展名的文件,其中 8 个以哈希开头(例如“#OBJINST”),其中两个以美元符号开头。尝试在 Atom 或 VSCode 中打开这些文件时,我得到一堆随机字符(空方块、带问号的三角形等),其中散布着一些实际单词,例如“HHA 版本 4.74.8702”或“ 7zip.hhk”。

我正在尝试解析这些文件以了解有关 .chm 文件如何工作的更多信息,并且我真的很想弄清楚这些无扩展名文件如何工作/它们如何适合图片。我已经进行了谷歌搜索,但没有出现任何相关的内容。它看起来像是有编码的东西,但 Atom 的编码选项都没有修复问题。

知道这里发生了什么吗?更具体地说,我如何查看这些文件的内容(如果可以的话)?

【问题讨论】:

  • 从 Windows 资源管理器双击?通常它使用C:\WINDOWS\hh.exe打开...

标签: html encoding chm


【解决方案1】:

Microsoft CHM help file format 是一种专有的二进制格式,基本上是一个 LZX 存档,包括:

  • 主题内容为 HTML 或 MHT 文件
  • 随附的资产文件,例如图像、CSS、JavaScript...
  • 各种文本项目相关文件(目录、主题 ID...)
  • 我认为一些二进制文件包含索引(例如搜索引擎数据...)以加快操作

这些文件通常由Microsoft HTML Help Workshop 编译器直接生成或通过帮助创作工具生成,例如HelpNDocRoboHelp...

Microsoft HTML Help Workshop 软件可用于decompile CHM help files。 支持 LZX 算法的解压软件(如 7-zip)和帮助创作工具通常可用于从这些文件中提取内容。

据我所知,该格式没有微软官方文档,但一直是reverse engineered by Matthew T. Russotto

【讨论】:

    【解决方案2】:

    您知道 Windows HTML 帮助是作为带有 .chm 扩展名的 LZX 压缩二进制文件提供的。它包含一组 HTML 文件、一个超链接目录和一个索引文件。文件格式已经过逆向工程,其文档可免费获得,例如Unofficial (Preliminary) HTML Help Specification。这是我所知道的最好的。

    关于您的问题,您应该特别查看Internal file formats 部分。另请注意$FIftiMain 部分中的图片。

    但我想提醒您一点关于处理这种内部文件格式所浪费的时间。

    文件以字节“ITSF”(ASCII)开头,用于“信息技术存储格式”(参见Microsoft's HTML Help (.chm) format 文档)。 CHM 可以使用 FAR HTML 打开,如我对这个 SO 线程to get CHM details from help ID的回答中所示(见屏幕截图)@

    有关更多反编译信息,请查看Decompile CHM

    【讨论】: