自己动手反编译CHM帮助文件
反编译chm及电子书的程序很多,网上也有很多例子,这里介绍用.net来反编的简单过程,大家可以扩展
1
ITStorageWrapper storage = new ITStorageWrapper(@"d:\help.chm");
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
foreach (IBaseStorageWrapper.FileObjects.FileObject fileObject in storage.foCollection)
4
{
5
if (fileObject.CanRead)
6
{
7
if (fileObject.FileName.EndsWith(".htm"))
8
{
9
MessageBox.Show("Path: " + fileObject.FileName);
10
fileObject.Save(@"d:\" + fileObject.FileName);
11
}
12
}
13
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
当然,也可以将图片、脚本、样式表之类的一并导出来。
这里的IStorageWrapper其实是封装了Ole32.dll的StgOpenStorage,有兴趣的可以阅读微软的结构化存储(Structured Storage)
dll下载:
/Files/JohnXP/RelatedObjects.Storage.rar
posted on 2007-06-08 16:44 ~~John 的网络涂鸦纪实~~ 阅读(548) 评论(0) 编辑 收藏 举报