PC微信逆向:分析获取群成员列表的call(part1)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38474570/article/details/96755951

获取群好友的相关思路

在微信点开群列表的时候会显示所有的群成员,这个就是我们的突破口。

在这里插入图片描述

这个动作的编程逻辑在于,当我们点击群的时候,微信需要传入这个群的ID,然后取出所有的群成员,显示到界面上。那么思路就来了,我们可以拿到当前群ID的地址,然后对这个地址下访问断点,接着栈回溯分析

定位获取群好友列表的call

获取群ID

在这里插入图片描述

首先将当前聊天窗口定位到文件助手,然后搜索filehelper

在这里插入图片描述

接着切换当前聊天窗口,搜索wxid_

在这里插入图片描述

把地址添加到下方地址栏,然后将显示的范围扩大

在这里插入图片描述

然后我们点开群列表,再点击发送消息

在这里插入图片描述

就能拿到这个微信群的ID了。我们记录下这个群ID

筛选当前窗口的群ID

我们已经拿到需要的群ID了,接着来定位一下当前窗口的群ID

在这里插入图片描述

将窗口定位到群列表,然后搜索这个群的ID,

在这里插入图片描述

接着我们变换群列表,然后搜索这个群的群ID

在这里插入图片描述

加入到下方地址栏

在这里插入图片描述

此时地址栏中的ID会跟随当前群窗口的ID变换而变换

定位当前窗口的群ID

这么多地址,那么我们怎么确定唯一的一个呢?很简单

在这里插入图片描述

当前我所在的群ID是The Magic Way的群ID

在这里插入图片描述

接着我们切换到聊天界面,此时群ID不会变化

在这里插入图片描述

接着我们选择一半地址,将这一半选中的地址更改为14软件三班的群ID

在这里插入图片描述

此时我们再次点击联系人,如果这个时候群成员的列表变成了14软件三班的群成员列表,那么就说明前面四个中的一个就是当前窗口的群ID,我们就删除后面三个。反过来,如果没有变化,就说明前面四个不是我们要的当前窗口的群ID,我们就直接删掉前面四个地址

在这里插入图片描述

点击联系人,我们发现当前群成员的列表已经变成了14软件三班的群成员列表,说明前面四个地址中有我们需要的。删除后三个。重复上面的步骤,直到筛选出唯一一个群ID

定位获取群好友列表call

在这里插入图片描述

接着我们给这个地址下一个内存访问断点

在这里插入图片描述

点击群列表,此时程序断下,删除内存断点,分析附近的堆栈地址

我们要在堆栈中找一个call,传入了我们当前点击的群ID。我刚才点击的是14软件三班,群ID是1741784456@chatroom。我们要在堆栈中找这样一个带群ID参数的call

在这里插入图片描述

这个就是我们需要的call

在这里插入图片描述

我们在这个地址下断,然后切换群为The Magic Way,此时程序断下。找到了这个call,就说明离我们想要的获取群成员的call不远了。单步往下跟踪

在这里插入图片描述

这里有一个call,传入了当前的群ID

在这里插入图片描述

和自己的微信ID,这个有可能就是我们需要的call,我们F7进去

在这里插入图片描述

在里面看到有一个call传入了数据库的句柄,但是还是没有我们想要的东西,继续单步往下跟

在这里插入图片描述

这里也有一个call,传入的参数是一个群ID,我们F7进去这个函数

在这里插入图片描述

这里有一个call,传入了两个参数,eax是比较大的一个缓冲区,

在这里插入图片描述

ebx是群ID,那么可以猜测,这个call的作用是通过传入一个群ID获取到群成员之后,将群成员放入到缓冲区里。我们F8步过这个函数

在这里插入图片描述

此时eax返回了一个数据库的句柄

在这里插入图片描述

然而缓冲区没有任何变化。这里我们可以猜测程序的流程是先获取数据库句柄,然后用数据库句柄发起sql请求,拿到数据,接着写入到缓冲区。

接着我们继续往下跟,看看在什么时机往里面写入了数据

在这里插入图片描述

再次步过函数,发现此时缓冲区里有大量的微信ID,数据窗口跟随这个地址

在这里插入图片描述

这里把所有的数据用一个特殊字符隔开,继续往下单步

在这里插入图片描述

此时eax的返回值指向了一个地址,我们数据窗口跟随这个地址

在这里插入图片描述

里面显示的是已经处理好的所有的群成员的ID,那么我们就可以确定这个call可以拿到所有处理好的群成员的列表

但是光找到这个call还不够,我们需要拿到群成员的数量,才方便我们写代码循环获取群成员。F9运行程序,然后记录下群成员的数量

在这里插入图片描述

点击The Magic Way,记录下276的十六进制是114

在这里插入图片描述

在[eax+0xA4]的位置保存有当前选中群的成员数量。这个地方可以拿到所有群成员的微信ID,而想要拿到群成员的其他信息,还需要找另外一个call。下篇文章见。

目前微信机器人的成品已经发布,需要代码请移步Github。还请亲们帮忙点个star

https://github.com/TonyChen56/WeChatRobot

展开阅读全文

没有更多推荐了,返回首页