52.网络游戏逆向分析与漏洞攻防-基础数据分析筛选-面对庞大的数据如何找到节奏

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

如果看不懂、不知道现在做的什么,那就跟着做完看效果

内容参考于:如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了

上一个内容:51.角色选择的模拟与截取

之前的数据分析只是开胃小菜,做了很多开发把游戏对接的底层代码都给搞好了,接下来开始进入上战场

首先输入账号登录进游戏,然后选择一个1级的角色进入游戏,如下图,使用 今晚打老虎 这个角色进入游戏

点击进入游戏之前的数据包

仅仅只是点击了进入游戏之后数据包的情况,如小图,可以看到右边的滚动条因为数据很多导致变的很小了

面对这样庞大的数据包,不要慌,无非就是 数据结构约定 或者 数据解析约定 这两种方式,从第一个数据包开始,一个一个搞,首先是找点击进入游戏之后发送的第一个数据包,如下图红框,这个数据包,在上一个内容里,已经分析好了,04开头后面跟着角色名

然后04就略过,看09开头的数据包,如下图,数据包很大,有7156个字节,这个大的字节肯定不会有这样的结构体,所以这种庞大的数据包肯定是结构体数组 或者 数据解析约定的数据 这两种

然后尝试分析,然后使用数据约定的解析方式,发现全部都是字符串,然后09后面的27根据之前的0A数据包得来的经验,可以推测27是数据参数个数,后面的数据都是字符串,也就是说这个09开头的数据包里有27个字符串,然后感觉这些字符串是游戏配置信息

游戏配置信息就是游戏中显示的所有内容,比如血量、衣服、角色模型等这些东西全部都是通过服务端发来配置数据来搞的,如下图红框里的东西,有可能是根据服务端发来的数据进行展示或者数据初始化

然后它的字符串代表数字跟之前解析的对不上,下图中02、01、03、05、07这些数字开头的数据,后面的数据全部都是字符串,然后之前分析的只有06数字开头的才是char类型字符串(单字节字符串),07开头的是宽字节字符串(wchar_t类型字符串),然后现在先不管了,然后现在把这种 02、01、03、05、07开头的数据,称为数据类型代表数,为了后面方便称呼这种代表了数据类型的特殊数字,现在把它们统称 数据类型代表数

部分字符串

接下来再看别的数据包

看下图红框的这个0A开头的数据包

通过初步的分析,发现它里面也都是字符串,但是通过数据解析约定来解读它,它的 数据类型代表数,感觉很乱,完全想不通游戏怎样解读的,然后也就是说光看这个地方,看不出什么结果,它肯定与别的地方有极大的关系,所以现在不看它了,然后下一位

然后看10开头的数据包,如下图红框

然后发现它里面也有字符串

它有可能代表的是装备,因为游戏里东西就是通过这种东西构建出来的,这个数据包可以分两个部分,如下图,变化的部分与不变化的部分

然后再看下一个数据包,12开头的数据包

完全看不懂是什么,完全不知道该怎样拆分,之前积累的东西,在这完全失效了

然后看,11开头的数据包

它的数据里有字符串,可以使用数据解析约定解出来一点,但是很奇怪01是3字节,不知道这个数据怎么解析才正确

然后下一个,13开头的数据包

它也不知道怎么解,直接下一个了

然后是15开头的数据包

不知道是什么,直接下一个

然后是1E开头的数据包

它比较符合之前写的解密约定的

字符串内容

很明显是告诉我们服务器版本号是什么,然后再看另一个1E开头的数据包

解读出来不知道是做什么的

然后再看另一个1E开头的数据包

它的内容

角色最大等级

这个不知道是什么

最大等级60

这个1E开头的数据包与发送的0A开头的数据包很相似,然后再解读一个1E开头的数据包

基本都是一些数字

字符串翻译不知道代表什么意思

数字翻译,一个是3000一个是3290

然后另一个1E开头的数据包

结果是也不知道代表的什么意思,然后下一个数据包

