x32dbg、x64dbg逆向微信发送信息

本文详细介绍了通过逆向工程技术分析微chat程序的过程,包括利用x32dbg设置断点,寻找tcp、udp协议的相关API,分析输入文字的传递路径,最终定位到可能的发送消息函数。通过堆栈寄存器中的线索,发现了newsendmsg函数,但因hook技术限制未能进一步验证其准确性。这是一个逆向工程初学者的学习记录。
摘要由CSDN通过智能技术生成

一、流程分析

  1. 进行逆向之前,先分析一下微chat程序,构思一下整体思路。

PC端微chat使用的协议我们可以通过对每种协议相关的API设置断点来确定是哪个协议。一般PC端客户端程序的通信协议常用的是tcp和udp。

关于tcp,udp的API:

协议函数
tcpsend
udpsendto

因此我们可以通过断点send,来寻找我们需要的发送消息事件。

  1. 打开Exeinfo PE分析一下WeChat.exe(桌面的是.lnk文件,为快捷方式,可能找不到,因此我们右键-打开文件所在位置,找到该位置的WeChat.exe分析),如下图所示,分析得出是32位的程序(可能有的系统安装的是64位的程序),再一看是c++写的。未发现加壳。

二、输入文字逆向

首先我们打开x32dbg,然后导入WeChat.exe,F9运行到程序跑起来,打开到聊天窗口(在此,以文件传输助手为例),如下图所示:

在这里插入图片描述

然后我们往聊天窗口里写入文字,在x32dbg下send断点、然后观察堆栈窗口,观察有无我们输入的文字信息。

观察很久,未发现有我们输入的文字信息,于是判断为采取异步方式,于是分析send函数:

int send(
  SOCKET s,
  const char FAR* buf,
  int len,
  int flags
);

这里buf是存储我们输入的信息,我们在send处断下点,返回上一层,buf是第二个参数,找到如图所示call

在这里插入图片描述

双击进,如图所示,F4将光标运行到此,然后在内存窗口下硬件断点,F9运行
在这里插入图片描述

接下来,在下图所示处断下,F4将光标移动到此,分析许久无果

在这里插入图片描述

于是在堆栈寄存器中发现下图所示东西,分析名称newsendmsg,应该是new send message 的缩写,于是在wechatwein.dll即当前模块下寻找newsendmsg字符串

在这里插入图片描述

搜索结果如下,然后删除其他断点,双击此处字符串,下断点

在这里插入图片描述

F9运行起来,重新发送数据,然后发现程序断下了,在堆栈中往下即找到我们输入的信息。

在这里插入图片描述

在这里插入图片描述

三、发送API逆向

然后我们在上述的堆栈寄存器里找到我们输入的内容(最后一个内容),他的上方有个返回上一层,单击它,回车过去,如下图所示:

在这里插入图片描述

上图框选处是我第二次发送后显示出来的,我备注了一下,大致分析此处为发送信息的函数。
记录一下:
weChatwin 基址为:5C370000
函数动态地址为:5C47CA65
故偏移值为:0x10CA65
剩下的就需要采用hook技术验证是否正确了,由于博主为逆向入门,hook技术没到位,也暂时无法验证此函数是否就是我们需要的API,因此,本篇博客到此结束。

记录学习历程,码字不易,还请给个支持,点个赞,谢啦
Thanks♪(・ω・)ノ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值