跳转到内容

应用数据

App 沙盒里的文件在磁盘上是受保护的,按原始字节拷出来只会得到密文。这个模块把 App 自己的数据解密出来,让文件变成你真的能打开的东西。

  • App 下载或生成的图片、音频、视频
  • 数据库 —— SQLite 文件及其日志文件
  • plist 与 JSON —— 偏好设置、特性开关、缓存的响应
  • 各类缓存 —— 包括那个死活清不掉的
  • 整个目录,一次性导出

清不掉的缓存。 用户反馈刷新后内容还是旧的。读缓存目录就能判断:是 App 写了新响应却没用它,还是压根没写进去。

迁移出了问题。 升级前后各拉一份数据库,直接 diff。

下载损坏。 字节要么在磁盘上就是错的,要么在传输途中就错了。打开文件,一分钟内就能定性。

复现用户的状态。 导出他的沙盒,灌进你自己设备上的一个包 —— 那个“只有这一个账号会出”的 bug,就在你桌上复现了。

  1. 连接设备并解锁。
  2. 打开应用浏览器,选中目标 App。
  3. 选目录 —— Documents、Library,或整个沙盒。
  4. 导出到电脑上的一个文件夹。

沙盒大的话会比较慢;媒体类 App 动辄好几个 GB。

  • SQLite 用任意 SQLite 浏览器打开。记得把 -wal 和 -shm 一起带走,否则你读到的是过期快照。
  • 二进制 plist 需要 plist 阅读器,用文本编辑器打开只有一堆乱码。
  • 缓存目录通常是“不可读的文件名 + 普通文件”,按大小排序,先看最大的那几个。
  • 钥匙串条目不在沙盒里。 它们在 keychain 里,这种方式导不出来。
  • 设备必须解锁并已信任,而且导出全程要保持解锁:保护等级更高的文件在设备锁屏后就读不到了。
  • 它能到达的是应用沙盒,不是整个系统。克魔不会绕过系统保护。
  • 不涉及越狱,也不需要越狱。

App 沙盒是一个人的聊天记录、照片、位置和令牌所在的地方。三条规矩,用户协议让它们具有约束力:

  1. 只在你拥有或已获明确授权检查的设备上使用。
  2. 取能回答问题的最小范围,不要习惯性整包导出。
  3. 工单关闭就删掉导出文件。笔记本上放着的一份 App 沙盒,等的只是一个被偷走的包。

如果设备属于客户,导出之前先告诉他你要导什么、为什么导。

文件管理 · 备份与导出 · 应用管理