104.网游逆向分析与插件开发-网络通信封包解析-接收数据的初步逆向分析

本文主要是介绍104.网游逆向分析与插件开发-网络通信封包解析-接收数据的初步逆向分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

内容参考于:易道云信息技术研究院VIP课

上一个内容:网络完成端口模型的流程

下图登录了游戏,此时此刻 WSARecv 已经投递

然后打开x96dbg来到WSARecv函数

然后WSARecv的线程id:5BAC

WSASend函数的线程id:主线程 66C0

然后根据上一个内容里的理论,WSARecv是在一个循环里,所以先找到循环,一路CTRL + f9再按f8,最终来到下图位置没反应了,这时因为到了一个循环里,它根本就没结束,返回没地方返

然后往上滑可以看到,完成端口的api,用来查询完全端口,GetQueuedCompletionStatus 函数,现在记录一下地址0x493E49

然后在函数头部下断点也断不下来,因为这个循环已经启动了,不会到头部了

这个时候需要两个账号,一个调试一个用来给调试的账号发消息,制作明文数据,然后首先在WSARecv函数里断下来,一路CTRL + f9再按f8,每按一次 CTRL + f9再按f8,就在上一行代码加上备注,然后网络返回分发函数的位置是在哪,首先在下图打断点

然后在游戏中移动触发断点,然后按f7,然后进去之后找我们的标记,也就是WSARecv这个备注,如果这个备注存在,就说明没到分界点,如果不在了,说明已经找到了分界点,最终在下图位置按f7之后的函数,找不到 标记 了,所以它是分界点,这里记录一下位置0x4813FC

然后发现当eax的值是2的时候,它才会调用WSARecv函数

也就是当eax的值是2的时候,可以来到下图位置,调用WSARecv函数

根据上一个内容中的理论,完成端口处理完数据的时候,会调用WSARecv函数再次注册iocp,所以数据解密就在0x481AE9上方的代码中,所以在0x481AE9上方所有call位置打断点,查看每个函数的入参,查看是否是两个参数,一个大小一个字符串的内存地址,只要入参与大小、内存地址有关就要主要关注,然后iocp的GetQueuedCompletionStatus函数第二个参数是接收的数据长度,这时就要用到另一个账号了,用另一个账号给被调试的账号发消息,查看明文数据在什么函数里得到

最终在下图断点位置(0x48194C)看到了入参是明文数据的

0xC3B3C0函数会被调用多次,上图中可以看出,明文数据前面还有一些我们不认识的数据,它会处理这些东西,然后把数据给它修改一下,原本是31,现在改成32

游戏中也改变了

然后下图是发送消息的账号,它的数据是1234567890,经过修改内存,在接收的账号那边变成了2234567890

所以找到了接收数据的明文数据,这里就是上一个内容中解密之后,WSARecv之前的环节里

这篇关于104.网游逆向分析与插件开发-网络通信封包解析-接收数据的初步逆向分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722666

相关文章

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件