# 微信 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 上报日志 | 检测命令: ```bash # 检查文件头是否为 "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 列出所有数据库 ```bash adb shell su -c "find /data/user/0/com.tencent.mm -name '*.db'" ``` ### 3.2 导出主数据库 ```bash adb shell su -c "cat /data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/EnMicroMsg.db" > EnMicroMsg.db ``` ### 3.3 查看数据库结构(需设备上有 sqlite3) ```bash adb shell su -c "sqlite3 /data/user/0/com.tencent.mm/MicroMsg/653cdc2320abb089e149a3f7a7683fcf/EnMicroMsg.db '.schema'" ``` ### 3.4 导出整个 MicroMsg 目录 ```bash 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 查找特定表 ```bash # 例如查找联系人表 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 获取解密密钥的思路 ```bash # 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 解密命令示例(获得密钥后) ```bash # 使用 sqlcipher 命令行工具 sqlcipher EnMicroMsg.db PRAGMA key = '你的密钥'; .schema ``` ### 8.3 参考密钥派生逻辑 微信 SQLCipher 密钥大致逻辑: - 取设备 IMEI + 用户 UIN - MD5 处理后取前 7 位作为密钥 - 具体实现因微信版本不同有所变化