版权
License:CC BY-SA 4.0 International
首发于:https://www.h-sr.cn/index.php/2023/04/09/22.html
引子
众所周知,pixiv在境内没办法正常访问,于是有了一众第三方App能够实现直连pixiv的操作。通过绕过SNI审查的方式实现直连,其中我所提到的Shaft就是其中之一。
ref: https://github.com/CeuiLiSA/Pixiv-Shaft/issues/243
ref: GitHub - CeuiLiSA/Pixiv-Shaft: Pixiv第三方Android客户端
背景介绍
有一台旧手机,里面有一些Shaft的缓存的图片和小说,解了bl锁但是没有root,没有办法直接获取缓存文件。
过程简介(仅包含原理) TL; DR
- Shaft是开源项目,可以直接阅读其源代码。
- 根据其源码,得知其使用了
sqlite3
来保存源网址和文件名的对照关系。缓存文件位于/data
目录下、 - 数据库可以通过MIUI的备份和还原提取,但是缓存无法提取。
- 修改Shaft源代码,增加通过
tar
命令打包缓存到正常可访问目录的代码。 - 编译新版本apk,安装。
- 将第五步提取所得到的可读取
tar
文件导出。
至此,缓存提取完成。
详解
1. 分析
分析其通过MIUI备份提取出的文件,可以得到多个数据库,如下:
google_app_measurement_local.db
,roomDemo-database
。
其中,roomDemo-database
包含了文件名与网址的对应关系,较为重要。
该数据库架构如下:
CREATE TABLE android_metadata (locale TEXT)
CREATE TABLE