然后是0B开头的数据包

然后这时发现,00 B2 47 00 01 76 40 E7 02这个数据好多数据包都有,如下图红框

拆分0B开头的数据包数据

都是字符串,下图翻译的内容

后面两个不知道是什么了,然后0B开头的数据包就先不管了,然后看下一个数据包

下一个数据包 28开头,它的数据很多

在它里面发现了我们角色的名字

29开头数据包,比较常见,还很大

到这发现47开头的数据包都很大

然后再往上就到了,进入游戏的数据包了,以上是点击进入游戏,数据包的情况与初步分析

然后再往上翻可以看到相似坐标的数据,下图有4个分别是x、y、z、面向

然后通过游戏界面可以确定506.960999是x或者y,由此可以推出7.891873是z也就是高度(正常人都是xyz这样写,肯定不会x面向yz这样写),然后2.758000是面向

然后可以测试一下,现在的面向如下图

然后转一个方向,面向变了,与上方推测的一样

通过转向,看出它的面向的范围是0-6.2几,一个圆有360度,所以它的范围应该是0-6.3

然后到这1E数据包根据之前积累的经验,它是可以正常解读的,所以再解析几个它的数据包

然后回到进入游戏之后数据包附近,如下图,分析登陆之后的1E数据包

也不知道它是代表的什么,energy是能量 well是井 guild是工会 war是战争,通过中文的意思感觉很重要,所以1E要重点分析

然后继续找1E

它们三个的翻译

然后看到有很多18开头的数据包,注意现在的场景是已经进入到游戏中了,并不是点击进入游戏按钮到进入游戏中之间触发的数据包了

它也有字符串,经过这么多的分析,可以看出字符串是一个突破口

Pants中文是裤子,

Hat中文是帽子的意思

18开头的数据包可能是用来更新角色相关的数据的,比如外观,然后18开头的数据包也不好解,只能猜测并不能准确解读,如下图尝试性拆分

然后继续找数据包,发现一个30开头的数据包也好大,它也有47,这个47肯定有说法

然后看到这样的一个东西

操作码是830,数据是04 7C 16 0F E7 EE,这样相似网卡的MAC地址

也正是我的网卡MAC,说明这个游戏会偷偷收集我的网卡信息

然后还有1015的心跳包

然后其它的没什么了

下图红框位置15点27分52秒之前是选择角色进入游戏相关所有的数据包

然后分析这一圈之后,带47开头很大的数据包肯定有猫腻,然后现在找几个关键的内容,确定一个大概

首先通过名字搜索,如下图

搜索今晚打老虎

找出了28开头的数据包

名字

然后在它里面有一个,相似之前分析的头像目录 的东西

也就是下图红框的这个东西,下图详情看 43.角色创建功能的数据包初步分析

这种显示不全的数据,是典型的被压缩了,如果被加密了,会看不出是什么,加密之后会变成另外一个东西,肯定不会像现在这样,显示不全,有的正常显示有的不正常显示,这种有的正常显示有的不正常显示是典型的数据压缩的显示效果

然后这个28号数据是肯定与角色有关的,可能是初始化角色信息的数据包,然后接下来再用生命值去搜索,现在的生命值是1819

然后在28开头的数据包里也找到了

翻译

这也就说明,只要把28开头的数据包解出来,就能得到登录角色的基本信息,然后把血量修改,看看修改血量的数据包

未修改之前

修改之后

搜索1531

找到的数据包,是10开头的数据包,这说明10开头的数据包,是用来更新数据的

翻译

然后下方有两个10开头的数据包,然后通过对比推测,29是血量,23现在还不知道,现在把29、23这种数字称为操作码,操作码的意思,如29它就去操作血量,23它就去操作它对应的东西,现在还不知道23是什么,然后推测攻击、蓝量等数据修改肯定也是这样,只是现在不知道它们的操作码是什么

总结:

