99.网游逆向分析与插件开发-网络通信封包解析-数据包组织与发送过程逆向分析

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

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

上一个内容:定位明文发送数据的关键函数

首先来到下图位置,查看edi的值是怎样来的

然后使用高亮模式查看edi,看看谁给edi赋过值

首先是下图红框位置,mov ecx, edi也就是edi是一个类,这个类调用了它的成员函数,这个操作是可以修改edi的值的,所以需要记录一下0x914C1C

然后还有下图红框位置,0x914B96

然后下图红框位置,0x914B37

第一次修改edi,这个数据看不懂

第二个修改edi,这个数据相似,创建了一个数据包头,或者说一个空的数据包

它的参数是 7025 和 0,

移动时也会触发,它的参数是 7021 和 0,这个7021相似操作类型

在调用了下图红框位置的函数之后,我们聊天框输入的数据,写入了上方创建好的空数据包里

然后通过下图断点位置的函数,完成了明文数据组装过程,它的参数是,一个局部变量的控件 和 数据的长度

执行完它的数据,我们的消息数据写入到了,变量里

然后继续往下看,在调用第一次修改edi值的函数时,它的参数是刚刚的局部变量,和数据长度

这时的edi,还是一个空的数据包

执行完函数,消息数据写入到数据包,这里记录数据组装关键点,

如果分析要说话的数据,只要 HOOK 0x914C1E位置调用的0x47F550函数,在0x47F550函数里可以看出数据包结构很大

还有需要看一下数据包是否存在内存泄露问题:下图红框位置pop edi,很明显没有内存泄露问题,不需要管

总结:

三个重要的函数:第一个获取一个空数据包函数(0x914B8D位置调用的0x12A3AB0+0x24函数),第二个是我们要发送的数据组装到数据包的函数(0x914C1E位置调用的0x47F550函数),第三个是发送数据包函数(0x914C2F位置调用的0x12A3AB0+2C)

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



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

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组