76.网络游戏逆向分析与漏洞攻防-移动系统分析-分析角色移动产生的数据包

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

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

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

上一个内容:75.伪造服务端更新属性消息欺骗客户端

到现在为止,角色的信息,附近玩家,附近怪物,角色信息的修改,都已经做完了,接下来是角色移动相关的,本次是分析角色移动时产生的数据包,分析完成之后写c++代码,通过C++代码让角色移动、让角色高速移动

上一个内容里,尝试修改了,移动速度,然后发现修改移动速度会被服务器发现(移动之后会跳回移动之前的位置),服务器它怎么发现的?整个移动的过程是在本地,如果在服务器计算这种东西会导致服务器性能变差,就算在服务器计算也肯定不能计算的很准确,所以要么就是设置的速度太快要么它还是有什么检测的方法,上一个内容里发现了一个0A数据包里,也就是发送移动数据的数据包里,它里面有移动速度的数据,接下来要做的是想办法突破这个东西,尝试实现完美的加速

首先抓包

下图红框位置,有0x13和0xF这两个数据包,这两个数据包在没有移动的时候就有,所以它是与移动不相关的数据包,为了方便抓取移动的数据(发送的0xA数据包),要把0x13和0xF给屏蔽掉

屏蔽0x13数据包,0x13的十进制是19,如下图红框,把输出相关的全部取消

屏蔽0xF数据包,0xF的十进制是15,如下图红框,把输出相关的全部取消

未加速时的数据包

移动的时候会先发一个下图样子的数据包15,15是操作码,表示移动,1看这个看不懂,8表示有8个数据,下图所示就是8个小数

当停止移动的时候,会有一个下图样子的数据包,也是15,这次15后面是0,不是1了,这可以猜测1表示移动中,0表示未移动,未移动的数据只有4个,坐标和面向,上图移动的数据包可以看出它里面有移动速度,还有移动的目标位置

接下来修改移动速度

在停止移动的时候,会多出一个1F的数据包

它的值都是浮点数,如下图,分别是三个坐标和一个面向,它应该是起到修正的作用,修正我们的坐标,导致回弹

它与最初的坐标一样

然后通过分析多个移动的数据包

每次当前坐标超过预计移动的位置之后会重新发送一个数据包

如下图第一次移动,发送的数据包,现在是当前-445.359314预计移动到-433.755157

第二次发送的移动数据包当前位置是 -435.553711未达到-433.755157,这可能在走一步就超过了-433.755157,所以发送的是未超过 -433.755157 的那个位置

第三次发送的移动数据包,也都是那样的一个规律,当前坐标和预计移动到的位置坐标

然后接下来看一次跳,跳也会涉及到坐标的更新

原地跳发送的数据包

往前跳第一个数据包,往前走的数据包 15 1 8

往前跳第二个数据包,跳的数据包 15 2 9

然后发现了游戏的一个漏洞,我们修改了移动速度,走完之后会通过1F数据包对我们的坐标进行修正,然后跳跃的时候,并没有因为修改了速度而修正我们的坐标,也就是不可以快走但可以快跳

然后再试一试高空坠落的数据包,由于修改了移动速度会重置我们的坐标,必须要跳很麻烦,所以重新登录了一次让移动速度恢复了正常,所以后面图中移动速度不会是10

首先来到高的地方

然后往下跳,摔掉血了

然后分析这时的数据包,然后看到有两个890的数据包

一个是890 2

一个是890 1,这俩可能是高空坠落掉血的,之后尝试屏蔽它俩,看看是否可以实现高空坠落不掉血

然后高空坠落的数据包是 15 2 9,与跳跃的区别就是下图红框位置,少了4.5,所以这个4.5应该是跳跃的高度,或者往上跳的速度

移动完之后都会有的 15 0 4

然后闪避移动的数据包

闪避移动的数据包是211

然后是1019

然后是15 5889 8

然后还是 15 5889 8,一共有9个15 5889 8,出了坐标相关数据不同,其它都一样

然后第9个15 5889 8之后是一个1021

然后是 15 0 4

总结:到这初步分析就结束了,接下来尝试写C++代码

15 2 9是跳跃或高空坠落

15 1 8是移动

15 0 4是移动完

1F 是修正坐标

211 是闪避移动


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

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

相关文章

kubeadm搭建K8S集群小记

概述 一时兴起,尝试下K8S集群的搭建 步骤 请查看参考链接1 Q&A Q: raw.githubusercontent.com被墙,导致kube-flannel.yml下不来 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlTh…

【第6节课笔记】LagentAgentLego

Lagent 最中间部分的是LLM,即为大语言模型模块,他可以思考planning和调用什么action,再将其转发给动作执行器action executer执行。 支持的工具如下: Arxiv 搜索 Bing 地图 Google 学术搜索 Google 搜索 交互式 IPython 解释器 IP…

wpf 使用DragDrop 类进行拖拽和接收

在WPF(Windows Presentation Foundation)中,DragDrop 类及其 DoDragDrop 方法用于实现拖放(Drag and Drop)功能。拖放是用户界面中常见的交互方式,允许用户通过鼠标(或其他指针设备)…

初识Vue-混入mixins(详解分发 Vue 组件中可复用功能)

