7.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-通过逆向分析确定游戏明文接收数据过程

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

上一个内容:通过逆向分析确定游戏明文发送数据过程

上一个内容中得出它是使用的send函数发送的数据包,所以接收数据它指定用的是recv函数接收的数据

然后在跳转recv函数分析时发现跳转到了wsock32.dll里的recv,recv是Windows api,应该是跳进 Ws2_32.dll里才对

微软文档写的recv函数:recv 函数 (winsock2.h) - Win32 apps | Microsoft Learn

通过百度wsock32.dll和ws2_32.dll区别,发现:http://t.csdnimg.cn/U7Dgl

如果上方我百度的东西看不懂,自行百度 wsock32.dll和ws2_32.dll区别 这个关键字找

然后x96dbg按ctrl+g跳转时,可以加模块名,如下图

然后它就断下来了

然后按ctrl+f9,再按f8,来到下图位置,然后下图中call的函数时0Rdinal#16它没有写调用的recv,这个原因是没有fxnet2.dll的符号表,这个符号表是游戏的,我们没法下载,自己备注一下这个函数名也一样

recv函数的返回值是长度,下图中可以看出它返回了800个字节,这说明,不只有一个数据包,一个数据包不可能这么哒

然后它的入参有一个0x800,这个应该是接收数据的内存大小

然后往下滑,看到esp+edi+0x37C,也就是esp+0x37C位置就是接收数据的内存空间,它有800个大小

然后函数头部,进行了压栈B78

然后b78-37c=7FC,7FC+4=800,正好是内存大小

然后往下滑可以看到,现在处于循环中,就是遍历的接收的数据包

然后当数据循环到0xEE位置,就来到了下图函数里,这说明,这个函数是处理一个数据包的函数

然后按f7进入函数,看到下图红框位置的函数是一个俩参数的函数,然后从栈里可以看出它的一个参数满足数据长度条件

现在的数据包我们不知道是什么,所以接下来我们发送一个聊天数据,看看它的数据包结构,然后还由于此处函数干扰很重,就是会频繁断下来,所以要下一个条件断点,发送一个很长的数据,然后用esi>0x50这样的条件,就可以断到我们认识的数据上了

输入条件:然后发现0x50还是干扰很大,我所在的地图有很多npc与怪物,所以搞这个的时候要找一个无人的地方,最终加到0x70(esi>0x70)还有所好转

然后断下来了

然后把下图的位置由原本的4改成9

然后把我名字改了,所以它就是明文数据包所在位置

现在记录关键点0x10617FD7,然后现在查看它与发送数据的位置用的是不是一个连接,接收数据的ebx是0x3687B658

发送数据的位置是0x106180A5,然后它的值也是0x3687B658

所以现在已经清楚知道,游戏在建立网络连接的时候会创建一个结构体一个类,它的指针在网络连接的时候就能够截取到,截取到以后发送数据接收数据就能用得到,然后现在之所以分析的过程很简单是因为要少逆向找功能,要利用封包把功能做起来,尽量往脱机的角度走。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491408.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【嵌入式移植】7、U-Boot源码分析4—链接脚本分析

U-Boot源码分析4—链接脚本分析 1 u-boot-spl.lds1.1 链接脚本的生成1.2 u-boot-spl.lds内容分析1.3 text - 程序代码段1.4 sram其它段定义1.4.1 .rodata只读数据段1.4.2 .data数据段1.4.3 .u_boot_list段 1.5 BSS段1.6 /DISCARD/ 从上一篇文章【嵌入式移植】6、U-Boot源码分析…

Linux字符设备驱动中同类型多设备节点的创建---一个驱动程序支持多个同类型设备

文章目录 前言1 代码解析1.1 驱动层1.2 应用层 2 运行结果总结 前言 本期分享的内容相对比较简单,那就是同时注册多个同类型的字符设备驱动,那么这样我们就可以同时支持多个同类型的设备了!下面来带大家看一下: 1 代码解析 1.1 …

【Flink精讲】Flink性能调优:CPU核数与并行度

常见问题 举个例子 提交任务命令: bin/flink run \ -t yarn-per-job \ -d \ -p 5 \ 指定并行度 -Dyarn.application.queuetest \ 指定 yarn 队列 -Djobmanager.memory.process.size2048mb \ JM2~4G 足够 -Dtaskmanager.memory.process.size4096mb \ 单个 TM2~8G 足…

MySQL知识点总结(五)——锁

MySQL知识点总结(五)——锁 锁分类表锁 & 行锁如何添加表锁?如何添加行锁? 读锁 & 写锁行锁 & 间隙锁(gap lock)& 临键锁(next-key lock) 加锁机制分析可重复读隔离…

OpenAI视频生成Sora技术简析

基本介绍 Sora是春节期间OpenAI发布的产品,主要是通过文字描述生成视频,通过大规模视频数据训练而成的生成模型,当前还没开放试用。官方发布的技术报告:https://openai.com/research/video-generation-models-as-world-simulators…

趣学贝叶斯定理:贝叶斯定理的先验概率、似然和后验概率(1)

在第7章中,我们讨论了如何利用空间推理去推导贝叶斯定理。现在研究如何将贝叶斯定理当作一种概率工具,对不确定性进行逻辑推理。本章将利用贝叶斯定理来计算和量化在给定数据的情况下,信念有多大的可能性为真。为此,需要使用该定理…

019 Spring Boot+Vue 电影院会员管理系统(源代码+数据库+文档)

部分代码地址: https://github.com/XinChennn/xc019-cinema 一、系统介绍 cinema项目是一套电影院会员管理系统,使用前后端分离架构开发包含管理员、会员管理、会员卡管理、电影票、消费记录、数据统计等模块 二、所用技术 后端技术栈: …

【泰山派RK3566】智能语音助手(一)移植Kaldi语音转文字

文章目录 移植过程硬件资源下载测试 移植过程 参考我的这篇博客 【RV1126】移植kaldi实时语音识别 硬件 资源下载 链接:https://pan.baidu.com/s/1x1udT5eNzzQHoPOTCQ182A?pwdlief 提取码:lief –来自百度网盘超级会员V6的分享 下载的文件里面有一个…

全志H713/H618方案:调焦电机(相励磁法步进电机)的驱动原理、适配方法

一、篇头 全志H713平台,作为FHD投影的低成本入门方案,其公板上也配齐了许多投影使用的模组,本文即介绍投影仪调焦所用的步进电机,此模组的驱动原理、配制方法、调试方法。因为条件限制,本文采用的是H618香橙派Z3平台&…

Escalate_Linux(4)-利用SUDO实现提权

利用SUDO实现提权 利用用户的sudo授权获得root的shell cat /etc/passwd cat /etc/sudoers 命令没有权限 echo "cat /etc/sudoers" >/tmp/ls chmod 755 /tmp/ls export PATH/tmp:$PATH /home/user5/script 想办法更改user1的口令 echo echo "user1:xiao…

sql-labs第46关(order by盲注脚本)

一、环境 网上有自己找 二、解释 order by 注入我们看他的true和false来进行注入出来 二、实操 让我们用sort 看看源码 最终我们的id是放到order by后面了 如果我们直接用列去排序 ?sortusername/password username: password: 可以看到顺序是不…

每日五道java面试题之spring篇(六)

目录: 第一题 ApplicationContext通常的实现是什么?第二题 什么是Spring的依赖注入?第三题 依赖注入的基本原则第四题 依赖注入有什么优势?第五题 有哪些不同类型的依赖注入实现方式? 第一题 ApplicationContext通常的…