牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

QQ游戏的PKG格式文件解压工具

本文纯属学习之用,如拿此代码用于商业,与本人无关.


代码是自己写的,写得烂,有很多改进的地方.


起始字节-结束字节
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

参考资料:http://www.vbgood.com/viewthread.php?tid=87382&extra=page%3D1

posted on 2010-02-24 20:35 杨粼波 阅读(3329) 评论(1)  编辑 收藏 引用

评论

# re: QQ游戏的PKG格式文件解压工具 2010-02-27 00:13 C/C++源码论坛 (中国大学生软件开发论坛)

华为C++面试题2010年郑州大学(2010-2-24全套面试题)

转载于 C/C++源码论坛 (中国大学生软件开发论坛) 我们专注C/C++

http://www.cssdn.net/thread-8591-1-1.html">http://www.cssdn.net/thread-8591-1-1.html

华为C++面试题2010年郑州大学(2010-2-24全套面试题)
笔试地点 中原地区 郑州大学
1. 编写strcat函数(5分)
已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数 strcat
(2)strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?
2.使用线程是如何防止出现大的波峰(5)
3.队列和栈有什么区别?(9)
(请至少说出三点)
4、请找出下面代码中的所以错误(5)
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

1、#include"string.h"
2、main()
3、{
4、 char*src="hello,world";
5、 char* dest=NULL;
6、 int len=strlen(src);
7、 dest=(char*)malloc(len);
8、 char* d=dest;
9、 char* s=src[len];
10、 while(len--!=0)
11、 d++=s--;
12、 printf("%s",dest);
13、 return 0;
14、}
5.C++中为什么用模板类。(5)
(请至少说出三点)
...
...
...

严禁用于商业用途转载 转载请注明出去

C/C++源码论坛 (中国大学生软件开发论坛) 我们专注C/C++
http://www.cssdn.net
  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理