-
Notifications
You must be signed in to change notification settings - Fork 0
Home
lzb112 edited this page Feb 10, 2026
·
4 revisions
以下是整理后的技术文档:
# 微信 4.1.7.30 版本数据库加密分析
## 1. 数据库路径结构
**基础路径**: `db_storage/wxid` 目录下
| 数据库文件 | 内容说明 |
|-----------|---------|
| `contact` | 联系人数据 |
| `message` | 消息记录 |
## 2. 加密方式
**加密标准**: SQLCipher 4 加密
### 2.1 逆向定位方法
1. **定位 SQLite3 函数**
通过 `sqlcipher_api_routines` 定位所有 `sqlite3` 相关函数的 **RVA**(相对虚拟地址)
2. **定位密钥设置函数**
通过全局变量 `"com.Tencent.WCDB.Config.Cipher"` 的引用交叉定位 `setCipherKey` 方法
### 2.2 密钥提取细节
**关键寄存器分析**(C++ 调用约定):
- 由于采用 C++ 编译,`RDX+8` 才是实际的数据库密钥地址
**Frida 脚本提取**:
- 编写 `dbkey.js` 脚本 Hook 密钥设置函数
- 重启微信进程即可捕获数据库密钥
## 3. 数据库解密流程
### 3.1 提取 Salt
每个数据库文件的前 **16 字节** 为加密盐值(Salt)
### 3.2 生成原始密钥keyConver.py
- **Key**: 通过 Frida 脚本获取的密钥
- **Salt**: 文件头 16 字节
- 组合生成最终原始口令(Raw Key)
### 3.3 数据库访问
使用 **DB Browser for SQLite** 工具:
1. 打开加密数据库
2. 选择 SQLCipher 4 加密标准
3. 输入生成的 Raw Key 即可解密访问