iOS文件系统中应用属性数据存储位置查询(以Threema应用为例)
iOS应用本地属性存储规则与Threema identity属性定位方法
iOS应用通用存储路径规则
所有iOS第三方应用都运行在独立沙盒环境中,运行时生成的用户属性数据不会存在应用安装包目录下,统一存放在数据沙盒路径:/var/mobile/Containers/Data/Application/<应用对应随机UUID>/,目录下按功能划分存储区域:
Documents/:存放用户主动创建、需要永久留存的数据,默认纳入iTunes/iCloud备份范围Library/Preferences/:存放NSUserDefaults生成的常规配置plist文件Library/Caches/:存放可被系统自动清理的临时缓存数据Library/根目录:存放应用自行创建的数据库、持久化配置文件tmp/:存放运行时临时文件,系统可随时删除
注意:配置了App Group能力的应用,会额外生成共享容器目录,路径为
/var/mobile/Containers/Shared/AppGroup/<共享容器随机UUID>/,用于宿主应用和扩展之间的数据互通。
Threema identity属性找不到的原因与定位方法
你之前排查的ThreemaData.sqlite、group.ch.threema.plist都属于App Group共享容器下的非敏感数据文件,核心身份属性根本没有存放在这类明文文件里,找不到是正常的:
MyIdentityStore类下的identity、serverGroup、公私钥、绑定邮箱/手机号这类敏感身份数据,Threema统一加密后存储在iOS系统Keychain中,不会以明文形式落盘到普通沙盒文件。- 如果你在越狱环境、或已经拿到设备全量数据提取权限,可以按以下特征定位:
- 定位Threema对应的Keychain访问组:
ch.threema.threema - 找到服务名为
Threema Identity Store、账号字段为mainIdentity的Keychain条目 - 该条目下的
v_Data字段为加密二进制数据,完成本地解密后即可读取到identity等所有MyIdentityStore定义的属性值
- 定位Threema对应的Keychain访问组:
- 补充说明:Threema对所有敏感本地数据启用了最高等级的
NSFileProtectionComplete保护,设备锁定状态下即使拿到沙盒文件也处于加密不可读状态,核心身份数据存入Keychain是其端到端加密安全设计的标准配置,不会明文存放在普通数据库或配置文件中。
内容的提问来源于stack exchange,提问作者Stack
相关产品推荐
相关产品推荐

