Windows逆向分析入门(七)——实战篇(刷新二维码)

前言

这一篇,用到找偏移的第二个方法:界面;第四个方法:字符串;第六个方法:第三方库。目标是刷新二维码。

Duilib

WX的界面模块是第三方库:Duilib。

关于Duilib的介绍和分析,已经分享了《Dump微信PC端的界面Duilib文件》。

这里梳理一下Duilib的主要流程:

1、Duilib加载配置文件,生成界面。

2、用户点击界面的的按钮,会产生click事件。

3、Duilib接收到事件,会判断是点个哪个按钮,然后触发对应的函数。

4、比如发送按钮,配置文件里面是"send_btn",判断代码就是 if(xxx== “send_btn”)。

5、通过拦截按钮的名字"send_btn",就可以定位到按钮的对应的函数是哪一个。

分析思路

1、找到登陆界面的配置文件

2、确定刷新二维码的按钮名字

3、在软件中对按钮的名字进行下断点

4、看是否触发断点,如果触发,进一步确认对应函数

找偏移

1、看下登陆界面

图片图片

2、对应的登陆界面的配置文件

图片

3、刷新二维码的按钮的名字

qrcodeBackBtn

4、用OD下断点

1、双击WeChatWin.dll模块

图片

2、查看所有字符串

图片

3、右键搜索字符串

图片

图片

4、得到搜索结果

图片

6、双击,然后右键看下用到这个字符串的地方

图片

7、对用到这个字符串的地方下断点

图片

8、重新打开微信

第一个断点断下来,这里是生成界面,不是我们想要的,跳过。

图片

点击登陆界面的切换账号,触发刷新二维码

图片

这里可以看到,会有各个按钮的名字,也有je的汇编

对应的就是C++的if(xxx== “xxxBtn”)

OD看比较清晰

图片

这样就可以定位到,刷新二维码的函数,是je之后这一块

图片

具体是哪一个,可以用排除法,把函数注释掉,如果没有刷新,那个这个函数就是目标函数。

图片

继续执行,确实没有刷新二维码,这个函数是目标函数,看下参数

图片

传递的参数ecx,ecx是个指针,并且指向的是一个虚表,意味着这是一个类的对象,构造对象麻烦。F7进入函数跟踪进行,看下有没有不需要自己构建参数的函数。

这里把ecx传给esi,然后有很多[esi+ 0xxxx],意味着还是在用这个对象,跳过。

图片

往下翻,到了这里,就没用到esi的数据了。

参数ecx没指向虚表,不是上面的对象。试试注释掉,结果还是有刷新二维码,排除掉。

5C00FA79 8D4D E0 lea ecx,dword ptr ss:[ebp-0x20]

5C00FA7C C745 FC FFFFFFF>mov dword ptr ss:[ebp-0x4],-0x1

5C00FA83 E8 F8DEE1FF call WeChatWi.5BE2D980

图片

而接下来,是两个函数,第一个函数运算,结果返回到eax,接下来又传给ecx,给第二个函数用,可以看出这两个函数是一起的,两个都注释掉之后,没刷新二维码,因此这两个函数就是我们要的刷新二维码的函数。

5C00FA88 E8 83C5FFFF call WeChatWi.5C00C010

5C00FA8D 8BC8 mov ecx,eax

5C00FA8F E8 DC461100 call WeChatWi.5C124170

算偏移

基址:5BDE0000

Executable modules, 条目 7

基址=5BDE0000

大小=01946000 (26501120.)

入口=5CB34A63 WeChatWi.

名称=WeChatWi

文件版本=2.9.0.123

路径=C:\Program Files (x86)\Tencent\WeChat\WeChatWin.dll

偏移 = 内存地址 - 基址

第一个call 5C00C010 - 5BDE0000 = 22C010

第二个call 5C124170 - 5BDE0000 = 344170

写代码

图片

工具和教程,放群里(163419350),方便交流。
实战代码放在github:https://github.com/KongKong20/WeChatPCHook

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值