首页
社区
课程
招聘
[原创]微信PC端技术研究-消息防撤销
发表于: 2018-11-30 23:24 9767

[原创]微信PC端技术研究-消息防撤销

2018-11-30 23:24
9767

微信PC端技术研究-消息防撤销
by anhkgg
2018年11月30日

不知道大家有没有遇到过这种情况,微信收到消息,但是没有及时查看,然后闲暇时去看的时候,消息被撤销了,撤销了!

那时肯定是无比无语,挠心挠肺,究竟发了什么?

有没有一种神器可以防消息撤销呢,有的!其实移动端和mac上已经有人做了相关的插件,但是PC端貌似没人来啃这块骨头。

当然也可能是我没找到,不过不管怎样,对我来说就是没有。

既然如此,小生来!

先理一下思路:

1.对方发送消息之后,我收到消息并在消息窗口显示<br/>
2.然后对方点击菜单选择撤销<br/>
3.我会收到发来的撤销通知,然后删除消息窗口显示的消息

所以分析方向就基本定为两个方向了:

1.一个是通过分析网络消息找到撤销消息,然后拦截该消息阻止消息被撤销<br/>
2.另一个是找到撤销消息的界面操作,patch掉这个撤销消息的操作即可

开始之前,先了解一下微信主要模块都实现什么功能。

主要分析目标就是WeChatWin.dll,其实很早之前就想分析这个东西了,但是那时候的老版本vmp壳加的更严重(映像中是,无法考证),所以搁置很久。

当前我分析的版本应该是最新的2.6.5.38,目前来看加壳程度还行,基本都是比较好分析的代码,没有经过加壳处理,不过听说核心代码还是处理过的。

首先试试从界面入手,都知道微信界面使用duilib实现的,所以可以从它的某些特征入手分析,比如字符串click等,可以快速找到功能函数。

想的是通过click找到整个窗口响应函数,然后再分析找到撤销操作的代码位置。

确实很快就看到了窗口响应函数,不过大概有119个相关函数,所以无奈放弃。

换一个方向,通过菜单入手,搜索menu找到menuCmdDeletemenuCmdRevoke等字符串,menuCmdRevoke就是撤销菜单对应的名字。有29个相关函数,还行。结合调试,尝试了几个函数,果然找到了删除、撤销对应的响应函数。然后想通过删除菜单来找到删除界面消息的代码,而被撤销消息其实也是删除界面消息,不过折腾了一圈未果。

通过recv回溯到接收网络消息的函数中,40个,有点多。找了个tcp抓包工具,想抓到撤销消息的调用堆栈,结果一直被其他消息干扰,无果。

函数太多,分析很费实践,想看看有没有其他路可以走。在字符串中搜索revoke发现很多看起来有用的调试信息,不过也有79条之多。然后通过筛选和调试确认,找到了On RevokeMsg svrId : %d,然后回溯到撤销消息处理的函数中。

经过调试发现sub_10247BF0返回1则进入撤销消息处理中,消息被撤销,跳过此段代码,消息不会被撤销,所以patch掉sub_10247BF0这个函数的返回值使其一直为0即可完成防撤销的功能。

当然也不能太随意了,还是看看这个函数大概做了些什么处理吧。关键参数第一个,调试中发现值如下:

sub_10247BF0解析发现type="revokemsg"即判断为撤销消息操作,返回1,很明了。

小结:此次分析运气较好,通过revoke找到关键代码,少花了很多时间,其实通过网络方向堆栈筛选确认应该也是可以找到这段代码的,但是通过结果去看,发现有近10层调用栈,肯定会花成倍的时间才能找到关键代码。

分析是为了最后能够用起来,所以用上一篇文章《一种通用Dll劫持技术》写了一个简单的包含patch代码(没有用hook)的dll模块,劫持微信的WeChatResource.dll来完成加载。

关键代码如下所示,patch了sub_10247BF0返回值所在代码,让其eax永远为0。

最后惯例,放上github地址:13dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6S2L8X3S2C8k6$3N6Q4x3V1k6e0N6i4m8W2M7W2N6W2b7$3S2S2N6q4m8o6


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2018-12-5 22:41 被anhkgg编辑 ,原因:
收藏
免费 5
支持
分享
最新回复 (11)
雪    币: 5221
活跃值: (4337)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
 暖暖贴  
2018-12-1 12:05
0
雪    币: 1563
活跃值: (272)
能力值: ( LV7,RANK:105 )
在线值:
发帖
回帖
粉丝
3
技术太吊 一时半会儿学不会 先学习下大佬的分析思路 涨姿势了
2018-12-1 13:52
0
雪    币: 10072
活跃值: (3028)
能力值: ( LV15,RANK:515 )
在线值:
发帖
回帖
粉丝
4
人这么少吗
2018-12-2 15:59
0
雪    币: 153
活跃值: (225)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
来冒个泡儿!
2018-12-2 18:30
0
雪    币: 1198
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大佬
2018-12-2 18:37
0
雪    币: 10072
活跃值: (3028)
能力值: ( LV15,RANK:515 )
在线值:
发帖
回帖
粉丝
7
为嘛这个贴回复这么少?
2018-12-4 22:53
0
雪    币: 235
活跃值: (127)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
写个工具放出来,回复的人就多了
2018-12-5 22:25
0
雪    币: 10072
活跃值: (3028)
能力值: ( LV15,RANK:515 )
在线值:
发帖
回帖
粉丝
9
Sampgirl 写个工具放出来,回复的人就多了
github放的不就是工具吗
2018-12-5 22:40
0
雪    币: 15
活跃值: (280)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好东西,学习
2018-12-18 14:05
0
雪    币: 2895
活跃值: (309)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
移动端的分析过程想了解一下
2019-4-23 18:00
0
雪    币: 135
活跃值: (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
给你点星星。支持
2019-5-17 11:35
0
游客
登录 | 注册 方可回帖
返回