在mac os 中解密 WeChat DB
字数 1117 2025-08-07 08:21:57
Mac OS 中解密微信数据库(WeChat DB)完整教程
前提知识
微信数据库文件说明
微信在Mac OS中会生成多个数据库文件,各文件用途如下:
- Msg_1|2|3|4.db:分割存储的聊天记录数据库
- wccontact_new2.db:存储微信联系人信息
- group_new.db:存储群聊信息,包括群聊昵称和微信ID
- ftsmessage.db:目前无法用常规方法解密(需要特殊方法)
准备工作
所需工具
- lldb:Mac OS自带的调试工具
- DB Browser for SQLite:SQLite数据库查看工具
- UltraEdit(或其他十六进制编辑器):用于处理密钥
- 微信客户端:Mac版微信
系统设置调整
如果出现error: attach failed错误,需要执行以下步骤:
- 重启电脑,黑屏时按住
Command + R进入恢复模式 - 输入账户密码
- 进入"实用工具" → "终端"
- 输入命令:
csrutil disable - 重启电脑
注意:这会关闭系统完整性保护(SIP),操作完成后建议重新启用(csrutil enable)。
解密步骤详解
第一步:启动微信并附加调试器
- 确保微信完全退出
- 启动微信,但不要进行任何操作
- 打开终端,执行以下命令获取微信进程ID:
pgrep WeChat - 使用lldb附加到微信进程:
lldb -p [微信PID]
第二步:设置断点并捕获密钥
- 在lldb中设置断点(任选一种写法):
breakpoint set –name sqlite3_key 或 br set -n sqlite3_key 或 br s -n sqlite3_key - 继续执行:
continue - 在手机上确认登录微信
第三步:提取数据库密钥
- 断点触发后,查看寄存器状态
- 读取rsi寄存器内容:
memory read –s 1 -f x -c 32 $rsi - 输出示例:
0x7ffedfd2a3d0: 0xaa 0xc8 0xb5 0x21 0xa9 0x87 0x40 0xec 0x7ffedfd2a3d8: 0xb1 0x23 0x45 0x67 0x89 0xab 0xcd 0xef ...
第四步:处理密钥
- 使用UltraEdit或其他十六进制编辑器:
- 删除地址部分(如
0x7ffedfd2a3d0:) - 去掉所有
0x前缀 - 去除空格
- 将多行合并为一行
- 删除地址部分(如
- 最终得到64字符的密钥
- 在密钥前添加
0x前缀,形成最终解密密钥:0xaac8b521a98740ecb123456789abcdef...
第五步:解密数据库
- 安装并打开DB Browser for SQLite
- 拖入要解密的数据库文件(如
wccontact_new2.db) - 选择"密钥"解密方式
- 输入处理后的密钥(带
0x前缀的64位密钥) - 点击"OK"打开数据库
注意事项
- 不同数据库文件使用相同密钥解密
ftsmessage.db目前无法用此方法解密- 操作完成后建议重新启用系统完整性保护:
csrutil enable - 此方法可能随微信版本更新而失效
常见问题解决
- 调试失败:确保已完全关闭SIP,微信进程未被其他调试器附加
- 密钥无效:检查密钥处理是否正确,确保包含
0x前缀 - 数据库损坏:尝试备份原始文件后操作
通过以上步骤,您可以成功解密Mac版微信的主要数据库文件,查看和分析其中的数据。