首先要解读28开头的数据包,从28开头的数据包里得到角色基本信息,然后28开头的数据包被压缩了,然后从而可以猜测带47开头的数据包全部都是被压缩过的数据,然后想要知道怎样解压就要知道它怎样压缩的,也就是游戏中它肯定引入了比如zip的库或者其它压缩库,接下来就要逆向游戏用的什么压缩库。

然后还有1E开头的数据包,通过上方的分析可以看出,它里面包含了很多重要信息,所以把1E数据包解读出来,肯定会有助于之后的分析


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

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

相关文章

.NET SignalR Redis实时Web应用

环境 Win10 VS2022 .NET8 Docker Redis 前言 什么是 SignalR? ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。 适合 SignalR 的候选项: 需要从服…

二、Maven安装

Maven安装 一、Centos7.9安装1.下载2.安装3.设置国内镜像4.设置maven安装路径 一、Centos7.9安装 1.下载 第一种:官网下载最新版本:http://maven.apache.org/download.cgi第二种:其他版本下载:https://archive.apache.org/dist/…

K-means和逻辑回归

逻辑回归 一个事件的几率是该事件发生的概率/该事件不发生的概率:P/(1-P) 对数几率是:log(P/(1-P)) **考虑对输入x分类的模型:**log(P/(1-P))wx 则 Pexp(wx)/(exp(w*x)…

程序员Java.vue,python前端后端爬虫开发资源分享

bat面试资料 bat面试题汇总 提取码:724z 更多资料

【迅为iMX6Q】开发板 Linux version 6.6.3 SD卡 启动

开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 20.04 【迅为imx6q】开发板, 2G DDR RAM linux-imx 下载 使用 NXP 官方提供的 linux-imx,代码地址为: https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx&#xff…

Github 2024-04-08 开源项目周报Top15

根据Github Trendings的统计,本周(2024-04-08统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目7Jupyter Notebook项目2TypeScript项目2C项目1Shell项目1C++项目1JavaScript项目1Mojo项目1Rust项目1非开发语言项目1编程面试大学:…

LinkedList部分底层源码分析

JDK版本为1.8.0_271&#xff0c;以插入和删除元素为例&#xff0c;LinkedList部分源码如下&#xff1a; //属性&#xff0c;底层结构为双向链表 transient Node<E> first; //记录第一个结点的位置 transient Node<E> last; //记录最后一个结点的尾元素 transient …

vim卡死了,没有反应怎么办?

解决办法&#xff1a; 很有可能是你有个在window下的好习惯&#xff0c;没事儿就ctrl s保存文件。但是在vim里&#xff0c;ctrl s默认是发送一种流控制信号&#xff0c;通常用于停止终端的输出&#xff0c;所以你的屏幕就卡死了。 解决办法也很简单&#xff0c;按下ctrl q即…

XILINX 7系列时钟资源

文章目录 前言一、时钟概要1.1、CC1.2、BUFR、BUFIO、BUFMR1.3、CMT1.4、BUFH1.5、BUFG 二、时钟路由资源三、CMT 前言 本文主要参考xilinx手册ug472 一、时钟概要 7系列FPGA时钟资源主要有CC、BUFR、BUFIO、BUFMR、CMT、BUFG、BUFH和GTE_COMMON 1.1、CC “CC”&#xff0…

STM32 串口接收定长,不定长数据

本文为大家介绍如何使用 串口 接收定长 和 不定长 的数据。 文章目录 前言一、串口接收定长数据1. 函数介绍2.代码实现 二、串口接收不定长数据1.函数介绍2. 代码实现 三&#xff0c;两者回调函数的区别比较四&#xff0c;空闲中断的介绍总结 前言 一、串口接收定长数据 1. 函…

对于所有对象都通用的方法⭐良好习惯总结

对于所有对象都通用的方法⭐良好习惯总结 Object是每个类的父类&#xff0c;它提供一些非final方法&#xff1a;equals、hashCode、clone、toString、finalize... 这些方法在设计上是可以被子类重写的&#xff0c;但是重写前需要遵守相关的规定&#xff0c;否则在使用时就可能…

单片机之蓝牙通信

目录 蓝牙介绍 HC05蓝牙模块 HC05参数 HC05引脚 各个引脚功能 HC05模块的作用 工作模式 配置模式 引脚接线 用AT指令进行配置 常用的AT指令 正常模式 测试步骤 烧录的程序 前言&#xff1a; keil文件 蓝牙介绍 蓝牙&#xff1a;Bluetooth&#xff0c;其是低成…

ARL资产侦察灯塔系统

1、资产侦察灯塔系统搭建 1.1、系统要求 目前暂不支持 Windows&#xff0c;Linux 和 MAC 建议采用 Docker 运行&#xff0c;系统配置最低 2 核 4G。 由于自动资产发现过程中会有大量的的发包&#xff0c;建议采用云服务器可以带来更好的体验 实验环境&#xff1a; 系统&…

玩机进阶教程------手机定制机 定制系统 解除系统安装软件限制的一些步骤解析

定制机 在于各工作室与商家合作定制rom中有一些定制机。限制用户私自安装第三方软件。或者限制解锁 。无法如正常机登陆账号等等。定制机一般用于固定行业或者一些部门。专机专用。例如很多巴枪扫描机型等等。或者一些小牌机型。对于没有官方包的机型首先要导出各个分区来制作…

【Linux】进程间通信 -- 管道

目录 一. 管道1. 匿名管道1.1. 匿名管道的创建命令行创建pipe() 函数创建 1.2 匿名管道的读写规则1.3 匿名管道的特点 2. 命名管道2.1 命名管道的创建命令行创建mkfifo() 函数创建 2.2 命名管道的读写规则和特点 进程间通信 (Inter-Process Communication, 简称 IPC) 是多进程协…

Mongodb入门--头歌实验MongoDB 复制集 分片

一、MongoDB之副本集配置 1.1MongoDB主从复制 主从复制是MongoDB最早使用的复制方式&#xff0c; 该复制方式易于配置&#xff0c;并且可以支持任意数量的从节点服务器&#xff0c;与使用单节点模式相比有如下优点&#xff1a; 在从服务器上存储数据副本&#xff0c;提高了数…

【软件工程】UML用例图介绍和实例说明

文章目录 1、什么是用例图2、用例图的作用3、怎么画用例图4、三要素说明5、实例说明 1、什么是用例图 用例图&#xff08;Use Case Diagram&#xff09;是统一建模语言&#xff08;UML&#xff09;的一种图&#xff0c;它主要用于描述系统的功能和用户&#xff08;参与者&…

【C++学习】C++智能指针:提高代码安全与性能的利器

文章标题 智能指针的提出智能指针概念及使用RAII 智能指针的原理C库多种智能指针详解版本一&#xff1a;std::auto_ptr&#xff08;C98&#xff09;1. std::auto_ptr 使用2. std::auto_ptr 原理3. std::auto_ptr 模拟实现 版本二&#xff1a;unique_ptr (C11)1. unique_ptr 的使…

数码相框-显示JPG图片

LCD控制器会将LCD上的屏幕数据映射在相应的显存位置上。 通过libjpeg把jpg图片解压出来RGB原始数据。 libjpeg是使用c语言实现的读写jpeg文件的库。 使用libjpeg的应用程序是以"scanline"为单位进行图像处理的。 libjpeg解压图片的步骤&#xff1a; libjpeg的使…

2023年MathorCup数学建模D题航空安全风险分析和飞行技术评估问题解题全过程文档加程序

2023年第十三届MathorCup高校数学建模挑战赛 D题 航空安全风险分析和飞行技术评估问题 原题再现 飞行安全是民航运输业赖以生存和发展的基础。随着我国民航业的快速发展&#xff0c;针对飞行安全问题的研究显得越来越重要。2022 年 3 月 21 日&#xff0c;“3.21”空难的发生…