数据存储格式
手机 App 的数据落地基本逃不出这几种格式,识别格式 → 选对应解析工具,是手机数据取证的基本功。

SQLite 数据库
手机端绝对主力:安卓/iOS 的短信、通讯录、通话记录、聊天记录(微信 MM.sqlite/EnMicroMsg.db、QQ)几乎都是 SQLite。
- 扩展名:
.db.sqlite.db3.sqlitedb,也有无扩展名的 - 文件头魔数:
SQLite format 3\0(53 51 4C 69 74 65) - WAL 机制:配套文件
-wal(预写日志)/-journal(回滚日志)。最新写入的数据可能还在-wal里没合并进主库——取证时必须把-wal、-shm一起提取,否则漏数据;用 DB Browser 打开时会自动合并 - 删除恢复:删除的记录不立即抹除,留在 freeblock / freelist 页中,可用 Undark、SQLite 恢复工具或手工解析页面结构恢复(删除后立刻 VACUUM 才真没救)
- 工具:DB Browser for SQLite、SQLite Expert、Navicat、命令行
sqlite3
Plist(iOS 属性列表)
苹果生态的配置/数据存储格式,两种形态:
- XML plist:文本可直接读,根节点
<plist>,键值对<key>/<dict>/<array> - 二进制 plist(bplist):文件头
bplist00,需用plutil -convert xml1(macOS)、plistutil(libimobiledevice)或 Pythonplistlib转 XML 后读
iOS 应用的偏好设置都在 Library/Preferences/<bundleID>.plist,常藏登录态 token、服务器地址、开关状态。
XML / 二进制 AXML(Android)
- 安卓应用配置:
/data/data/<包名>/shared_prefs/*.xml,明文键值对,登录 token、服务器地址、用户 ID 高频出现 - APK 内的
AndroidManifest.xml和布局文件是编译后的二进制 AXML,直接打开是乱码,用 apktool/jadx 解析
JSON
- 各类 App 的缓存、接口返回落地、配置文件(如代理软件的
gui-config.json) - 特征:
{开头,文本可读;注意有的文件是 JSON Lines(一行一个 JSON)
其他专用格式
| 格式 | 场景 | 解析 |
|---|---|---|
| Protocol Buffers | 微信部分数据、IM 消息体 | 无 schema 只能猜字段,用 protoc —decode_raw 试探 |
| MMKV | 微信等腾讯系 App 的 KV 存储(mmkv/ 目录) | 默认可配 AES 加密,需找 key;有开源 mmkv 解析工具 |
| LevelDB | 浏览器 LocalStorage、部分 App | 字符特征 \x00\x01 键值流,用 leveldb 库读 |
通用识别思路
- 看文件头魔数(
010 Editor/file命令)比看扩展名可靠 - 无魔数先
strings拉一遍,文本类格式(JSON/XML/plist)立现 - 二进制库文件先找配套工具,别硬啃——SQLite/plist/MMKV 都有成熟轮子