首页
社区
课程
招聘
[原创]PC版微信数据库解密详细教程
发表于: 2019-5-12 13:23 128773

[原创]PC版微信数据库解密详细教程

2019-5-12 13:23
128773

【 原创文章,转载请注明出处。 】 

       在电子取证过程中,也会遇到提取PC版微信数据的情况,看雪、52破解和CSDN等网上的PC版微信数据库破解文章实在是太简略了,大多数只有结果没有过程。经过反复试验终于成功解密了数据库,现在把详细过程记录下来,希望大家不要继续在已经解决的问题上过度浪费时间,以便更投入地研究尚未解决的问题。

通过查阅资料得知,与安卓手机版微信的7位密码不同,PC版微信的密码是32字节(64位),加密算法没有说明,但是可以通过OllyDbg工具从内存中获取到这个密码,然后通过一段C++代码进行解密。

       首先下载OllyDbg 2.01汉化版,我用的版本如下图所示:


       运行OllyDbg,然后运行PC版微信(需要下载客户端的,不是网页版)。先不要点击登录按钮。


       切换到Ollydbg界面:


       点击文件菜单,选择“附加”,在弹出的对话框中找到名称为WeChat的进程,其窗口名称为“登录”。然后点击“附加”。


       附加成功后OllyDbg开始加载,成功加载后可以看到最上面OllyDbg后面有WeChat.exe的字样:


       在查看菜单中选择“可执行模块”:


       找到名称为WeChatWin的模块,双击选中。为了方便观察,在窗口菜单中选择水平平铺。在CPU窗口标题栏可以看到“模块WeChatWin”字样。


       在插件中选择“StrFinder字符查找”中的“查找ASCII字符串”(注意如果下载的OllyDbg版本不对,可能没有相关插件,因此一定要找对版本),要稍微等一会儿,会出现搜索结果的窗口。


       在此窗口点击鼠标右键,选择“Find”,在搜索框中输入“DBFactory::encryptDB”。


       会自动定位在第一处,但我们需要的是第二处,即“encryptDB %s DBKey can’t be null”下面这一处。可以用鼠标点击滚动条向下,找到第二处,用鼠标双击此处。


       在CPU窗口中可以看到已经定位到了相应的位置。用鼠标点击滚动条向下翻。


       下面第六行应该是TEST EDX,EDX,就是用来比对密码的汇编语言代码。在最前面地址位置(本文中是0F9712BA)双击设置断点(设置断点成功则地址会被标红,而且可以在断点窗口中看到设置成功的断点)

       点击“运行”按钮(或者在调试菜单中选择“运行”),这时寄存器窗口中的EDX的值应该是00000000。

       切换到微信登录页面,点击登录,然后到手机端确认登录。这是OllyDbg界面中的数据不断滚动,直到EDX不再为全0并且各个窗口内容停止滚动为止。


       在EDX的值上面点击鼠标右键,在弹出的菜单里面选择“数据窗口中跟随”,则数据窗口中显示的就是EDX的内容。


       图示中从0B946A80(这个数值是变化的,不但每台电脑不同,每次调试也可能完全不同)到0B946A9F共32个字节就是微信的加密密码,本图中就是:

“53E9BFB23B724195A2BC6EB5BFEB0610DC2164756B9B4279BA32157639A40BB1”

       一共32个字节,共64位。

       得到这个之后,就可以关闭OllyDbg了,微信也会自动被关闭。


       接下来就是解密过程。在看雪、52破解等多个论坛中都有相关的C++源码,开始企图使用Dev-C++或者C-Free等轻量级IDE进行编译,也使用过Visual C++ 6.0绿色精简版,结果多次尝试出现各种错误,反复失败,最终不得已使用Visual Studio,并对代码进行了一定的修正,终于调试成功。

正好Visual Studio 2019刚刚发布直接到官方网站下载了社区版。

       根据查到的资料,需要先安装openssl,为了省事直接下载了最新的Win64OpenSSL-1_1_1b,安装后发现各种报错,继续查找资料发现原来sqlcipher使用的是低版本的openssl,之后找到了一个Win64OpenSSL-1_0_2r也报错,最后发现还是官方这个直接解压缩的版本靠谱:

