PyWxDump 还能用吗?3 步看懂它如何从微信内存中提取数据库密钥
【免费下载链接】PyWxDump删库项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump
PyWxDump 是一个用 Python 编写的开源工具,从微信 Windows 客户端的进程内存中定位并读出 32 字节的 AES 密钥,再用它解密本地数据库文件(MicroMsg.db 等)。它面向两类人:想导出自己聊天记录做备份或迁移的用户,以及需要访问微信本地数据的电子取证人员。需要先说明一个现状:项目作者于 2025 年 10 月收到微信官方律师函后,删除了仓库中的全部代码与提交历史,目前仓库只剩一份移除通知(见 README.md),本文因此是对它的原理与用法的复盘。读完你能带走三样东西:密钥在进程内存中的定位原理、它原本的操作步骤,以及这类工具的合规边界。
⏱️ 三分钟跑起来:PyWxDump 的安装运行与首次提取
先泼一盆冷水:现在克隆该仓库只能拿到移除通知,
main.py等源码已不存在。以下按原作者当时的文档还原了三步流程,供了解思路,无法实际运行。
- 准备环境(Windows 系统 + 已安装的微信 Windows 版):克隆仓库并安装依赖。
git clone https://gitcode.com/GitHub_Trending/py/PyWxDump cd PyWxDump && pip install -r requirements.txt当时完成后应看到
main.py、config.py等源文件;今天的克隆结果里只有一个 README。 - 提取密钥:先启动微信并登录,再运行提取命令,
--action get_key表示执行密钥提取动作。python main.py --action get_key成功时终端会打印一行
找到有效密钥: <32 位十六进制串>,把这串保存下来。 - 验证密钥:用
--action verify_key配合--key和--db参数,让工具尝试解密指定的数据库文件。python main.py --action verify_key --key <上一步的密钥> --db MicroMsg.db验证通过即说明该密钥可用,后续用它解密整个数据库目录。
🧠 原理:进程内存扫描如何定位微信数据库密钥
打个比方:数据库像一间上锁的仓库,钥匙(AES 密钥)不在仓库里,而是放在酒店前台的系统中;前台屏幕不停滚动,你没法把它拆下来慢慢研究(静态分析程序文件),但你知道钥匙旁边总贴着一张"入住登记表",而且钥匙和表之间的距离是固定的。于是你不需要翻遍整个系统,只需站上前台、找到登记表、再数固定的格数。
对应到真实的技术流程,就是四步:
- 附着到微信进程,枚举其中可读写的内存页("站上前台");
- 在内存中搜索特征字符串,例如数据库路径
MicroMsg.db("找到登记表"); - 按预设偏移量从特征位置推算密钥所在地址("数固定的格数");
- 从该地址读出 32 字节的 AES 密钥。
不同微信版本的内存布局会变,工具靠随版本动态计算偏移量来保持兼容(原始材料称覆盖 3.6.0 至较新版本),这也是它需要跟着微信更新而频繁改动的根本原因。
🔧 进阶用法:--pid、--batch 与扫描范围调优
--pid <进程ID>:直接指定要附着的微信进程。多个微信客户端同时登录时使用它,避免拿错账户的密钥;进程 ID 可从任务管理器查到。--batch批量模式:遍历所有微信进程逐一提取,配合--output-dir把每条密钥分别落盘。适合多账户运维,提取时记得记录每条密钥对应的账户。SCAN_ONLY_WECHATWIN = True(config.py 中的原配置项):把扫描范围限制在 WeChatWin.dll 模块内,缩小搜索空间、加快定位。内存中无关数据多、定位偏慢时使用。
📋 典型场景:聊天记录迁移与电子取证
- 个人用户做数据迁移:目标是把多年聊天记录带走。操作流程:登录后提取密钥 → 用密钥解密本地数据库 → 导出为 HTML 或文本。结果:聊天记录变成可长期保存的文件,换机不再丢失。
- 电子取证人员处理案件:目标是在不动原始设备的前提下固定证据。操作流程:用
--action dump_memory生成内存镜像 → 离线对镜像执行--action search_dump定位密钥 → 验证密钥有效性。结果:分析过程与设备隔离,证据链更完整。 - 多账户运维人员:需要同时管理多个微信实例。用
--batch逐一提取并分别落盘、标记账户。结果:每条密钥与账户一一对应,避免混用。
🩺 常见问题排查:提取失败的四种情形
- 现象:运行后提示未找到有效密钥。最可能原因:微信未登录,或程序权限不足。处理:确认微信已登录 → 以管理员身份重新运行 → 关闭第三方安全软件后重试。
- 现象:读取内存时报错。最可能原因:目标进程受保护或权限不够。处理:提权重试 → 仍失败则切换到
--low-priority模式降低读取优先级。 - 现象:之前保存的密钥验证失败。最可能原因:微信重启后内存中的密钥已变化。处理:重新执行提取流程,并在提取后立刻把密钥备份到安全位置。
- 现象:多账户下密钥和账户对不上。最可能原因:同时存在多个微信进程,默认附着到了别的进程。处理:用
--pid指定具体进程,逐一提取并记录归属账户。
📈 版本演进:从 v1.3.0 到项目移除
与读者相关的几个节点:
- v1.3.0:加入密钥验证模块,提取后可直接验证有效性。
- v1.4.0:适配微信 3.9.9 及更新版本。
- v1.4.2:优化内存扫描算法,原文档称速度提升约 40%。
- v1.5.0:新增多账户批量提取。
- 2025-10-20:作者收到微信官方律师函,删除全部代码与提交历史,仓库仅保留移除通知;原计划中的 ARM 架构支持、实时内存监控、WebUI 管理界面等均未再推进。
最后提醒:密钥提取只应发生在你对设备拥有授权的场景,移除通知中也已要求删除本地留存的项目副本。如果想继续研究进程内存扫描这类技术,上面的四步原理可以直接作为入门路径。
【免费下载链接】PyWxDump删库项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考