首页
社区
课程
招聘
[原创]WeTool逆向:借用别人的成果 打造自己的程序
发表于: 2019-8-10 10:27 13564

[原创]WeTool逆向:借用别人的成果 打造自己的程序

2019-8-10 10:27
13564

百度直接搜索WeTool就可直接找到WeTool官方网站

这是一款专业的微信粉丝和社群的管理工具,是目前市面上微信HOOK做的非常不错的一款产品。不管是从产品设计角度还是用户体验角度或者是产品安全角度来看都无可挑剔。具体功能各位可以去官网看相关介绍,这里就不多做说明。

目前官网已经不提供免费版本下载了,我会在文末放出免费版本的安装包。

WeTool的客户端和服务端之间的采用WM_COPYDATA的方式进行进程通讯。要想逆向WeTool,就必须理解WM_COPYDATA消息模型。

在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有

比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一种方法

我们可以用下面的函数发送WM_COPYDATA消息

其中,WM_COPYDATA对应的十六进制数为0x4A,wParam设置为包含数据的窗口的句柄。lParam指向一个COPYDATASTRUCT的结构:

其中dwData既可以是数组,也可以是结构体。能发送这两种数据类型,其实就已经满足大部分的进程通讯需求了。

这种通讯方式有一个缺点:接收方必须是窗口程序。所以要想实现exe和dll之间的通信,就必须在dll里注册一个窗口类,并将其显示方式设置为隐藏。

发送端:

接收端:

我们打开WeTool,并登陆微信。WeTool分为两个部分,一个是客户端,就是现在大家所看到的这个,负责显示UI和数据,还有一个是服务端,负责从微信进程获取数据,并将数据传到客户端。WeTool的核心功能都在服务端里面。所以我们要做的就是找到WeTool的核心模块。

打开PCHunter,选中微信进程,右键->查看进程模块,并按照模块路径排序

接着在这里我们看到了一个特殊的东西,之所以特殊是因为这个模块的路径既不属于微信,也不属于系统dll

接着右键->定位到模块文件,找到这模块所在的路径。这个文件夹的名字WeToolCore其实已经暴露了这个dll的功能了。没错,这个就是我们要找的WeTool的核心模块。

这个文件的原始路径是在WeTool文件夹下的WeChatVersion这个子文件夹下。WeTool启动后,会先检测当前微信版本,并根据不同的微信版本注入不同的dll。

这里我们选择分析2.6.5.52这个版本的WeChatHelp。

接下来我们用IDA载入WeChatHelp

在左侧的函数窗口,能直接看到一堆带有名字的函数。之所以能看到这些带有名字的函数,是因为WeTool将这些函数作为接口导出了

我们可以使用LoadPE查看其导出函数。

接下来,为了和微信逆向的过程进行对比,我们选择分析SendMsg这个函数,双击SendMsg,并按F5查看伪代码。

这里将一个全局变量赋给了lParam,并且调用SendMessage,参数为lParam和0x4A。根据之前我们学习过的WM_COPYDATA通信模型,很容易就能看出这里并不是真正的SendMsg函数,而是和客户端进行通信的函数。

那么怎么找到真正的SendMsg函数呢

选中赋值给lParam的这个常量,右键,跳转到交叉引用

选择第二个调用

这里实际上是在判断lParam的消息类型是否是发送消息,如果是则调用sub_100050F0发送文本消息,如果要翻译成源码,就是这个样子

接下来进入sub_100050F0这个函数

重点关注和数字相关的地方,比如0x2EB4E0。接着用OD附加微信(记得退掉WeTool)

用RVA的方式跳转到WeChatWin模块0x2EB4E0的地方,下断点

然后随便发送一条消息,程序断下

接着通过堆栈,找到上一层返回地址,下断点,让程序再次断下,分析函数参数

此时edx指向消息接收者的微信ID

ebx指向消息内容

那么要想确定这个是不是发送消息的call,只需要修改发送的消息内容。接着F9运行

此时消息内容已经被修改,我们就已经找到了发送消息的call。

这里为了节省篇幅我只分析了SendMsg函数内的一个地址,事实上,只要是函数内有的偏移,都需要逐个排查一遍,一个多多个其实没什么差别,只不过多花点时间而已。

请看我上一篇文章,PC微信逆向:发送与接收消息的分析与代码实现:https://blog.csdn.net/qq_38474570/article/details/93339861

这里我们找到发送消息的接口,总共需要以下几步:

而WeTool逆向则完全不同,只需要两步

明显直接逆向WeTool会比逆向微信要省很多时间。特别是在一些不可控的情况,比如找不到切入点,无法确定是不是关键call等等。

只要掌握了上面的方法,就能搞定WeChatHelp里导出的所有函数。这些你都可以直接拿过来,变成自己的程序。事实上我的微信机器人,其中百分之三十的功能就是来自于WeChatHelp。

最后 附上WeTool安装包和微信机器人的成品地址

