@leaf_sanren: https://x.com/leaf_sanren/status/2073069608437764266
摘要
作者详细介绍了如何通过逆向工程破解微信Mac版的加密系统,使用Frida动态插桩捕获系统函数CCKeyDerivationPBKDF生成的密钥,从而解密29个加密数据库,实现了自动获取群聊记录的目标,并计划开源该项目。
查看缓存全文
缓存时间: 2026/07/04 14:48
为了分析群聊记录,我把微信的加密系统拆了
我把微信 Mac 版的加密系统拆了。29 个加密数据库,全线解密。没封号。
这篇文章讲的是:怎么从一个最朴素的日常烦恼出发,一路跌进微信加密系统的深坑,最后靠一次思路转换爬了出来。
先声明:我是文科出身。以下是我和 AI 一起啃下来的,不一定全对,大佬轻拍。
起因
群里每天几百条消息。干货是真多——推特运营经验、策略讨论、案例拆解。但说实话, 刷几百条真的很累,有时候忙半天没看手机,回头一翻,精华全淹了。 偶尔还有推友丢条链接请帮忙加评论,但不记下来转头就忘,也挺不好意思的。
我想做一件很简单的事:每天自动把群聊总结出来。干货归干货,求助链接归链接,清清楚楚。
技术上第一步就卡住了——得先读到聊天记录。
微信的聊天记录是加密的。
微信的三道防线
微信 Mac 版用 SQLCipher 给聊天记录上了 AES-256 的锁。防线有三层:
-
数据加密:聊天记录躺在你电脑上,但没钥匙就是一串乱码。
-
钥匙不留痕:微信不存钥匙。它只记一句暗号(passphrase),每次需要开锁时把暗号交给 macOS 系统自带的一个加密函数(CCKeyDerivationPBKDF——你可以把它理解成一台「磨钥匙的机器」),磨 256,000 次,造出钥匙。开锁,看完,钥匙扔掉。下次再造一把——暗号和配方没变,造出来的永远一样。
-
磨钥匙的机器是系统自带的,不是微信自己写的。
第三层看起来像优势——实际上它是唯一的突破口。一会儿你就知道为什么。
所有失败的方案
理解了防线,来看看市面上的开源工具各自攻的是哪一层。以下按 Star 数从高到低排列。
1 读界面 — 不看锁,看屏幕上的字❌
WeChatMsg / 留痕(41.8k stars)— 功能最全的聊天记录导出工具,可以导出文本、生成年度报告甚至做 AI 人格分析。问题是:需要手动操作,没有自动采集能力,没法做成每日自动总结。而且项目已经很久没更新了。
顺便提一个周边项目:colleague-skill(19.7k stars)是一个很火的人格提取框架。它支持微信数据,但方式是——手动用 WeChatMsg 导出聊天记录后再分析。和我们需要的「每日自动采集」完全不搭。不是一个赛道的东西。
WeChat-MCP(212 stars)— 用 macOS 无障碍功能直接读微信窗口里显示的消息,等于让 AI 像人一样看屏幕。问题:微信 Mac 版用 Qt 框架自定义渲染,系统读不到内容——像隔着毛玻璃看字。
2 内存扫描 — 在垃圾桶里翻扔掉的钥匙❌
wechat-cli(1.4k stars)— 旧版微信(≤ 4.1.8)会把密钥以明文格式存放在运行内存里。这个工具扫一遍内存捞出来就行。但微信 4.1.9 之后,这种格式消失了。我扫完 1.5GB 内存,0 个匹配。
WxEcho(13 stars)— 同样的内存扫描思路。同样失败。
这类工具的共同死穴:钥匙已经被扔了,你在垃圾桶里翻破天也翻不到。
3 调试器拦截 — 在锁眼旁边蹲守❌
wechat-db-decrypt-macos(627 stars)— 用 lldb 在微信内部函数设断点,用户打开聊天窗口时从寄存器读密钥。问题:只支持 Apple 芯片(我机器是 Intel)、需要关闭 macOS 安全防线 SIP(关了等于把整台 Mac 的安全门拆掉)、微信更新就失效。
ginger_wechat_portrait(477 stars)— 底层依赖上面这个项目。底层不通,上层全废。
4 跨平台探索❌
wcdb-key-tool(21 stars)— 在 Linux 上跑通了 23/23 数据库解密,仅支持 Linux。但它证明了一件至关重要的事:PBKDF2 密钥派生这条路是走得通的。 问题只在于怎么在 macOS 上实现。
另外,曾经最火的微信解密工具 PyWxDump 在 2025 年 10 月收到了微信律师函,作者被迫删库下架。这个生态的风险,比技术本身更大。
我们自己的三轮尝试,依旧失败❌
看完开源工具,我和 Claude Code 决定自己动手。写了三版 C 程序:
-
v1:在 7GB 内存里搜数据库盐值,看附近有没有钥匙。找到 6 处盐值——附近没钥匙。
-
v2:搜 256000 这个极罕见数字定位 SQLCipher 结构体,顺着指针找钥匙。找到 92 个结构体,配置完美匹配——0 个有效密钥。
-
v3:换偏移量、扩搜索范围。还是 0。
结论扎扎实实:微信 4.1.11 把密钥存储做了系统性保护。钥匙只在被造出来的那一瞬间存在。
思路的根本转换💡
推特上的 @rionaifantasy 发了一张截图,展示他用 Codex 成功提取了微信数据。截图里有一个项目名:wechat-local-vault。
搜遍 GitHub 搜不到——它藏在一个叫 yichen-skills(519 stars)的个人工具合集仓库里,仓库名和描述都不含「wechat」这个词。
读了源码,我明白了。
之前所有方案都在做什么?找钥匙。 在内存里搜、在结构体里翻、在函数出口等——全是去找已经造好的那 32 个字节。但钥匙用完就毁了,它不存在于任何地方。
wechat-local-vault 的思路完全不同。不找钥匙。守磨坊。
还记得微信的第三层防线吗?磨钥匙的机器——CCKeyDerivationPBKDF——是 macOS 系统自带的。不管微信怎么升级、怎么保护自己的代码,它最终都必须调用这个系统函数来造钥匙。因为它自己没有磨坊。
所以方法很简单:在这个系统函数出口装一个监听器(Frida 动态插桩)。钥匙磨出来经过的时候,看一眼,抄一份。微信完全不知道有人在旁边。
一个类比帮理解:微信就像一个每天去同一个磨坊磨豆子的住户。之前所有人都在他家翻箱倒柜找磨好的豆子。但这个方案——直接站在磨坊门口,等他磨好,接住。
但它还是没跑通
拿到源码跑——0 次捕获。
排查发现,时序问题。原版脚本先启动微信,再慢慢装监听器。但微信启动太快了——监听器还没装好,29 个数据库已经全部打开,钥匙磨完用完了。
赶到磨坊门口的时候,人家已经下班了。
修复:让磨坊开门前就站好
修复思路极简单——先装好监听器,再让微信启动。
用 Frida 把微信冻在启动前的暂停态。此时系统库已加载,直接装好监听器。装完再解冻。
微信醒来,开始磨第一把钥匙的时候——我们已经在旁边等着了。
重要操作:为什么要把微信复制一份到桌面?
macOS 不允许给正式签名的应用挂监听器。要挂监听器,得重新签名。但直接改原版微信签名 = 系统收回截图、录屏、通知等所有权限——各种日常功能全崩。
正确做法:复制一份到桌面,只改副本签名。密钥拿到后删掉副本,原版微信丝毫无损。
结果
一跑——
86 次密钥派生全部捕获。29 个数据库,全线解密成功。
群聊消息完整读出。历史记录、最新消息,全部可见。
还有一个好消息:暗号和配方不会变——造出来的钥匙永远是同一把。密钥只需提取一次,以后每天做增量解密就够了。
下一步
跑通了最硬的那块骨头,剩下的事就是把场景做完整。
不只是微信——飞书、Telegram、Discord,凡是有群聊的地方,我都想把它接进来。每天自动扫描、自动分类、自动总结。干货归干货,求助归求助,一个面板看完。
目前的计划是把这个工具包装成一个开源项目。技术瓶颈已经过了,剩下的就是用 AI 把流水线搭起来。
如果你也在为群聊信息过载头疼,欢迎评论区聊聊你遇到的场景。或者你试过什么工具、踩过什么坑,一起交流。
相似文章
@jinchenma_ai: 卧槽!刚发现一个能读取微信聊天记录的工具,私域运营神器啊! wx-cli,让 AI 可以自由读取微信消息。 1. 消息随便翻:不用点开微信那个难用的搜索框,直接输入关键词就能搜全库聊天记录,速度快到飞起。 2. 朋友圈挖掘机:能直接看朋友…
wx-cli is a local tool for extracting and analyzing WeChat chat history and moments, enabling AI integration without cloud data transmission.
@CycleDecoded: 微信吃掉你电脑几百 G 硬盘这事儿,终于被 GitHub 上的狠人给治了。 昨天在 GitHub 榜上挖到一个叫 WxCleaner 的神器,专门用来清理微信电脑版里那些成堆的重复文件。平时工作群里一个文件转发八百遍,全存在你本地,这玩意…
WxCleaner 是一个开源的微信重复文件清理工具,通过哈希算法智能扫描并可视化清理微信电脑版产生的冗余文件,支持安全移至回收站以防误删。
@gengdaJ: 总结一下我开源的Skills大全: 1. 微信数据解析Skill:微信聊天记录、通讯录、收藏夹、朋友圈全解析。 https://github.com/mcncarl/yichen-skills/tree/main/yichen-wecha…
开源了一个名为 yichen-skills 的技能集合,包含微信数据解析、抖音/小红书抓取、X文章发布、Agent记忆等多个自动化工具,主要针对内容创作者和本地工作流优化,基于 Claude Code 和 Codex。
@laowangbabababa: 卧槽,外链跳转微信加好友,被我打通了。 全程用codex ,从链接,跳转到微信app扫码,加微信的流程。从各种网站,获客的线索终于可以不会丢失了。 我看了其他网站做的这样产品,月费至少是99,我只有认证费和服务器的成本。 参考这个视频看看…
作者用 OpenAI Codex 实现了外链跳转微信加好友的功能,降低了获客成本,对比市面上月费99的产品,只需认证费和服务器成本。
@apivixtls: 开源前核心成果(DeepSeek V4 Flash 驱动)在项目开源之前,我使用 https://github.com/zhaoxuya520/reverse-skill… 完成了多项高难度的逆向与安全研究工作,充分验证了模型在实际复杂工…
作者@apivixtls发布了reverse-skill工具,这是一个专为逆向工程和安全分析设计的AI Agent工作流路由和工具编排系统,并展示了其在Go反汇编、APK反编译、Web漏洞利用等场景中的强大能力。