wechat-android-paths.md
8.07 KB
微信 Android 目录结构备忘
设备:
59131FDCG000YB
记录时间: 2026-05-19
微信包名:com.tencent.mm
1. App 安装目录
| 类型 | 路径 |
|---|---|
| APK 主文件 | /data/app/~~r29exJFAh0ogsnZN1Kunig==/com.tencent.mm-tpUbm3hU146jfQ2ArDpZBg==/base.apk |
| 内部数据根目录 | /data/user/0/com.tencent.mm/ |
| 外部存储目录 | /sdcard/Android/data/com.tencent.mm/ |
2. SQLite 数据库目录
2.1 主用户数据目录
/data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/
653cdc2320abb089e149a3f7a7683fcf为用户哈希目录,不同账号/设备此值不同。
2.2 核心数据库文件
| 数据库文件 | 用途 |
|---|---|
EnMicroMsg.db |
主数据库(聊天记录、联系人、会话等) |
SnsMicroMsg.db |
朋友圈数据 |
FinderWCDB.db |
视频号主数据库 |
FinderMessage006.db |
视频号消息 |
WalletPay.db |
微信支付 |
VoIPDB-8.db |
语音通话记录 |
AppBrandComm.db |
小程序数据 |
MMPlayerMediaInfo.db |
媒体播放信息 |
newuba.db |
用户行为分析 |
enFavorite.db |
收藏数据 |
KaraMM.db / KaraCore.db |
卡拉 OK / 音乐相关 |
UnEncryptNewBiz.db |
公众号/服务号 |
PreDownloadCheck.db |
预下载检查 |
WxCgiReport.db |
CGI 上报日志 |
MicroMsgPriority.db |
优先级消息队列 |
MBExternalVideoInfo.db |
外部视频信息 |
FinderLiveShopMsg.db |
视频号直播购物消息 |
WxExpt.db |
实验配置 |
FinderAccounts_01.db |
视频号账号 |
2.3 数据库加密状态
微信使用 WCDB(基于 SQLCipher)对核心数据库进行加密。通过检查文件头(前 16 字节)判断:
| 数据库文件 | 加密状态 | 备注 |
|---|---|---|
EnMicroMsg.db |
加密 | 主数据库,聊天记录/联系人 |
SnsMicroMsg.db |
未加密 | 朋友圈数据,可直接读取 |
FinderWCDB.db |
加密 | 视频号 |
FinderMessage006.db |
加密 | 视频号消息 |
WalletPay.db |
未加密(空) | 支付数据(schema 空) |
VoIPDB-8.db |
未加密(空) | 语音通话(schema 空) |
PreDownloadCheck.db |
未加密(空) | 预下载检查(schema 空) |
biz.db |
未加密 | 公众号消息,可直接读取 |
enFavorite.db |
加密 | 收藏数据 |
newuba.db |
加密 | 用户行为分析 |
WxExpt.db |
加密 | 实验配置 |
WxCgiReport.db |
加密 | CGI 上报日志 |
检测命令:
# 检查文件头是否为 "SQLite format 3"
adb shell su -c 'grep -rl "SQLite format 3" /data/user/0/com.tencent.mm'
2.4 其他数据库位置
| 路径 | 说明 |
|---|---|
/data/user/0/com.tencent.mm/databases/ |
通用系统数据库目录 |
/data/user/0/com.tencent.mm/files/public/voip/db/voip.db |
VoIP 独立数据库 |
/data/user/0/com.tencent.mm/cache/653cdc2320abb089e149a3f7a7683fcf/finder/aff/*.db |
视频号缓存数据库 |
/data/user/0/com.tencent.mm/files/liteapp/*/kv/*.db |
轻应用 KV 数据库 |
/data/user/0/com.tencent.mm/MicroMsg/AFFUDRPath/resource/udr/db/udr.db |
UDR 资源数据库 |
/data/user/0/com.tencent.mm/MicroMsg/ee1da3ae2100e09165c2e52382cfe79f/EnResDown.db |
资源下载数据库(其他用户) |
/data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/roam_backup/sdk/roam_backupper.db |
漫游备份数据库 |
3. 常用 adb 操作命令
3.1 列出所有数据库
adb shell su -c "find /data/user/0/com.tencent.mm -name '*.db'"
3.2 导出主数据库
adb shell su -c "cat /data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/EnMicroMsg.db" > EnMicroMsg.db
3.3 查看数据库结构(需设备上有 sqlite3)
adb shell su -c "sqlite3 /data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/EnMicroMsg.db '.schema'"
3.4 导出整个 MicroMsg 目录
adb shell su -c "tar -czf /sdcard/wechat_mm.tar.gz -C /data/user/0/com.tencent.mm MicroMsg"
adb pull /sdcard/wechat_mm.tar.gz .
3.5 查找特定表
# 例如查找联系人表
adb shell su -c "sqlite3 /data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/EnMicroMsg.db \"SELECT name FROM sqlite_master WHERE type='table' AND name LIKE '%contact%';\""
4. 数据目录完整结构(内部存储)
/data/user/0/com.tencent.mm/
├── .auth_cache # 认证缓存
├── .vfs # VFS 缓存
├── MicroMsg/ # 主数据目录
│ ├── 653cdc2320abb089e149a3f7a7683fcf/ # 用户哈希目录(含数据库)
│ ├── ee1da3ae2100e09165c2e52382cfe79f/ # 其他用户目录
│ └── AFFUDRPath/ # 资源路径
├── account.bin # 账号信息
├── app_WxaCronet/ # Cronet 网络组件
├── app_flutter/ # Flutter 引擎
├── app_font/ # 字体缓存
├── app_ringtone/ # 铃声
├── app_webview_*/ # WebView 各进程数据
├── appbrand/ # 小程序相关
├── cache/ # 缓存(含视频号缓存 db)
├── code_cache/ # 代码缓存
├── databases/ # 系统数据库目录
├── files/ # 文件存储
│ ├── liteapp/ # 轻应用数据
│ └── public/voip/db/ # VoIP 数据库
├── shared_prefs/ # SharedPreferences
├── tinker/ # 热修复
└── ...
5. 外部存储目录结构
/sdcard/Android/data/com.tencent.mm/
├── MicroMsg/
│ ├── 989381bff69c06b245fd644651338164/ # 外部存储用户目录
│ ├── Download/ # 下载文件
│ ├── appbrand/ # 小程序外部数据
│ ├── card/ # 卡包
│ ├── fts/ # 全文搜索
│ ├── networkfiles/ # 网络文件
│ ├── wallet/ # 钱包外部数据
│ └── xlog/ # 日志
├── cache/ # 外部缓存
└── files/ # 外部文件
6. 相关包名
| 包名 | 应用 |
|---|---|
com.tencent.mm |
微信主应用 |
com.tencent.wetype |
微信键盘(输入法) |
7. 已导出数据库 Schema
以下数据库已成功导出并可直接用 sqlite3 打开:
7.1 SnsMicroMsg.db(朋友圈)
表清单:
SnsInfo— 朋友圈内容SnsComment— 评论SnsMedia— 媒体文件SnsCover— 封面snsTagInfo2— 标签分组snsDraft— 草稿adsnsinfo— 广告朋友圈SnsReportKv— 上报日志SnsWsFoldGroup/SnsWsFoldGroupDetail— 折叠分组CanvasInfo/AdCanvasCacheInfo/AdDynamicCanvasInfo/UxCanvasInfo— 广告画布AdPullRecordsInfo— 广告拉取记录
完整 schema 见 SnsMicroMsg_schema.sql
7.2 biz.db(公众号消息)
表清单:
bizMsg— 公众号消息bizMsgExt— 消息扩展bizMsgTemp— 临时消息bizNotifyMsg— 通知消息bizRecExposeInfo— 曝光记录
完整 schema 见 biz_schema.sql
8. 加密数据库解密说明
微信核心数据库(如 EnMicroMsg.db)使用 SQLCipher 加密,密钥派生自设备信息 + 用户 UIN。
8.1 获取解密密钥的思路
# 1. 从 .db.ini 获取 MD5(密钥派生参数之一)
adb shell su -c "cat /data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/EnMicroMsg.db.ini"
# 输出: createmd5=72e5fdd648765281b159b559ebdb0725
# 2. 密钥通常需要从运行中的微信进程内存 dump,或通过 WCDB 的 open 函数 hook 获取
# 3. 也可以使用已有的开源解密工具(如基于 frida 的脚本)
8.2 解密命令示例(获得密钥后)
# 使用 sqlcipher 命令行工具
sqlcipher EnMicroMsg.db
PRAGMA key = '你的密钥';
.schema
8.3 参考密钥派生逻辑
微信 SQLCipher 密钥大致逻辑:
- 取设备 IMEI + 用户 UIN
- MD5 处理后取前 7 位作为密钥
- 具体实现因微信版本不同有所变化