项目目标
破解某宿主环境的微信数据库,从而获取其聊天历史记录
项目逻辑与原理
为什么要从数据库角度出发
如果使用 wechaty 之类的微信机器人,只可以 hook 每条实时消息,无法完整获得历史聊天记录。
不过如果在 wechaty 的框架内,再加上获取聊天记录的 api,也许是可行的。
而由于微信聊天记录都是存在数据库的,因此可以从数据库角度进行获取。
为什么涉及到数据库的破解
因为微信聊天记录是存储在 sqlcipher 的,它是支持加密的 sqlite 数据库,需要秘钥才能打开,因此我们要首先拿到数据库的秘钥。
如何获取数据库的秘钥
以 MacOS 为例,我们可以使用一些逆向手段(dtrace)hook 程序的数据库活动,由于程序打开数据库涉及到密钥的读取,我们可以解析这个读取动作,从而获得明文秘钥。
为什么选择 MacOS 平台
理论上任何平台都可以实现,尤其是 Android、Windows 等平台,逆向工程师更多、破解起来难度可能更小,但我个人的主力机是 Mac/iOS,因此暂时没有考虑兼容 Windows/Android 生态。
其次,PC端的工程能力比移动端要丰富,因此,优先考虑在PC端突破,是性价比较高的选择。