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

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

定位获取用户信息函数的思路分析

在这里插入图片描述

当我们点击一个好友的时候,就会调用获取好友信息的函数,然后替换掉上一个好友的信息,显示到右侧。那么我们可以先拿到当前窗口的微信ID,然后对当前窗口的微信ID下内存写入断点,栈回溯分析附近的代码。

我们栈回溯分析call的时候必须满足两个条件,一是参数中必须有当前选中的微信ID,二是必须有上一个联系人的详细信息

定位获取用户信息的函数

记录好友的微信ID

在这里插入图片描述

我们先利用CE记录下几个好友的微信ID,待会测试的时候需要用到

定位当前窗口的微信ID

在这里插入图片描述

首先搜索这个好友的微信ID,然后切换好友,再次搜索

在这里插入图片描述

最后会剩下四个结果
在这里插入图片描述

这里面四个地址,其中三个都是地址差距都不大,是挨着的,像这种相邻的地址几率一般比较小,我们直接选最后一个地址。

在这里插入图片描述

定位获取用户信息的函数

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

在这里插入图片描述

再次选择一个联系人,断点断下,此时删除内存断点

在这里插入图片描述

此时我们选中的好友的详细信息还未出现,我们要在堆栈中找一个参数是选中的微信ID的call,并且参数中没有我们选中的好友的详细信息

在这里插入图片描述

点击K查看调用堆栈,在第三个地址堆栈窗口跟随

在这里插入图片描述

这里将一个微信ID的结构体传入了堆栈,但是这个函数并没有我们想要的东西,我们找到函数的头部开始往下跟,看看是否漏掉了什么

在这里插入图片描述

一直往下单步

在这里插入图片描述

单步到这里发现此时edi保存的是上一个选择的好友信息

在这里插入图片描述

然后eax指向当前选中的微信ID,那么接下来肯定要将当前选择的信息刷新到这个缓冲区里去更新数据。这个地方就非常像获取用户信息的函数了

在这里插入图片描述

第二个call返回了一个句柄,当步过第三个call时,发现缓冲区内的数据被刷新。所以可以猜测想要查询个人信息,必须先拿到这个句柄,然后再用句柄去查询想要的个人信息。也就是说这三个call是连在一起的,写代码调用的时候必须三个call一起调用

这个call再加上上一个获取群成员列表的call,就能拿到所有群成员的详细信息了。

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

列表的call,就能拿到所有群成员的详细信息了。

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

https://github.com/TonyChen56/WeChatRobot

展开阅读全文

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