目录 一、mixins混入介绍 概念 特点 功能 用法 应用 二、mixins混入语法 1.简单示例 2.选项合并 3.全局混入 4.混入对象选项: 5.注意事项: 三、mixins混入应用实例 1.身份验证逻辑混入 2.表单验证混入 3.全局工具函数混入 四、总结 一、m…

Java集合简介

单列集合 双列集合

PWN入门--栈溢出

PWN入门–栈溢出 栈概要 介于网上各种wp在栈溢出利用脚本方面浅入浅出,深入讲一下栈溢出利用时,地址如何计算,栈中垃圾数据如何填充,函数调用时 参数 在栈中的分布, 栈帧的生成,函数返回值ip在栈中的摆放…

【强化学习】公平性Actor-Critic算法

Bringing Fairness to Actor-Critic Reinforcement Learning for Network Utility Optimization 阅读笔记 Problem FormulationLearning AlgorithmLearning with Multiplicative-Adjusted RewardsSolving Fairness Utility Optimization Evaluations 在网络优化问题中&#xff…

若依前端-APP中使用数据字典

1 在main.js文件中注册有关字典的组件和相关的属性等,如下所示,有添加字典注解的地方 import Vue from vue import App from ./App import wx from weixin-js-sdk import store from ./store // store import plugins from ./plugins // plugins import…

日志traceId追踪

文章目录 背景MDC简介 背景 在定位问题时,我们希望通过grep traceIdxxx *.log快速的过滤出某次请求的所有日志。 MDC简介 SLF4J日志框架提供了一个MDC(Mapped Diagnostic Contexts)工具类, MDC可以帮我们记录追踪日志的功能,它支持 Log4J和…

了解外汇震荡类货币对特征与交易策略

外汇市场是全球最大的金融市场,每天的交易量超过6万亿美元。在这个市场上,货币对之间的价格变动反映了全球经济和政治动态。外汇货币对通常被分为三类:主要货币对、次要货币对和外来货币对。而在交易这些货币对时,市场表现通常分为…

适合小白使用的编译器(c语言和Java编译器专属篇)

本节课主要讲如何安装适合编程小白的编译器 废话不多说,我们现在开始 c/c篇 首先,进入edge浏览器,在搜索框输入visual studio ,找到带我画圈的图标,点击downloads 找到community版(社区版)的下…

BFS Ekoparty 2022 -- Linux Kernel Exploitation Challenge

前言 昨天一个师傅给了我一道 linux kernel pwn 题目,然后我看了感觉非常有意思,题目也不算难(在看了作者的提示下),所以就花时间做了做,在这里简单记录一下。这个题是 BFS Lab 2022 年的一道招聘题&#…

原型模式类图与代码

现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。 采用原型模式(Prototype)来实现上述要求,得到如图 7.25 所示的类图。 原…

go Gin项目实战

Gin项目实战 Gin博客项目-项目架构Gin博客项目-集成gormGin博客项目-集成Bootstrap创建用户表单Gin 博客项目-实现控制器和路由Gin 博客项目-设计静态页面Gin 博客项目-用户注册Gin 博客项目-用户登录Gin 博客项目-集成markdown编辑器Gin 博客项目-创建博客模型和DAOGin 博客项…

FME学习之旅---day26

我们付出一些成本,时间的或者其他,最终总能收获一些什么。 【由于上周,上班状态不是很好,事情多又杂,没有学习的劲头,就短暂的休息了一下下。双休爬山,给自己上了强度,今天才缓过来…

codeforce#938 (div3) 题解

C. Inhabitant of the Deep Sea 数组第一个元素减一下&#xff0c;最后一个元素减一下&#xff0c;一共能减k次&#xff0c;问有多少元素能减到0.细节模拟我是傻逼&#xff0c;有问题建议直接看tc面像tc编程 #include <iostream> #include <string.h> #include &…

品高虚拟化后端存储的发展演进

在品高虚拟化技术不断发展的过程中&#xff0c;虚拟化的后端存储一直是关注的焦点之一。 本文将从最初的文件存储和NFS开始&#xff0c;追溯到集中式存储SAN&#xff0c;然后选择了Ceph的RBD方式&#xff0c;并最终抵达选择支持vhost协议的后端存储的现状&#xff0c;我们将探…

bash: pip: command not found

随笔 不同系统安装pip command 目录 1. 对于 CentOS/RHEL 系统 2. 对于 Debian/Ubuntu 系统 3. 有些 Linux 发行版可能默认使用 python2 4. 如果你已经安装了 python3&#xff0c;可尝试通过 get-pip.py 脚本安装 4.1 首先&#xff0c;下载 get-pip.py 脚本 4.2 在脚…

Android 桌面小组件 AppWidgetProvider

Android 桌面小组件 AppWidgetProvider 简介 小组件就是可以添加到手机桌面的窗口。点击窗口可以进入应用或者进入应用的某一个页面。 widget 组件 如需创建 widget&#xff0c;您需要以下基本组件&#xff1a; AppWidgetProviderInfo 对象 描述 widget 的元数据&#xff0…

一键式手机文件传输,让你生活更便捷!

随着手机功能不断增强&#xff0c;我们经常需要在不同设备之间传输文件&#xff0c;如照片、音乐、视频、文档等。不过&#xff0c;现在有许多应用程序和技术可以帮助我们实现手机文件传输的便捷和快速。本文将介绍2类让手机文件传输一键完成的方法&#xff0c;让你的生活更加便…