我有一个 .chm 文件(来自 7-Zip,但我认为这并不重要)。我提取了 .chm 的内容并获得了预期的 .hhc、.hhk、.htm 和 .css 文件。然而,我还得到了另外 10 个没有扩展名的文件,其中 8 个以哈希开头(例如“#OBJINST”),其中两个以美元符号开头。当尝试在 Atom 或 VSCode 中打开这些文件时,我收到一堆随机字符(空方块、带问号的三角形等),其中散布着一些实际单词,例如“HHA Version 4.74.8702”或“ 7zip.hhk".
我正在尝试解析这些文件以了解有关 .chm 文件如何工作的更多信息,并且我真的很想弄清楚这些无扩展名文件如何工作/它们如何适应图片。我已经进行了谷歌搜索,但没有弹出任何看起来相关的内容。它看起来像是编码的问题,但 Atom 的编码选项都没有解决这个问题。
知道这是怎么回事吗?更具体地说,我如何查看这些文件的内容(如果可以的话)?
Microsoft CHM 帮助文件格式是一种专有的二进制格式,基本上是 LZX 存档,包括:
这些文件通常由 Microsoft HTML Help Workshop 编译器直接生成或通过帮助创作工具(例如 HelpNDoc、RoboHelp...
)生成Microsoft HTML Help Workshop 软件可用于反编译 CHM 帮助文件。 通常可以使用支持 LZX 算法的解压软件(例如 7-zip)以及帮助创作工具来从这些文件中提取内容。
据我所知,该格式没有官方的 Microsoft 文档,但它已被 Matthew T. Russotto 逆向工程。
您知道 Windows HTML 帮助以 LZX 压缩二进制文件的形式提供,扩展名为 .chm。它包含一组 HTML 文件、一个超链接的目录和一个索引文件。文件格式已经过逆向工程,并且其文档可以免费获取,例如非官方(初步)HTML 帮助规范。这是我所知道的最好的。
关于您的问题,您应该特别查看内部文件格式部分。另请注意 $FIftiMain 部分中的图像。
但我想警告您一点,处理这种内部文件格式会浪费时间。
该文件以字节“ITSF”(ASCII 格式)开头,表示“信息技术存储格式”(请参阅 Microsoft 的 HTML 帮助 (.chm) 格式 文档)。可以使用 FAR HTML 打开 CHM,如我对此 SO 线程的回答中所示(参见屏幕截图)从帮助 ID 获取 CHM 详细信息
有关更多反编译信息,请参阅反编译 CHM。