代码是自己写的,写得烂,有很多改进的地方.
起始字节-结束字节
分析文件列表区数据,文件名长度是不等长的,这样读取文件列表时,就从头读过去,根据标志位来确定。
下面是每条文件记录的各项属性:
说明:
直接从PKG里面解出来的图片文件(主要是MIF格式的)是经过zlib压缩过的,必须要解压后才能使用。
![14.gif](http://www.cppblog.com/Emoticons/QQ/14.gif?x-oss-process=image/resize,w_1400/format,webp)
起始字节-结束字节
1-4 | 64 00 00 00 文件头 |
5-8 | 4字节,文件个数 (把一个pkg文件后面的文件列表数了下,确实是文件个数) |
9-12 | 4字节,文件列表区的偏移地址(通过比较两个pkg文件,确实是偏移地址) |
13-16 | 4字节,文件列表区的大小,其实就是从上一面的偏移地址到文件末尾 |
分析文件列表区数据,文件名长度是不等长的,这样读取文件列表时,就从头读过去,根据标志位来确定。
下面是每条文件记录的各项属性:
1 - 2 | 接下来的字符串的长度,也就是文件名路径的字符串长度 |
3 - X | 带相对路径的文件名称(说明:X是文件名称结束的偏移位置) |
X - X+4 | 00 00 00 00 识别标志 |
X+5 - X+8 | 文件起始偏移 |
X+9 - X+12 | 原始文件大小 |
X+13 - X+16 | 文件大小 |
说明:
直接从PKG里面解出来的图片文件(主要是MIF格式的)是经过zlib压缩过的,必须要解压后才能使用。
解压我们只要用到了zlib的uncompress函数就行了。
工具源代码下载 : PkgManager.rar