PC微信逆向:分析@群成员call
文章目录[*]发送消息函数的分析
[*]定位组装的数据格式
[*]追踪ebx+0x14
[*]追踪esi+0x4
[*]追踪eax
[*]追踪ebp-0x24
[*]分析组装数据的call
[*]测试组装数据的call是否有效
接上一篇文章,PCXX逆向:发送与接收消息的分析与代码实现:https://blog.csdn.net/qq_38474570/article/details/93339861发送消息函数的分析 首先定位到发送消息的call
接着发送一条艾特消息让程序断下
普通消息和艾特消息的区别就在于eax结构体的区别,所以我们查看一下eax的值
此时eax指向一个结构体,我们数据窗口跟随看看第一个地址里面保存的是什么
里面保存的是被艾特人的微信ID
然后再查看一下ebx消息文本的指针,格式必须是@微信昵称 文本内容
定位组装的数据格式 想要调用微信发送艾特人消息的关键就在于如何组装这样一个数据格式,
这两个地址的内容对于我们来说都是未知的,所以我们要找到组装这个数据格式的call,然后我们直接调用call拿到这个数据格式,再发送艾特消息
追踪ebx+0x14 从这里可以得出eax来自于,接下来我们要找来自于哪里
我们直接拉到函数头部下断点,发送一条艾特消息让程序断下
查看的内容,发现里面为空,接着我们单步,看这个地方是在哪里被赋值
单步到这里我们发现这一句将的值赋值给了ebx,也就是说的位置会被赋值到,我们查看的值,发现就是我们要组装的数据结构。所以,现在我们要查找的值来自于哪里。
追踪esi+0x4 我们再次定位到函数头部,发消息让程序断下
当单步过mov esi,dword ptr ds:时,esi+0x14+0x4被赋值为我们追踪的数据结构
此时我们将esi替换为,查看+0x14+0x4的内容,就是我们需要的数据结构
此时我们查看eax寄存器,指向了一个地址 这个地址偏移0x18的地方就是我们要找的数据结构,所以我们现在就要追溯eax来自于哪里
追踪eax eax来自于这个函数的参数,所以我们定位到函数头,找到返回地址,反汇编窗口跟随,在返回地址前面一个call下断点
这里我们发现eax来自于ebp-0x24,所以可以将eax换成ebp-0x24,我们查看一下+0x14+0x4的内容
就是我们在找的数据结构,继续往上追,在这个函数的头部下断点,我们要追溯的内容来自于哪里?
追踪ebp-0x24 当我们步过这个call的时候发现ebp-0x24]+0x14+0x4被赋值为这个结构体,说明这个call非常关键,有可能就是用来组装数据的call
分析组装数据的call 这个call将eax当作参数传入了堆栈,而eax现在是个空白的缓冲区,我们F7单步跟进去
这里发现了一个call,传入了一个空白的缓冲区
还有艾特消息的文本格式,F8步过这个call
此时缓冲区内存放了我们需要的数据,说明这个就是我们需要的组装数据格式的call
测试组装数据的call是否有效
[*]另找一块缓冲区,替换掉组装数据的call写数据的缓冲区
[*]发一条普通的文本消息,然后替换eax的值为缓冲区的地址 看是否会发出艾特消息
[*]将文本内容改成艾特的结构->@微信昵称 文本内容
目前微信机器人的成品已经发布,需要代码请移步Github。还请亲们帮忙点个star
https://github.com/TonyChen56/WeChatRobot
页:
[1]