青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Welcome to ErranLi's Blog!

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用鏈接

留言簿(12)

搜索

  •  

積分與排名

  • 積分 - 178126
  • 排名 - 152

最新評論

閱讀排行榜


CHM格式解析


CHM格式有一個初始化頭,占38H字節(jié),后面是header section和到正文 段的偏移量。加在一起,這些被稱為文件頭。
header section一共有兩個section,一個是文件目錄,另一個包含著文件長度和一些未知信息。
初始化頭:
前 四個字節(jié)為ITSF,第二個雙字為版本信息,第三雙字是文件頭的總長度,第四雙字值為1,第五雙字是一個時間記錄,(第一個字節(jié)是MSB,第二個字節(jié)是 fractional seconds(second byte),第三個字節(jié)可并不確定,第四個字節(jié)僅能知道其符號位是確定的。)第六雙字是windows語言ID標識,后面16個字節(jié)是兩個連續(xù)的組ID, 分別為{7C01FD10-7BAA-11D0-9E0C-00A0-C922-E6EC}
和{7C01FD11-7BAA-11D0-9E0C-00A0-C922-E6EC}
后面是header section的表,其中有兩項,每項占16個字節(jié),記錄著從文件頭開始的偏移量和section的長度,各占8個字節(jié)。
后面還有8個字節(jié)的信息,這些在版本2里是沒有的。
header section 0:
第一雙字:0x01fe
第三雙字為文件大小
共占5個雙字,其余雙字均為0
header section 1(directory header)
開始的四個字節(jié)為ITSP,
后面的雙字為版本號,
第三雙字為本section長度,
第四雙字信息未知,
第五雙字值為0x1000,是目錄塊的大小,
第六雙字是quickref section的“密度”,一般是2
第七雙字是索引樹的深度,1表示沒有索引,2表示有一層的PMGI數(shù)據(jù)塊。
第八雙字表示根索引的塊號,如果沒有索引為-1
第九雙字是第一個PMGL(listing)的塊號
第十雙字是最后一個PMGL的塊號
第十一雙字是-1
第十二雙字是目錄塊的塊數(shù)
第十三雙字是windows語言ID標識
從這里開始有16個字節(jié)的GUID{5D02926A-212E-11D0-9DF9-00A0C922E6EC}
然后四個雙字不知道是什么東西
本段共84個字節(jié)
從這里開始往后都是數(shù)據(jù)塊,分為兩種,一種是列表塊(listing chunks),一種是索引塊(index chunks)其中列表塊的格式如下:
開始是四個字節(jié)PMGL
然后的四個字節(jié)是目錄塊尾部的空白區(qū)的長度或是quickref區(qū)域的長度
第三雙字恒為0
第四雙字是前一個列表塊的塊號,如果這是第一個塊,該值為-1
第五雙字是后一個列表塊的塊號,如果這是最后一塊,該值為-1
從這里開始是目錄列表項,按文件名排序,并且大小寫不分
quickref區(qū)是從數(shù)據(jù)塊的后面向前寫,每隔n個項出現(xiàn)一個quickref,且n的值為1+(1<<“密度”),其格式從后至前為
第一個字:整個數(shù)據(jù)塊中的項數(shù)
第二個字:從第0項到第n項之間的偏移量
第三個字:從第0項到第2n項之間的偏移量
以此類推
目錄列表的每一項的格式如下:
encint型名字長度,后面是UTF-8編碼的名稱,encint型正文段,encint型偏移量,encint型長度,其中偏移量是從解壓縮之后的正文段的開始來計算的,同樣長度也是表示解壓縮之后的長度。
在目錄中存在兩種文件,用戶數(shù)據(jù)文件和格式信息文件,格式信息文件以兩個連續(xù)的冒號“::”開頭,用戶數(shù)據(jù)文件以“/”開頭。
索引塊:
前四個字節(jié)為PMGI
后面四個字節(jié)是塊尾部的quickref或是空白區(qū)的長度。
從這里開始是目錄索引項的開始,每一個目錄索引項的結(jié)構(gòu)如下:
encint型的名稱長度,UFT-8編碼的名稱,以此名稱開始的列表塊的塊號。
quickref的格式和排列與列表塊中相同
當有索引塊的層次較多時,將不再存儲數(shù)據(jù)塊號而是存儲下一層的索引號。
解釋一下encint型變量的編碼規(guī)則:
一種可變長度的整型變量,第一個字節(jié)只使用低7位,最高位為1表示該字節(jié)之后的下一字節(jié)的低7位要接在這7位的尾部組成一個數(shù),這樣通過移位相加的運算,直到遇到最高位為0的字節(jié),可以組和成一個長度可調(diào)節(jié)的整數(shù)。
正文:在版本3中,正文一般緊跟著文件頭,而且在文件頭表之后有一個雙字用來指定其位置。在版本2中,正文部分緊跟著文件頭,而且所有此文件夾中的正文部分的第0段放在都放在這個益上,其它的正文段都within content section 0
名稱列表文件:
放在content section 0中,文件名為"::DataSpace/NameList",其中包含著所有正文段的名稱,其格式如下:
第一個字:以字計數(shù)的文件長度
第二個字:文件中的entry數(shù)
對于每一個entry格式為:
第一個字:以字計數(shù)的名字長度,不包括最后的NULL結(jié)尾符
以word 0表示所有entry的結(jié)束。
名稱的編碼類似于UFT-16。
段的名稱目前為止只有兩種,Uncompressed和MSCompressed,分別表示自解釋文件和Microsoft LZX壓縮算法壓縮的文件。
section data:
對 于段號不為0的段,還有一個文件為::DataSpace/Storage/<Section Name>/Content,里面存放著該段的壓縮信息,所以,當解析非0段時,需要兩步工作,第一步,取得第0段并將其解圧,取得段名,第二步才 能利用段名找到相應的段
其余與格式相關(guān)的文件:
::DataSpace/Storage/<SectionName>/ControlData
共0x20個字節(jié),存儲關(guān)于壓縮的信息
第一個雙字為在“LZXC”串后的雙字個數(shù),在版本2中,此值必為6
第二個雙字為“LZXC”
第三個雙字為版本信息,必須大于2
第四個雙字為LZX reset interval
第五個雙字為窗口大小
第六個雙字為緩存大小
第七個雙字為0,未知信息。
::DataSpace/Storage/<SectionName>/SpanInfo
存放著未解壓的段的長度信息。
::DataSpace/Storage/<SectionName>/Transform/List
存放GUID列表用于解壓縮
壓縮段:
這 一段用LZX壓縮,要進行解壓縮,先要讀取::DataSpace/Storage/<SectionName>/Transform/ {7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable,其格式如下:
第一個雙字為2,估計是版本信息
第二個雙字是reset table中的entry數(shù)
第三個雙字是8,每一個entry的大小
第四個雙字是表頭長度
16個字節(jié)的壓縮前長度
16個字節(jié)的壓縮后長度
16個字節(jié)的0x8000 block size for locations below
16個字節(jié)的0
16個字節(jié)的第一個非壓縮數(shù)據(jù)塊的邊界在壓縮數(shù)據(jù)塊中的位置信息
注意:
There is one change from LZX as defined by Microsoft: After each LZX reset interval (defined in the ControlData file, but in practice equal to the window size) of compressed data is processed, the LZX state is fully reset, as if an entirely new file was being encoded. This allows semi-random access to the compressed data; you can start reading on any reset interval boundary using the reset interval size and the reset table.
posted on 2007-10-14 00:07 erran 閱讀(2254) 評論(5)  編輯 收藏 引用 所屬分類: Standard & Confer

Feedback

# re: CHM格式解析 2007-10-30 21:37 牛牛
說得夠細,能不能給出VB讀取的(從中讀取想要的文件)代碼,小弟學VB加網(wǎng)頁設計,哪位老大給個代碼,在此謝過!偶的郵箱:liyong_sbcel@sina.com  回復  更多評論
  

# re: CHM格式解析 2007-10-30 22:25 Minidx全文檢索
這個不錯,收藏了  回復  更多評論
  

# re: CHM格式解析 2007-11-01 16:52 地方深度
謝謝  回復  更多評論
  

# re: CHM格式解析 2008-04-15 13:37 spiet
講了半天,我還是不知道正文內(nèi)容從哪里開始的.另外如何解壓正文  回復  更多評論
  

# re: CHM格式解析 2008-12-04 18:13 reeze
可以參考這網(wǎng)站,里面有詳細的介紹。
http://www.russotto.net/chm/index.html
還有這個非官方介紹
http://savannah.nongnu.org/projects/chmspec  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精选大片| 欧美韩国日本一区| 欧美1区3d| 久久久最新网址| 裸体一区二区| 亚洲精品免费电影| 91久久夜色精品国产网站| 亚洲国产毛片完整版| 日韩一级片网址| 亚洲综合三区| 久久久久久尹人网香蕉| 老司机久久99久久精品播放免费| 久久久亚洲欧洲日产国码αv | 欧美在线中文字幕| 久久精品欧美| 欧美金8天国| 国产精品免费福利| 伊人久久大香线蕉av超碰演员| 亚洲电影在线免费观看| 日韩午夜av电影| 欧美亚洲视频一区二区| 久久夜色精品国产噜噜av| 欧美激情一区二区在线| 在线亚洲高清视频| 麻豆精品一区二区av白丝在线| 欧美精品在线免费观看| 国产视频亚洲精品| 一本久久a久久免费精品不卡| 欧美在线视频播放| 亚洲欧洲精品一区二区三区| 小处雏高清一区二区三区| 欧美电影在线观看| 国产综合久久久久久鬼色| 一区二区欧美亚洲| 免费视频久久| 亚洲欧美视频一区| 欧美日韩中文字幕在线| 狠狠色狠狠色综合人人| 亚洲一区二区三区免费观看 | 亚洲精品国产品国语在线app| 亚洲女女女同性video| 欧美激情成人在线| 久久精品亚洲乱码伦伦中文 | 久久精品五月| 一区二区三区久久精品| 麻豆成人在线| 国产综合视频在线观看| 亚洲欧美日韩天堂| 亚洲精品黄网在线观看| 裸体一区二区三区| 国内欧美视频一区二区| 亚洲欧美日韩精品综合在线观看| 亚洲国产欧美一区| 久久婷婷av| 狠狠色伊人亚洲综合网站色| 性色一区二区| 亚洲欧美卡通另类91av | 久久久久欧美精品| 亚洲欧美资源在线| 国产精品麻豆va在线播放| 亚洲一区二区三区免费观看| 在线亚洲一区观看| 亚洲永久免费| 在线亚洲伦理| 欧美午夜三级| 午夜精品一区二区三区在线播放| 亚洲精品一二| 欧美日韩国产在线播放| 一区二区三区回区在观看免费视频| 欧美成人四级电影| 免费成人av资源网| 亚洲精品一区二区三区福利| 亚洲一区二区三区高清不卡| 亚洲精品视频在线看| 欧美日韩免费在线视频| 亚洲天堂av电影| 亚洲视频欧美视频| 国产精品丝袜白浆摸在线| 欧美综合第一页| 久久精品国产77777蜜臀| 狠狠色丁香久久综合频道| 欧美插天视频在线播放| 欧美电影在线免费观看网站| 宅男噜噜噜66国产日韩在线观看| 在线综合亚洲欧美在线视频| 国产一区二区三区在线观看视频 | 香蕉av777xxx色综合一区| 欧美亚洲视频| 91久久夜色精品国产九色| 亚洲毛片播放| 国产一区二区三区直播精品电影 | 国产揄拍国内精品对白 | 久久久久久穴| 一区电影在线观看| 欧美在线关看| 99成人精品| 欧美影视一区| 亚洲九九爱视频| 亚洲欧美春色| 狠狠色丁香婷综合久久| 亚洲日本成人女熟在线观看| 欧美日韩另类视频| 久久av资源网站| 麻豆成人在线观看| 亚洲在线观看免费| 久久九九久精品国产免费直播| 在线观看精品| 99精品免费网| 亚洲乱码日产精品bd| aa级大片欧美| 在线高清一区| 一本久久精品一区二区| 亚洲欧美日韩国产另类专区| 欧美在线日韩精品| 亚洲欧美综合精品久久成人| 国产精品欧美日韩久久| 亚洲国产精品久久久久秋霞影院 | 欧美精品一卡二卡| 销魂美女一区二区三区视频在线| 亚洲视频免费在线| 国产精品入口66mio| 久久99在线观看| 久久综合网色—综合色88| 国产一区成人| 亚洲国产另类久久久精品极度| 欧美福利一区二区| 欧美在线啊v| 久久精品一二三| 日韩天堂在线观看| 亚洲欧美日韩一区二区三区在线观看| 狠狠色狠色综合曰曰| 亚洲视频久久| 一本到12不卡视频在线dvd| 久久电影一区| 亚洲免费在线精品一区| 欧美成人精品福利| 一卡二卡3卡四卡高清精品视频| 另类激情亚洲| 国产精品免费一区二区三区观看| 欧美成人午夜77777| 国产偷久久久精品专区| 亚洲精品一区二区三区福利| 在线观看视频一区二区| 欧美一区二区视频在线观看2020| 亚洲视频在线看| 欧美韩日精品| 亚洲激情视频| 亚洲欧洲日产国码二区| 久久免费视频网| 亚洲国产另类精品专区| 蜜臀av性久久久久蜜臀aⅴ| 久久精品视频免费| 国产午夜精品福利| 亚洲小少妇裸体bbw| 亚洲一区二区黄| 国产亚洲成av人在线观看导航| 99精品视频免费在线观看| 99re在线精品| 国产精品99一区二区| 一区二区欧美激情| 久久精品国产99| 国产欧美日韩综合精品二区| 亚洲免费在线观看视频| 久久av二区| 韩国女主播一区| 欧美日本三区| 在线视频日本亚洲性| 国产一区二区黄色| 久久理论片午夜琪琪电影网| 免费在线成人av| 在线日韩成人| 欧美精品在线免费播放| 香蕉成人伊视频在线观看| 久久久一区二区| 欧美日韩在线播放一区| 中文日韩电影网站| 欧美四级剧情无删版影片| 亚洲一级影院| 美日韩在线观看| 最新国产精品拍自在线播放| 欧美日韩视频在线第一区| 亚洲欧美在线高清| 欧美成人免费大片| 一区二区三区精品在线 | 欧美成人蜜桃| 日韩视频免费观看高清完整版| 欧美国产日韩视频| 久久成人在线| 亚洲国产另类久久久精品极度| 亚洲美女免费视频| 国产精品影视天天线| 亚洲一区二区三区在线播放| 亚洲国产二区| 久久久久成人精品| 9i看片成人免费高清| 国产日韩欧美在线看| 欧美第一黄网免费网站| 久久久久久久91| 亚洲一本视频| 伊人久久av导航|