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

时间: 2024-08-04 01:56:53

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

Mac上zip文件解压出cpgz格式的文件该怎么办?

  Mac上zip文件解压出cpgz格式的文件该怎么办? 问题原因: 首先,我们分析导致这种情况的原因有以下几点: 1.zip文件已经损坏; 2.zip文件下载时没有下载完全; 3.浏览器在下载或者下载完成zip文件时,对其进行了错误处理; 4.bug导致. 校验文件: 解决这个zip-cpgz循环有多种方法,首先你可以验证一下你的zip文件md5 hash或者SHA1(这些数据一般可以在你下载的网页上边扎到),如果校验显示不同,说明你的文件有损坏或者下载不完全. 1.校验MD5 hash方法:

liunx之zip格式的解压命令

zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d /home/sunny myfile.zip 把myfile.zip文件解压到 /home/sunny/ -o:不提示的情况下覆盖文件: -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他 zip -d myfile.zip smart.txt 删除压缩文件中smart

转:linux 文件解压命令

1.tar命令 2. 3.tar 可以为文件和目录创建档案.利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘.利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的.Linux上的tar是GNU版本的. 4.语法:tar [主选项+辅选项] 文件或者目录 5.使用该命令时,主选项是必须要有的

文件上传-不同机器压缩的zip压缩包,在上传文件解压后存在乱码,求帮忙分析分析

问题描述 不同机器压缩的zip压缩包,在上传文件解压后存在乱码,求帮忙分析分析 有的机器的压缩包上传解压后没问题,有的上传解压后有中文乱码,不知道这是不是跟操作系统有关系

php实现zip文件解压操作_php技巧

PHP解压zip文件函数,源码简短,需要使用 ZZIPlib library 扩展,使用前请确认该扩展已经开启. <? /********************** *@file - path to zip file 需要解压的文件的路径 *@destination - destination directory for unzipped files 解压之后存放的路径 *@需要使用 ZZIPlib library ,请确认该扩展已经开启 */ function unzip_file($fil

使用java基础类实现zip压缩和zip解压工具类分享_java

使用java基础类写的一个简单的zip压缩解压工具类 复制代码 代码如下: package sun.net.helper; import java.io.*;import java.util.logging.Logger;import java.util.zip.*; public class ZipUtil {    private final static Logger logger = Logger.getLogger(ZipUtil.class.getName());    privat

Mac上zip文件解压出cpgz怎么办?

问题原因: 首先,我们分析导致这种情况的原因有以下几点: 1.zip文件已经损坏; 2.zip文件下载时没有下载完全; 3.浏览器在下载或者下载完成zip文件时,对其进行了错误处理; 4.bug导致. 校验文件: 解决这个zip-cpgz循环有多种方法,首先你可以验证一下你的zip文件md5 hash或者SHA1(这些数据一般可以在你下载的网页上边扎到),如果校验显示不同,说明你的文件有损坏或者下载不完全. 1.校验MD5 hash方法:打开终端,输入MD5,空格,然后输入需要验证的文件路径(可

Ubuntu下压缩包内文件解压后乱码问题的解决

  用到的工具是The Unarchiver项目提供的lsar/unar工具. The Unarchiver项目主页:http://code.google.com/p/theunarchiver/ 安装(12.04及以上): 代码: sudo apt-get install unar 12.04以下或者想编译安装的朋友请参考: viewtopic.php?f=35&t=353426 使用: 假设需要解压的ZIP包是foo.zip 代码: lsar foo.zip #列出所有文件 如果列出的文件名

网站安装打包 新建网站[四][文件解压] 上

在新建网站之前,就是要把打包好的项目拷贝一份到IIS指定的路径上,同时,还要为个别目录设置相应的访问权限! 于是就产生了两件事: 1.拷贝->[这里我是采用RAR打包,然后解压] 2.设置权限 如果是用拷贝方式,关于文件夹Copy,可以参考我的这篇文章: 文件夹复制操作(非递归循环遍历文件夹) http://www.cnblogs.com/cyq1162/archive/2007/05/28/762294.html     为什么我没采用拷贝的方法,前提有两个,就是项目的文件夹有太多,在制作应用