- Categories
- 好友博客
- 常泡的论坛
- 常用手册工具
- 母校&&同学校友
- 网络大牛
记得刚开始准备做小说下载站时(UMD格式的电子书应该在Nokia机上是相当的流行吧),研究UMD文件,在网上搜不到UMD文件结构说明.费了好大的劲,用反编译工具才找到相关信息.可惜对C#不了解,只能摸到点皮毛,差点就放弃了,后来一个偶然的机会看到2lin兄和Mark兄的结构文章,振奋人心啊,于是对着UE打开标准umd文件的16进制码和2位仁兄的结构分析,用偶熟悉的php,做了一个umd生成类,对umd文件编码。解码应该也很简单的一个求逆运算,就不啰嗦了。
相关关键字节含义:
0×23,也就是字符’#’,这个字符在Umd中被用来作为功能块的分割符。
1.已知的#块(类型也就是#后面的16进制数字)
0×01–文件开始
0×02–标题
0×03–作者
0×04–年
0×05–月
0×06–日
0×07–小说类型
0×08–出版商
0×09–零售商
0×0b–内容长度
0×83–章节偏移
0×84–章节标题,正文
0×81–正文写入完毕
0×82–封面
0×87–PageOffset
0×0c–文件结束2. 整数编码为littleEndian, 也就是低字节在前,高字节在后,相应的,所有的文本也都是Unicode16 LittleEndian编码的
3. 章节数据块(0×84)后面的第一个数据块是所有章节的标题,按照以下规则排列:
[第1章标题文本的字节长度(1byte)][第1章标题unicode文本][第2章标题文本的字节长度(1byte)][第2章标题unicode文本]…
4. 章节数据块(0×84)后面的第二个数据块及以后的数据块是正文文本数据,是用标准zlib算法压缩的
5. 似乎每个数据块的字节大小都在18K以内
6. 似乎正文中的换行(\r\n)都被替换成了unicode段分隔符\u2029,不知道是否跟制作工具有关
7. 封面图片的数据是未压缩的,也就是说直接把数据段复制出来保存成一个jpg文件就可以了
[......]
最新评论
Comment By industrial injury
Comment By manchester
Comment By whiplash compensation
Comment By Budeko
Comment By handmade beds manchester
Comment By Budeko
Comment By Village Voice Media
Comment By Village Voice
Comment By ROAD CONSTRUCTION
Comment By Budeko
Warning: file_put_contents(/data/www/www.ieliwb.com/wp-content/plugins/showlist/cache/cache_mdv_recent_comments.php) [function.file-put-contents]: failed to open stream: Permission denied in /data/www/www.ieliwb.com/wp-content/plugins/showlist/showlist.php on line 70