VII’s 发表于 2018-3-12 22:44

QQ音乐资源包Resource.rdb文件格式分析

本帖最后由 VII’s 于 2018-3-13 16:38 编辑

QQ/QQ音乐资源包*.rdb提取&打包工具见 https://www.52pojie.cn/thread-708145-1-2.html

首先要清楚资源包的几项关键信息:文件的数量,文件名,文件内容的起始位置,文件的大小
使用二进制工具打开Resource.rdb

资源的文件名很明显。初步断定前面为资源文件的目录,后面为资源文件的内容。
往下拉,拉倒目录与内容的分界处,为png图片的文件头 记录为内容的起始位置0x1eb8a

回到文件头,第一行不知道是什么东西,先不管

记录接下来出现的数据
0x04D8       0x0024       0x1eb66
发现0x1eb66与内容的起始位置0x1eb8a很相近,两者之间的差为0x24,与之前的数据0x0024有什么关系?暂时不管。


接着往下可以看出每两个文件名之间有16字节的数据,其中有效的数据只有两个

前面说到资源包的几项关键信息:文件的数量,文件名,文件内容的起始位置,文件的大小
猜测这两个数据为文件内容的起始位置,文件的大小
记录这些数据
0x0000    0x0080
0x0080    0x01c2
0x0242    0x0082
。。。
发现规律没?
0x0080 = 0x0080 + 0x0000
0x0242 = 0x01c2 + 0x0080
这时就可以确定0x0000 0x0080 0x0242为文件内容的起始位置,0x00800x01c2   0x0082为文件的大小
对照文件名,发现前几个文件都是png图片,跳转到内容的起始位置0x1eb8a    搜索 ,计算前三个图片的大小,刚好为0x00800x01c2   0x0082

分析到这里基本就结束了,现在不能确定的有两个数据0x04D8和0x0024,四个关键信息中只有文件的数量没有确定,很明显0x04D8为文件的数量,之后提取文件时进行验证。
然后分析0x0024是什么?
仔细一点就会发现第一个文件名的位置为0x0024,内容的起始位置为0x1eb8a, 0x1eb8a减去0x0024就是0x1eb66,也就是文件名部分的大小
将文件名前面的部分叫做文件头,那么0x0024就是文件头的大小
接下来的文件名部分叫做资源文件目录,那么0x1eb66就是资源文件目录的大小
文件头的大小加上资源文件目录的大小就是资源内容的起始位置



最后进行总结一下:
QQ音乐资源包Resource.rdb文件分为三部分,文件头,资源文件目录和资源文件内容
文件头0x24个字节 其中包含固定字符串531E98204F8542F0,文件的数量,文件头的大小,文件目录的大小
文件目录的格式为:文件名,文件内容的起始位置,文件的大小


编程验证,不管资源文件的数量   直接变量0x24到0x1eb66的所有文件,进行提取,最后提取资源数为1241,其中有一个乱码文件,删掉之后共1240个文件,也就是0x04d8




peterq521 发表于 2018-3-13 09:16

我只是条咸鱼 发表于 2018-3-13 08:53
给大佬递茶,虽然我完全没有看懂二进制是啥

大佬请再喝一杯

坏小子 发表于 2018-3-12 23:09

学习了没看太懂 {:1_918:}

zsp7137 发表于 2018-3-12 23:34

感谢分享

trombe108 发表于 2018-3-12 23:41

教程挺精彩的

丶提莫 发表于 2018-3-12 23:42

围观一下

yajianzhi 发表于 2018-3-13 08:15

很厉害,但看完不知道它能干什么,免费下载无损音乐吗

独孤无心 发表于 2018-3-13 08:47

教程挺好但是一脸懵逼。

我只是条咸鱼 发表于 2018-3-13 08:53

给大佬递茶,虽然我完全没有看懂二进制是啥

hisl521 发表于 2018-3-13 09:13

厉害了楼主,我需要这个
页: [1] 2 3 4
查看完整版本: QQ音乐资源包Resource.rdb文件格式分析