链接:https://pan.baidu.com/s/1GHjFhkdlUCxjIRfwyo89sA
提取码:d5v6

https://github.com/TonyChen56/WeChatRobot

 
 
 
 
 
 

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-8-10 10:29 被鬼手56编辑 ,原因:
收藏
免费 6
支持
分享
打赏 + 5.00雪花
打赏次数 1 雪花 + 5.00
 
赞赏  wx_空气   +5.00 2019/08/20 成功的勾起了我当年分析wechat的痛苦回忆
最新回复 (25)
雪    币: 3935
活跃值: (192)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
沙发  大佬厉害!~
2019-8-10 12:23
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
偷代码倒是厉害喔
2019-8-10 13:43
0
雪    币: 484
活跃值: (872)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
大道在我 偷代码倒是厉害喔
你当逆向是干嘛的?
2019-8-10 14:01
1
雪    币: 21722
活跃值: (5564)
能力值: ( LV12,RANK:460 )
在线值:
发帖
回帖
粉丝
5
大道在我 偷代码倒是厉害喔
你是在说全论坛的人都在偷代码?你才真的厉害哦
2019-8-10 14:02
0
雪    币: 5633
活跃值: (7174)
能力值: ( LV15,RANK:531 )
在线值:
发帖
回帖
粉丝
6
大道在我 偷代码倒是厉害喔
这种货管理直接封号吧
2019-8-10 14:50
0
雪    币: 6538
活跃值: (4496)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
7
太强了 
最后于 2019-8-10 20:28 被pxhb编辑 ,原因:
2019-8-10 20:28
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
鬼手56 你是在说全论坛的人都在偷代码?你才真的厉害哦
第一点我说偷代码有错么?逆向就是分析别人软件,请问难道不是么? 我说偷代码这话有形容错么?    你能偷到算你自己有本事,我并没有抨击谁。
2019-8-11 01:32
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
houjingyi 这种货管理直接封号吧
看你精华也有9了 你的思想境界还这么低?  能偷到是本事,逆向分析不就是这么一个过程么?
2019-8-11 01:33
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
houjingyi 这种货管理直接封号吧
安全对抗不就是这么一个过程么? 你学习我我学习你,你分析我我分析你,互相发展,虽然我用偷代码这个词是难听了点,但事实就是如此
2019-8-11 01:36
0
雪    币: 6054
活跃值: (12594)
能力值: ( LV12,RANK:312 )
在线值:
发帖
回帖
粉丝
11
大道在我 看你精华也有9了 你的思想境界还这么低? 能偷到是本事,逆向分析不就是这么一个过程么?
你应该没接触过exp开发
2019-8-11 08:54
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
一半人生 你应该没接触过exp开发
没有,但他现在这个文章确实是我说的这样啊,难道我理解他文章错了么
2019-8-11 11:13
0
雪    币: 8387
活跃值: (4961)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
一半人生 你应该没接触过exp开发
其实我想不通,为啥这么多人抨击我,逆向不就是这样么,大家都知道,我这个词语虽然不好听,但是形容没错啊,我也没有针对谁的意思 
2019-8-11 11:19
0
雪    币: 25
活跃值: (506)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
很流弊
2019-8-12 19:35
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
哈哈,几年前我弄了一个工具,直接用的wetool的模块,!直接加载wetool提供的模块与微信通信!
2019-8-12 20:22
0
雪    币: 1103
活跃值: (496)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
窃书不能算偷……窃书!……读书人的事,能算偷么?
2019-8-12 21:50
0
雪    币: 57
活跃值: (105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
zylyy 哈哈,几年前我弄了一个工具,直接用的wetool的模块,[em_13]!直接加载wetool提供的模块与微信通信!
wehelp的api接口可以共享下不
2019-8-15 14:27
0
雪    币: 227
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
18
可以  很好,要是需要微信 API出租可以联系我哦 这是我们接口文档 https://wkteam.gitbook.io/api/   也可以加我微信 LoChaX
2019-8-15 15:28
0
雪    币: 22
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20
不过是抄的别人教授代码。  
2019-8-22 10:26
0
雪    币: 5633
活跃值: (7174)
能力值: ( LV15,RANK:531 )
在线值:
发帖
回帖
粉丝
21
大道在我 其实我想不通,为啥这么多人抨击我,逆向不就是这样么,大家都知道,我这个词语虽然不好听,但是形容没错啊,我也没有针对谁的意思
哈哈哈我不就是说话不好听么,你们为什么抨击我!
2019-10-30 14:09
2
雪    币: 121
能力值: (RANK:0 )
在线值:
发帖
回帖
粉丝
23
来个逆向高手费用1W
2019-11-5 23:19
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
确实这样搞要方便些。之前也瞄了一眼,想了想,还是自己搞吧,定位call也不是那么难,就是VM恶心
2020-6-18 11:02
0
游客
登录 | 注册 方可回帖
返回
//