本文将基于开源项目 ylytdeng/wechat-decrypt,在 macOS 平台(支持 Apple Silicon 与 Intel)的微信 4.1.7.57 数据库解密与导出实操。
一、环境与工具准备
在开始之前,请确保你的 Mac 满足以下条件:
- 安装 Xcode Command Line Tools:打开终端,运行
xcode-select --install。 - 安装 Python 3 及依赖:确保系统中已安装 Python 3,并在终端运行
pip3 install pycryptodome以安装解密所需的密码学库。 - 保持微信登录:操作期间,请确保微信客户端正在运行且处于登录状态。
二、处理微信代码签名
要在 macOS 上读取微信的内存提取密钥,需要调用 task_for_pid()。如果你的微信是从 App Store 下载或官网安装的,它会带有 Apple 官方签名和 Hardened Runtime(强化运行时)保护,这将阻止我们读取内存。
1.检查签名状态:
在终端运行以下命令:
codesign -dv /Applications/WeChat.app 2>&1 | grep -E "Signature|flags"
- 如果输出包含
flags=0x2(adhoc)和Signature=adhoc,说明你之前可能安装过防撤回等插件,微信已经是 Ad-hoc 签名,可以直接跳过步骤 2。 - 如果输出包含
flags=0x10000(runtime)或Authority=...Apple...,请继续执行步骤 2。
2.对微信进行本地重签名 (Ad-hoc)
为了绕过限制,我们需要将其重签名为 ad-hoc。
- 彻底退出当前正在运行的微信。
- 在本机终端执行重签名命令:
sudo codesign --force --deep --sign - /Applications/WeChat.app
- 重签名完成后,重新打开微信并扫码登录(签名变更会使原有的登录态失效)。
三、提取数据库密钥
针对 macOS 版微信 4.1.7.57,该仓库提供了一个专属的 C 语言版内存密钥扫描器(通过 Mach VM API 扫描)。
- 进入项目源码目录。
- 编译扫描器工具:
cc -O2 -o find_all_keys_macos find_all_keys_macos.c -framework Foundation
- 运行扫描器提取密钥(需要 root 权限)
sudo ./find_all_keys_macos
扫描器会自动寻找微信进程,扫描内存并匹配数据库的 salt 值。执行成功后,会在当前目录下生成一个包含所有数据库加密密钥的 all_keys.json 文件。

四、数据库解密与导出
拥有密钥后,即可对 SQLCipher 4 加密的数据库进行批量解密。
- 自动解密:直接运行以下命令:
python3 decrypt_db.py
或者使用启动入口:
python3 main.py decrypt
- 确认解密结果
解密后的标准 SQLite 文件将统一保存在 decrypted 目录下。你可以使用任何标准的 SQLite 查看工具(如 DB Browser for SQLite)打开 decrypted/message/message_*.db(聊天记录)或 decrypted/contact/contact.db(联系人),进行自由检索和导出。

五、高级与扩展功能
- 实时消息监听与 Web UI: 仅运行
python main.py即可启动服务,打开http://localhost:5678能够查看实时消息流,系统会以约 100ms 的低延迟推送 WAL 文件变化,并支持图片内联预览。 - 图片解密 (V2 格式): 2025年8月之后的微信 4.0 版本采用了 AES-128-ECB + XOR 的 V2 图片加密格式。这要求在微信中打开查看几张图片后,立即运行
python find_image_key_monitor.py来从内存中提取临时的 AES 图片密钥。 - 接入 Claude AI: 通过安装
mcp依赖,你可以将该工具注册为 Claude Code 的 MCP Server,让 AI 直接获取联系人、总结群聊记录或检索特定消息内容。
免责声明:本工具仅用于学习和研究目的,用于解密自己的微信数据,请务必遵守相关法律法规,不要用于未经授权的数据访问。
