65.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-根据解析好的角色数据还原对应数据结构

本文主要是介绍65.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-根据解析好的角色数据还原对应数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

上一个内容:64.解析角色初始化数据包输出角色数据内容

通过上一个内容把关键的28数据包解析出来了,然后上一个内容解析出来的数据是前面跟着一个英文的文本后面跟着对应的数据,但是实际用的时候肯定不会要这个英文文本的,所以接下来创建一个角色的类,这个类用来代表角色、玩家,然后根据上一个内容里解析出来的数据对类进行填充,如果将来角色信息有数据更新了,把更新的操作对接到这个类上,然后再更新这个角色类,正常来说是这样的一个玩法,之前分析的应该是接收的10数据包是修改数据,所以28数据包对接到初始化创建类,10数据包对接到修改类,本次就是要把角色类这个数据结构给写出来

解析之后的28数据包,但下方的东西不是完整的,但也可以看出它包含了人物所有信息了

id:324923858031232259
x:-450.867004 h:9.444011 y:868.926025
Name = 今晚打老虎  // 名字
VisualRange = 50.000000 // 视野,VisualRange中文意思是Visual视野Range范围,连起来就是视野范围
Type = 2
Sex = 1
Photo = gui\BG_team\TeamRole\Teamrole_zq_humF_001.PNG
Camp = 1 // 营地,在游戏里应该是种族的意思
Race = 1 // Race中文意思是比赛,不知道是什么
Job = 1 // Job是工作的意思,在游戏里应该是职业
Level = 3 // 等级,之前打了几个怪升了两级,所以3是正确的
CurArea = 10400000
SceneTriggerConfig = kewerj01
SkillEnergyList = 0:1;2:1;6:1
EnergyUpgradeNum = 100
IsHunterTreasure = 1
AdjustOrient = 1
MPUpSpeed = 5
MaxHPAdd = 1548 // 这个应该是装备给的血量
MaxMPAdd = 91 // 这个应该是装备给的蓝量
HPRatio = 100
MPRatio = 100
MaxHP = 458 // 没有装备时的血量
MaxMP = 121 // 没有装备时的蓝量
HP = 2006 // 当前血量
MP = 212 // 当前蓝量
FightPower = 3420 // 战力
AV = 100
EY = 100
DP = 100
AVRatio = 100
EYRatio = 66
DPRatio = 100
MaxRC = 100
MaxAV = 100
MaxEY = 151
MaxFS = 100
MaxDP = 100
Gravity = 9.800000 // 重力的意思,把这个值改大应该可以跳的更高
JumpSpeed = 4.500000 // 跳的速度,把这个值改大应该可以提高跳完成的速度
MoveSpeed = 5.000000 // 移动速度,把这个值改大应该可以提高移动速度
WalkSpeed = 1.500000 // 行走速度,把这个值改大应该可以提高行走速度
RunSpeed = 5.000000 // 运行速度,不知道什么意思,应该是控制游戏整体的速度吧
DropHeightPub = 10.000000 // 落差高度杆不知什么意思
ArtKey = 101011
Face = 21031 // 脸
Eyes = 21039 // 眼睛
TattooColor = 16777215 // 纹身颜色
SkinMtl = 22131 // 皮肤
HairColor = 22132 // 头发的颜色
SkinColor = 22140 // 皮肤的颜色
Hat = 122011 // 帽子
Cloth = 112011 // 布
Pants = 132011 // 裤子
Shoes = 142011 // 鞋子
Gloves = 152011 // 手套
Tattoo = 296018 // 纹身
RWeapon = 289041 // Weapon中文是武器的意思,R应该是英文右的缩写,所以应该是右手武器
RWeaponID = TY_Sword_0001 // 右手武器id
ChangePKModule = 1 // 更改PK模块
PKProtected = -1 // PK的保护,修改它的值应该可以不回被PK
ChallengeState = 1 // 挑战状态
GuardSkill = 1111
BufferListStr = Buff_Ch1685_01_1,0111-001-1711377995-8499,1,16794883-75652231,-1,0,0|
UnderWaterSpeed = -8.000000 // 水下航速,应该是在水下的速度
CurUnderWaterValue = 88.000000 // 水下值
TransJobList = 21,22,23
CantTransJob = 1,1;1,1;1,1
TransConditionId = 151;151;151
CurInsPoint = 2
Force = 1 // 力
SafeTime = 180
SafeModeEquipLv = 2
SafeModeEquipStar = 2
SafeModeEquipStr = 1,1,1,1,1,1,1,1,1,1,1,1
SafeModeJewelStr = 1,1,1,1,1,1,1,1,1,1,1,1
LastOffLineTime = 45406.905556 // 上次离线时间
LastAddress = 120.225.22.88 // 上次的ip地址
CloneScoreTopRefreshTime = 13358275737151 // 中文意思是克隆得分最高刷新时间,不知道在游戏中是什么
CloneWeekLimitCount = 7
CloneWeekLimitCountMax = 7
ArenaID = -1 // 竞技场id
ArenaSinglePoints = 1000 // 中文意思是竞技场单点,不知道在游戏中什么意思
RelivePositon = 1,-514.361023,21.870001,847.015991,2.632000 // 重新起动位置,应该是复活点的位置吧
ReliveLocalFirst = 1 // 
RelivePerfectFirst = 1
ReliveCityFirst = 1
ReliveNoNearPos = 1
PlayerExp = 182 // 玩家经验值
PlayerUpgradeExp = 375 // 玩家升级经验
RankLevel = 1
UpgradeHonor = 850
CanAddHonorPoint = 1000
Physical = 89
MaxPhysical = 89
DayMaxGainGold = 100000000
AutoQuestFlag = 1
EveRecLevel = 3
OnlineTime = 25/20/31/33 // 中文意思是上线时间,但是这个值很奇怪,很明显不是时间

然后使用 Cheat Engine 看看游戏是怎样表示这个数据结构的,然后看到这个游戏用的非主流技术(Cheat Engine中的两个地址数据结构都一样),看着像直接把28数据包带着英文一起拼接起来的,它这种的游戏中肯定会有一个系统性的方法,就是给它一个HP就能返回HP的值,逆向的时候找到这个函数,可以直接用,游戏用的这种数据结构就会导致用面向对象的思想去逆向会找不到角色相关的数据,但是有了上方分析的表,在看这个结构会清楚它的一个套路

通过上方解析28的套路成功找出,血量地址,如下图

然后下一个内容,使用C++通过,09数据包带来的数据类型,生成角色信息类


这篇关于65.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-根据解析好的角色数据还原对应数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig