x32dbg、x64dbg逆向微信发送信息

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、流程分析

  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♪(・ω・)ノ

03-31
### 关于 x32dbg 调试工具的使用教程与下载 x32dbg 是一款专为 32 位应用程序设计的强大调试工具,广泛应用于软件开发、逆向工程以及系统分析等领域。以下是关于其功能特点、下载方式及基本使用的详细介绍。 #### 功能特点 x32dbg 提供了一系列丰富的特性来满足不同用户的调试需求[^2]: - **动态跟踪**:实时监控程序执行过程中的寄存器状态和内存变化。 - **断点设置**:支持硬件断点、软件断点等多种类型的断点配置。 - **反汇编视图**:清晰展示目标程序的机器码及其对应的汇编指令。 - **插件扩展**:允许用户通过加载第三方插件增强工具的功能。 #### 下载方式 官方提供了便捷的资源获取途径,具体如下: - 可访问项目主页 [https://gitcode.com/open-source-toolkit/e1fd7](https://gitcode.com/open-source-toolkit/e1fd7),找到对应版本的压缩包链接进行下载。 - 解压后即可直接运行,无需额外安装步骤[^3]。 #### 基本使用流程 下面介绍如何快速上手 x32dbg: ##### 打开目标进程 可以通过菜单栏选择“File -> Open”打开待调试的应用程序文件;或者附着到已存在的进程中完成初始化操作。 ##### 设置断点 利用鼠标右键点击特定位置,在弹出选项中选取合适的断点类型加以设定。 ##### 查看数据流 借助内置窗口观察变量值的变化情况以及其他相关信息,比如堆栈内容或调用链路等。 ```python # 示例代码片段用于演示简单的 Python 程序行为模拟 def example_function(): a = 5 b = 10 result = a * b return result if __name__ == "__main__": output = example_function() print(f"The multiplication of two numbers is {output}.") ``` 上述脚本可作为练习对象导入至 x32dbg 中进一步探索内部机制运作原理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值