https://www.openssl.org/source/openssl-1.0.2r.tar.gz

       把压缩包直接解压到任意目录,比如c:\openssl-1.0.2r

       启动Visual Studio 2019社区版(估计Visual Studio 2008以后的都应该可以,懒得找就直接官网下载最新的吧)

       在启动界面右下方选择“创建新项目”


       滚动下拉条,在窗口中选择C++控制台应用:



[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 26
支持
分享
最新回复 (130)
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
sofa.............优秀优秀
2019-5-12 13:28
0
雪    币: 6832
活跃值: (1637)
能力值: ( LV5,RANK:67 )
在线值:
发帖
回帖
粉丝
3
测试没问题,不过我的是D:\Documents\WeChat Files
2019-5-13 11:29
0
雪    币: 154
活跃值: (221)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
厉害了,老铁666
2019-5-13 17:10
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
5
为什么我下载的openssl里面没有lib目录,而且include内为空?
2019-5-14 17:56
0
雪    币: 14
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
2019-5-14 18:50
0
雪    币: 1042
活跃值: (495)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个key 的规则是啥
2019-5-14 20:44
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
8
找了一个openssl,编译成功,但是好像对大文件,超过50MB,会解密失败,提示hash值错误
2019-5-14 20:59
0
雪    币: 194
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
htg 找了一个openssl,编译成功,但是好像对大文件,超过50MB,会解密失败,提示hash值错误
兄弟,我断点之后微信就显示无法获取二维码了,你有过这种情况吗
2019-5-18 10:08
0
雪    币: 209
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
代码原始出处https://bbs.pediy.com/thread-222652.htm
2019-5-18 10:15
2
雪    币: 194
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
楼主,我断点之后微信就无法登陆了,这是什么情况呢
2019-5-18 22:00
0
雪    币: 99
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
希望有同僚能分析一下备份文件:bak_0_text和bak_0_media等文件,有贴子说,这些备份文件使用了pb协议
2019-5-25 11:34
0
雪    币: 13
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
楼主,我也断点之后微信就无法登陆了,这是什么情况呢,提示无法连接网络
2019-5-28 13:02
0
雪    币: 200
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
14
这种靠字符串 入手的 也申请 精,看雪无人才,有本事 不要从字符串入手。
2019-5-28 13:36
0
雪    币: 1266
活跃值: (1307)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
        sprintf_s(decFile, "dec_%s", dbfilename);
        这里路dec加到绝对路径前面去了,大哥
2019-6-12 09:03
0
雪    币: 15
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
一样的问题,点击登录时,跳出无法获取二维码!
2019-6-14 00:11
0
雪    币: 1112
活跃值: (184)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
htg 找了一个openssl,编译成功,但是好像对大文件,超过50MB,会解密失败,提示hash值错误
遇到相同的问题,有知道怎么解决吗
2019-6-27 15:10
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
htg 找了一个openssl,编译成功,但是好像对大文件,超过50MB,会解密失败,提示hash值错误
我下的也是啊 兄弟 你解决没有啊
2019-6-28 17:33
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19
htg 为什么我下载的openssl里面没有lib目录,而且include内为空?
我下的也是啊
2019-6-28 17:34
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
20
牛逼 虽然看不懂
2019-7-1 14:13
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
21
htg 找了一个openssl,编译成功,但是好像对大文件,超过50MB,会解密失败,提示hash值错误
兄弟 你下的是哪个版本的openssl
2019-7-1 16:12
0
雪    币: 221
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
晴雯晴雯 测试没问题,不过我的是D:\Documents\WeChat Files
兄弟 openssl下的是什么版的的啊 可否告知一下
2019-7-1 16:23
0
雪    币: 6832
活跃值: (1637)
能力值: ( LV5,RANK:67 )
在线值:
发帖
回帖
粉丝
23
最新版,1.0.2r
2019-7-2 08:55
0
雪    币: 6832
活跃值: (1637)
能力值: ( LV5,RANK:67 )
在线值:
发帖
回帖
粉丝
24
最新版,1.0.2r
2019-7-2 08:55
0
雪    币: 6832
活跃值: (1637)
能力值: ( LV5,RANK:67 )
在线值:
发帖
回帖
粉丝
25
Fate_ 兄弟 openssl下的是什么版的的啊 可否告知一下
最新版,1.0.2r
2019-7-2 08:59
0
游客
登录 | 注册 方可回帖
返回
//