Microsoft CHM 内容——如何查看它们?

Microsoft CHM contents -- how to view them?

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

我正在尝试解析这些文件以了解更多关于 .chm 文件如何工作的信息,我真的很想弄清楚这些无扩展名文件 work/how 它们如何适合图片。我进行了 google 次搜索,但没有弹出任何似乎相关的内容。它看起来像是编码的东西,但是 Atom 的编码选项的 none 解决了这个问题。

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

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

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

这些文件通常由 Microsoft HTML Help Workshop compiler, either directly or via a help authoring tool such as HelpNDoc, RoboHelp...

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

据我所知,没有针对该格式的官方 Microsoft 文档,但 reverse engineered by Matthew T. Russotto

你知道 Windows HTML 帮助是作为 LZX compressed binary file with the .chm extension. It contains a set of HTML files, a hyperlinked table of contents, and an index file. The file format has been reverse-engineered and documentation of it is freely available e.g. Unofficial (Preliminary) HTML Help Specification 提供的。这是我知道的最好的了。

关于您的问题,您应该查看 Internal file formats section in particular. Please also note the image in the $FIftiMain 部分。

但我想提醒您注意处理这种内部文件格式所浪费的时间。

文件以字节“ITSF”(ASCII 格式)开头,用于“信息技术存储格式”(参见Microsoft's HTML Help (.chm) format documentation). The CHM can be opened using FAR HTML like shown (see screenshot) in my answer of this SO thread to get CHM details from help ID

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