PC 版微信在聊天记录的搜索和过滤上操作性不够自由,如果能将保存在本地的微信聊天数据库解密出来,配合专业的数据库软件(或者自己编写相应的数据过滤程序),自由度将会大大提升。本文使用 OllyDbg 调试微信得到数据库的密钥。
以下内容在 PC 版微信v2.6.4 上测试有效。
打开微信,但是不要登录
打开 OllyDbg.exe,选择”File”>”Attach”附加到进程
在弹出的选择框中选择 WeChat(注意不要选成 WeChatWeb)
在 OllyDbg 的菜单栏中选择 “View”>”Executable modules”
在弹出的窗口里找到 “WeChatWin.dll” 并双击
新弹出的窗口被分成了四块,在左上区域点鼠标右键,选择 “Search for”>”All referenced text strings”,选择之后需要稍等几秒钟
在新弹出的窗口里点鼠标右键,选择 “Search for text”
输入 “DBFactory::encryptDB”,并点击 OK 按钮
窗口中相应的行会出现灰色高亮,鼠标双击此行将会跳转到相应的汇编代码
在此行下面第七行有一行汇编代码是 “TEST EDX,EDX”,选中它,并设置断点(快捷键 F2),设置断点后此行前面会变成红色
点击 OllyDbg 的工具栏上的运行按钮(快捷键 F9)
回到微信界面,登录,由于 OllyDbg 设置了断点的缘故,微信会停在断点处,并不会登录上去
回到 OllyDbg,会发现程序已经停在了断点处(行首是黑底红色),此时在右上区域的 EDX 行点鼠标右键,在弹出的菜单项里选择 “Follow in Dump”,左下区域就会出现相应的内存数据
用鼠标框选前四行内容,然后鼠标右键,在弹出的菜单项里选择 “Binary”>”Binary copy”
粘贴出来的文本去掉空格之后就是密钥。