吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5671|回复: 14
收起左侧

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

  [复制链接]
KongKong20 发表于 2020-6-27 12:13
本帖最后由 KongKong20 于 2020-6-27 12:16 编辑

前言

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

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、看下登陆界面

图片19.png 图片20.png
2、对应的登陆界面的配置文件
图片21.png

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

qrcodeBackBtn

4、用OD下断点

1、双击WeChatWin.dll模块
图片22.png

2、查看所有字符串
图片23.png

3、右键搜索字符串

图片24.png
图片25.png

4、得到搜索结果

图片26.png

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

图片27.png

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

图片28.png

8、重新打开微信

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

图片29.png

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

图片30.png

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

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

OD看比较清晰

图片31.png

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

图片32.png

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

图片33.png

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

图片34.png

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

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

图片35.png

往下翻,到了这里,就没用到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

图片36.png

而接下来,是两个函数,第一个函数运算,结果返回到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.<ModuleEntryPoint>

名称=WeChatWi

文件版本=2.9.0.123

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

偏移 =  内存地址 - 基址

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

第二个call   5C124170 - 5BDE0000 =  344170

写代码

图片37.png

免费评分

参与人数 9吾爱币 +9 热心值 +8 收起 理由
lzhm216 + 1 + 1 用心讨论,共获提升!
hxw0204 + 1 + 1 用心讨论,共获提升!
By阿清 + 1 + 1 我很赞同!
musicer03 + 1 用心讨论,共获提升!
lj3572996 + 1 + 1 我很赞同!
怪发丶 + 1 + 1 我很赞同!
qaz003 + 1 + 1 码贴不易,谢谢分享
nihaoz + 1 + 1 我很赞同!
女萝岩 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| KongKong20 发表于 2020-6-27 18:14
怪发丶 发表于 2020-6-27 13:10
对应的登陆界面的配置文件在哪里看呢

细看文章,duilib那一段已经有提到了
 楼主| KongKong20 发表于 2020-6-28 11:57
devforma 发表于 2020-6-28 09:48
才知道有duilib这个库,搞界面开发看起来不错啊

可以结合MFC,挺方便的
qaz003 发表于 2020-6-27 13:01
ygfygf_888 发表于 2020-6-27 13:04
谢谢分享
怪发丶 发表于 2020-6-27 13:10
对应的登陆界面的配置文件在哪里看呢
Ahon 发表于 2020-6-27 14:23
666这才是大佬
lj3572996 发表于 2020-6-27 14:32
支持下大佬
guojingeva 发表于 2020-6-27 14:39
谢谢无私奉献
zfdc 发表于 2020-6-27 15:45
谢谢分享。
todayvista 发表于 2020-6-27 16:11
谢谢大佬的奉献
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 11:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表