1.首先明白,二维码是在点击切换账号,或登陆的时候生成的,所以所以保存二维码的地址中的值,是从无到有,并且,每次打开都会重新生成一个二维码,所以我们可以使用CE查找改变的值
2.首次扫描结束发现扫描的结果大的离谱
3.我们这时候修改扫描类型为变动的数值,并点击切换账号,因为切换账号会生成二维码,那么保存二维码地址中的值一定会改变,所以我们需要切换账号,再次扫描
扫描之后发现值依然很大,所以我们就需要拿手机扫描二维码,再次搜索,切换账号,再次搜索。。。。。。直到我们看到左上角的搜索结果在每次搜索后数值的变化不大为止,这个时候,我们拖到结果栏最下面查看绿色的基址
所以我们找到了二维码的基址,使用调试器,附加程序,在找到的地址处下内存写入断点(这里找到的是6cc97184)并运行,直至断下
首先调用的函数是在WeChatWin.dll模块下的函数,所以不看其他模块的调用函数,其次,在栈回溯的时候,因该尽量查找最外层的函数,所以有必要多向下查找,并下断点,观察,先在哪个函数断下(运行之前先取消内存断点)
查看参数[ecx]中的值发现PNG文件结构标识
使用OD中的脚本插件将文件dump下来https://www.cnblogs.com/JianXu/p/5158419.html
文件保存的位置在微信安装文件的根目录下,找到,并打开code.png,出现二维码,,并用手机微信扫描此二维码可以直接登陆微信,说明实验是成功的