在 macOS 上,微信的聊天记录默认以 SQLCipher 加密形式存储在本地数据库中。对于普通用户,这是一道安全防线;但对于希望备份数据、进行个人知识管理或探索 AI 新玩法的开发者来说,这往往是一个难以逾越的“黑盒”。
今天,我们介绍一套基于 内存扫描 技术的开源解决方案。它无需破解二进制文件,只需一行命令扫描运行中的微信进程,即可一次性提取 25+ 个数据库的密钥,完美解密本地数据。
更令人兴奋的是,该工具内置了 Model Context Protocol (MCP) Server。这意味着,你可以直接将微信数据接入 Claude Code 或其他支持 MCP 的 AI 助手,让 AI 直接“阅读”并分析你的聊天记录,实现真正的智能检索与对话回顾。

核心能力一览
- 🔍 内存级密钥提取:通过
lldb动态调试技术,直接从微信进程内存中抓取解密密钥,无需逆向工程。 - 📦 全量数据库支持:一次性解锁消息、联系人、媒体索引等 25+ 个核心数据库。
- 💬 灵活导出:支持按联系人(模糊匹配)、群聊、关键词搜索导出聊天记录,格式友好。
- 🤖 AI 原生集成 (MCP):将微信变为 AI 的“长期记忆库”,支持自然语言查询历史对话、总结会议内容、检索关键信息。
- 🔒 本地化执行:所有操作均在本地完成,数据不出境,隐私完全可控。
🛠️ 快速开始指南
1. 前置条件
本方案专为 macOS arm64 (Apple Silicon) 设计,需满足以下环境:
- 系统要求:macOS (建议最新稳定版)
- 微信版本:WeChat macOS 4.x (其他版本可能需调整内存偏移)
- 权限准备:需禁用系统完整性保护 (SIP)。
- 操作方法:重启进入恢复模式 (Recovery Mode),打开终端输入
csrutil disable,重启生效。
- 操作方法:重启进入恢复模式 (Recovery Mode),打开终端输入
- 依赖安装:
brew install llvm sqlcipher pip3 install fastmcp
2. 提取密钥:一行命令的威力
确保微信已登录并处于运行状态(保持前台或后台均可,但必须进程存活)。
在终端执行以下命令,利用 lldb 获取 Python 接口并运行扫描脚本:
PYTHONPATH=$(lldb -P) python3 find_key_memscan.py
执行结果:
脚本将自动遍历微信进程内存空间,定位 SQLCipher 密钥,并保存至当前目录下的 wechat_keys.json 文件中。
⚠️ 注意:由于涉及内存读取,首次运行可能需要授予终端“完全磁盘访问权限”或“调试权限”。
3. 解密数据库
拿到密钥后,即可解密本地加密的 .db 文件:
python3 decrypt_db.py
解密后的数据库将以明文 SQLite 格式保存,可使用任意数据库工具(如 DB Browser for SQLite)直接查看。
4. 导出聊天记录
工具提供了强大的命令行参数,满足不同维度的导出需求:
# 列出所有会话列表
python3 export_messages.py
# 导出指定会话 (支持模糊匹配昵称/备注)
python3 export_messages.py -c "卡比"
# 导出指定 wxid 或 群聊 ID
python3 export_messages.py -c wxid_xxxxxxxx
python3 export_messages.py -c 12345678@chatroom
# 仅导出最近 N 条消息
python3 export_messages.py -c "卡比" -n 50
# 全局搜索关键词并导出相关上下文
python3 export_messages.py -s "项目预算"
# 暴力导出所有会话 (慎用,数据量巨大)
python3 export_messages.py --all
进阶玩法:接入 MCP,让 AI 成为你的聊天助理
这是本工具最激动人心的部分。通过 Model Context Protocol (MCP),我们将微信数据变成了一个可被 AI 实时调用的“外部工具”。
第一步:注册 MCP Server
在终端执行以下命令,将微信服务注册到 Claude Code(或其他 MCP 客户端):
claude mcp add wechat -- python3 $(pwd)/mcp_server.py
第二步:AI 直接查询
注册完成后,你可以在与 AI 的对话中直接使用自然语言调用微信数据。AI 将自动调用底层工具,返回精准结果。
支持的 AI 指令示例:
| 用户指令 (自然语言) | 底层调用工具 | 功能描述 |
|---|---|---|
| “帮我看看最近和‘产品经理’聊了什么?” | get_chat_history | 模糊匹配联系人,拉取最近聊天记录 |
| “列出我最近的 5 个活跃会话。” | get_recent_sessions | 获取会话列表及最后一条消息预览 |
| “搜索所有包含‘服务器宕机’的消息。” | search_messages | 跨会话全局关键词搜索 |
| “找到‘张三’的微信号和备注。” | get_contacts | 检索联系人详细信息 |
场景想象:
- 会议回顾:“总结一下上周在项目群里关于‘Q4 预算’的讨论重点。”
- 情感分析:“分析一下我和‘前任’过去半年的聊天情绪变化。”
- 知识检索:“我之前发过一个关于‘Docker 配置’的文件,帮我找出来。”
⚠️ 重要提示与免责声明
- 安全风险:本工具需要禁用 SIP (System Integrity Protection),这会降低系统的部分安全性。请在不使用时考虑重新启用 (
csrutil enable)。 - 隐私责任:所有数据解密和导出均在本地进行。请妥善保管生成的
wechat_keys.json和解密后的数据库文件,切勿上传至云端或分享给他人。 - 合规使用:本工具仅供个人数据备份、学习研究及个人知识管理使用。严禁用于非法获取他人隐私、商业窃密等违法用途。
- 版本兼容:微信更新频繁,内存特征可能随版本变化。如遇提取失败,请检查微信版本或关注项目更新。











评论