应用数据
App 沙盒里的文件在磁盘上是受保护的,按原始字节拷出来只会得到密文。这个模块把 App 自己的数据解密出来,让文件变成你真的能打开的东西。
- App 下载或生成的图片、音频、视频
- 数据库 —— SQLite 文件及其日志文件
- plist 与 JSON —— 偏好设置、特性开关、缓存的响应
- 各类缓存 —— 包括那个死活清不掉的
- 整个目录,一次性导出
什么时候需要
Section titled “什么时候需要”清不掉的缓存。 用户反馈刷新后内容还是旧的。读缓存目录就能判断:是 App 写了新响应却没用它,还是压根没写进去。
迁移出了问题。 升级前后各拉一份数据库,直接 diff。
下载损坏。 字节要么在磁盘上就是错的,要么在传输途中就错了。打开文件,一分钟内就能定性。
复现用户的状态。 导出他的沙盒,灌进你自己设备上的一个包 —— 那个“只有这一个账号会出”的 bug,就在你桌上复现了。
- 连接设备并解锁。
- 打开应用浏览器,选中目标 App。
- 选目录 —— Documents、Library,或整个沙盒。
- 导出到电脑上的一个文件夹。
沙盒大的话会比较慢;媒体类 App 动辄好几个 GB。
拿到之后怎么读
Section titled “拿到之后怎么读”- SQLite 用任意 SQLite 浏览器打开。记得把
-wal和-shm一起带走,否则你读到的是过期快照。 - 二进制 plist 需要 plist 阅读器,用文本编辑器打开只有一堆乱码。
- 缓存目录通常是“不可读的文件名 + 普通文件”,按大小排序,先看最大的那几个。
- 钥匙串条目不在沙盒里。 它们在 keychain 里,这种方式导不出来。
- 设备必须解锁并已信任,而且导出全程要保持解锁:保护等级更高的文件在设备锁屏后就读不到了。
- 它能到达的是应用沙盒,不是整个系统。克魔不会绕过系统保护。
- 不涉及越狱,也不需要越狱。
这是某个人的数据
Section titled “这是某个人的数据”App 沙盒是一个人的聊天记录、照片、位置和令牌所在的地方。三条规矩,用户协议让它们具有约束力:
- 只在你拥有或已获明确授权检查的设备上使用。
- 取能回答问题的最小范围,不要习惯性整包导出。
- 工单关闭就删掉导出文件。笔记本上放着的一份 App 沙盒,等的只是一个被偷走的包。
如果设备属于客户,导出之前先告诉他你要导什么、为什么导。
