12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 330|回复: 0

撬开MacQQ的本地SQLite数据库(适用于Msg3.0.db+)

[复制链接]

49

主题

49

帖子

108

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
108
发表于 2021-2-19 20:28:41 | 显示全部楼层 |阅读模式
*注意 本文不允许转载。如果发现,追究侵权责任
*** 已检测到的违规转载公示:
- www.y4f.net/329368.html(12251100z,请尽快删除)

网络上关于Mac微信数据库的相干话题非常多,各路大神讨论(转载)了自己的实操经验以及心得体会。
然鹅有微信,却没有看到QQ的。(果然是QQ已经过气了?)

首先回顾一下Mac微信的db,可以参考这篇文章https://cloud.tencent.com/developer/article/1561339。Mac微信的数据库使用SQLite3 + SQLCipher3,作者通过lldb断sqlite3_key函数的方式截取了数据库暗码,再使用DB Browser for SQLite等支持SQLCipher的数据库管理工具,乐成地打开了本地的数据库。

不错,那么同样的方法QQ上能不能用呢?
> 答案固然是不能,否则我还写这篇文章干嘛。

之前已经对MacQQ有比较深的了解,也用classdump等工具导出过所有header文件。可以证实MacQQ一样使用SQLite(有SqliteDatabaseHelper等class)。另外根据论文https://www.sciencedirect.com/sc ... i/S1742287619300210,Msg2.0是线上天生的key,应该可以猜测Msg3.0也是线上天生的(后来在反汇编的时候证实是)。

lldb 调试QQ


因为使用的是sqlite3,所以同样打sqlite3_key的断点,输入br set -n sqlite3_key

尝试登陆QQ

乐成断在了Hummer库的sqlite3_key点上。
检察开源代码,sqlite3_key的界说是
[C++] 纯文本检察 复制代码int sqlite3_key(sqlite3 *db, const void *pKey, int nKey);
第二个参数是key,第三个函数是key的大小。
分别检察

这个就是db的key,大小16字节。

BTW,最新版的QQ数据库在 ~/Library/Containers/com.tencent.qq/Data/Documents/contents// 目录下

兴冲冲地送进DB Browser for SQLite,结果吃闭门羹。穷举了所有可能的配置,都无法打开这个文件。

有这么几种可能:
(1)是SQLCipher,但pagesize、cipher_salt、kdf_iter、cipher_kdf_algorithm等关键参数不是默认值
(2)是改动过的SQLCipher
(3)加密算法根本不是SQLCipher

* 我个人的猜测是(1)或者(2),在后续反汇编的时候,看到大部分代码都和SQLCipher一致。
反正不管怎么说,用随手可见的工具是已经打不开了。

在断点的时候,我注意到sqlite3_key这个函数并不在QQ的binary本体里,而是在Hummer库内,那就有点方便了。
反正我的最终目的是解开这个数据库。与其去思考这些参数或者算法,找到一个符合的工具,还不如直接使用这个“弱点”,直接下手。

检察Hummer.framework的导出表,可以看到sqlite3有关的函数全部被导出了,非常好。


写一段小程序,链接Hummer.framework,同时将数据库暗码置0(请勿直接在原始文件上操作。如果不慎操作了,颠倒代码重新加密。切勿打开QQ,否则会导致原先文件报废)。


运行,获得非常抱负的全部OK结果。


乐成打开Cache1.1.db。


要注意的是,QQ的每一个db的暗码不一定全部相同。打开顺序是Cache1.1.db -> Msg3.0.db(QQ.db),以此截获即可。




1/11 UPDATE: 这楼里有一个张图墙内说看不了,已经更新了
2/14 UPDATE: PC版的方法见这里 https://www.52pojie.cn/thread-1370802-1-1.html
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-4-20 02:57 , Processed in 0.125000 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表