Skip to content

Latest commit

 

History

History
100 lines (58 loc) · 3.22 KB

教程 - NTQQ (Android).md

File metadata and controls

100 lines (58 loc) · 3.22 KB

Android

基础环境

以下环境配置任选一种即可。注意,每种方法都要求您拥有手机的 root 权限。

Termux

首先,安装 Termux,换源并执行pkg uptermux-setup-storage

然后依次执行以下命令:

安装基础依赖:

pkg in python wget tsu root-repo
pkg in frida frida-python

关闭 SELinux:

su -c setenforce 0

接着,手动下载主版本相同的frida-server,解压到/data/local/tmp下,并重命名为friendly(不一定要完全一致,仅是建议文件名不包含frida以略微避免检测);

赋予friendly可执行权限后,新开一个终端以root权限运行friendly

下载 hook 脚本:

wget https://github.com/Young-Lord/qq-win-db-key/raw/master/android_get_key.py

PC

你也可以在电脑端使用adb等来避免在手机端配置Termux。具体过程略。

开跑

这几条并不需要按顺序执行,建议直接执行“导出数据库”

获取数据库密钥

打开 QQ 并完成登录,进入主界面。将 QQ 切换到后台后继续下一步。

在一个没有获得 root 权限的 Termux 终端 / 电脑的终端 中运行:

python android_get_key.py

也可手动指定版本号,但目前所有支持的版本号使用的脚本均相同。

python android_get_key.py 8.9.58

此时应当输出Frida script injected.,若没有,请检查:

  • 是否以root权限运行frida-server
  • 是否以关闭 SELinux (即设置为宽容模式)
  • 是否已经关闭Magisk HideShamiko,并且重启手机
  • frida-server与 Termux 中的frida版本号第一个点号前的数字是否相同
  • QQ 版本是否一致

接下来,可以确认命令行是否给出数据库密钥。

打开数据库

请参考 基础教程 - NTQQ 解密数据库

导出数据库

该部分内容来源于Android QQ NT 版数据库解密,由@yllhwa贡献。

关闭Magisk HideShamiko,并且重启手机

可能需要关闭SELinux(也就是设为Permissive

需要授予手机QQ读写存储权限

下载https://github.com/Young-Lord/qq-win-db-key/raw/master/android_dump.js

如果先前已经运行过,则先删除上一次运行生成的/sdcard/Download/plaintext.db

终端中运行frida -U -f com.tencent.mobileqq -l android_dump.js(如果用的有线连接adb就直接写-U,如果是Termux或无线连接就把-U改成-R

如果一切顺利,已解密的plaintext.db将会在至少10秒后导出至/sdcard/Download/plaintext.db

失败记录

根据字符串依次找到 sqlite3CodecQueryParameters,xref 找到 attachFunc,另外一个 xref 就是 openDatabase

"ATTACH DATABASE '%s' as migrate;" 之类的找到 sqlcipher_codec_ctx_migrate,然后找到 sqlite3_exec,执行:ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';SELECT sqlcipher_export('plaintext');DETACH DATABASE plaintext; …然后你就能被附加数据库数量限制拦了。

VACUUM?不行

别的什么方法也失败了(详见代码