25.x86游戏实战-理解发包流程

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

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:24.x86游戏实战-血量与封装人物属性

首先有一个概念

游戏它有多个服务器,多个服务器和玩家进行交互

假设有这么多玩家(假设有1万个玩家)

然后假设下图红框圈出来的是我,那我是怎么跟服务器进行联系的?

与服务器联系肯定是通过我电脑的网线发送出去的封包来和服务器进行联系的,比如说打了一个怪物,获得了经验获得了装备这是一个怎样的流程?首先我们的电脑上的游戏会与游戏服务端有一个通信协议,这个通信协议可能是Send,也可能是SendTo,也可能是WSASend,Send、SendTo、WSASend这三种是比较常见的,还有超脱Send、SendTo、WSASend之外的自己改写的,超脱Send、SendTo、WSASend之外的怎么找?这里要知道一件事Send、SendTo、WSASend这三个它们底层都会调用一个WSPSend,所以就算超脱Send、SendTo、WSASend之外自己改写它也得调用WSPSend函数,所以找这种超脱Send、SendTo、WSASend之外的直接在WSPSend函数上打断点然后往上反(OD里的ctrl+f9)就可以找到,下图里的wspsen指的是WSASend,图里写错了

然后一个打怪的流程是怎么和服务端进行通信的?如下图通过鼠标点击打怪和释放技能打怪两个例子,可以看出在调用Send函数之前也会有很多操作,这种函数可以被称为封包函数(发包函数),然后还可以看出这种发包函数是一个公共函数,下图中可以看出走路的时候它会调用发包函数发送数据包,打怪函数也会调用发包函数发送数据包,所以我们在Send函数里打断点往上找的时候会找的加密、加密之前的然后再往上找会进入是鼠标点击打怪的函数还是走路的函数还是释放技能的函数,现在发蒙不要紧,后面实战的时候做几次就好了

然后出除了上图中的发包方式还有一种线程发包,如下图红框,它会有封包函数,封包函数主要做创建可发送的数据包并且把数据包放到一个位置,然后开启一个线程专门去那块内存里取数据包然后发送数据包给服务端

下图红框圈出来的东西里面会涉及网络,涉及网络就说明数据不是我们电脑本地的,而是网络操作,这要分清楚那些是本地的那些是网络的,比如替换人物模型这就是本地操作,替换鼠标显示的样子这样也是本地操作,这种不涉及Send(网络)本地就可以做到的事情就是本地的,需要涉及网络才能做到的就是网络的

上方图里的xlsx文件:打怪发送数据包大概流程.xlsx

链接: https://pan.baidu.com/s/1CxL1vPhKsGxZarjnchsEeA?pwd=49v5

提取码: 49v5

复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v5的分享


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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

视图,存储过程和触发器

目录 视图 创建视图: 视图的使用 查看库中所有的视图 删除视图 视图的作用: 存储过程: 为什么使用存储过程? 什么是存储过程? 存储过程的创建 创建一个最简单的存储过程 使用存储过程 删除存储过程 带参的存储…

智能家居全在手机端进行控制,未来已来!

未来触手可及:智能家居,手机端的全控时代 艾斯视觉的观点是:在不远的将来,家,这个温馨的港湾,将不再只是我们休憩的场所,而是科技与智慧的结晶。想象一下,只需轻触手机屏幕&#xf…

常用的自动化测试工具有哪些?

什么是自动化测试?简单来说,自动化测试就是通过重复执行预定义的动作来执行测试用例的系统来代替人工操作。为了充分利用自动化,必须选择正确的自动化测试工具。 一、自动化测试工具有哪些 1、Selenium WEB自动化测试 Selenium是网页应用中最…

Java给定一些元素随机从中选择一个

文章目录 代码实现java.util.Random类实现随机取数(推荐)java.util.Collections实现(推荐)Java 8 Stream流实现(不推荐) 完整代码参考(含测试数据) 在Java中,要从给定的数据集合中随机选择一个元素,我们很容易想到可以使用 java.…

ARM系列运行异常排查

一、断点指令BKPT BKPT指令产生软件断点中断,可用于程序的调试。它使处理器停止执行正常指令(使处理器中止预取指)而进入相应的调试程序。 BKPT指令的格式为:BKPT 16位的立即数 二、使用BKPT进行软件异常定位 假设异常发生后…

electron 网页TodoList应用打包win桌面软件数据持久化

参考: electron 网页TodoList工具打包成win桌面应用exe https://blog.csdn.net/weixin_42357472/article/details/140648621 electron直接打包exe应用,打开网页上面添加的task在重启后为空,历史没有被保存,需要持久化工具保存之前…

铠侠最新BiCS8 218L NAND键合技术

随着存储技术的不断演进,Hybrid Bonding(混合键合)技术正逐渐成为内存和存储应用领域的重要组成部分。TechInsights最近对KIOXIA/WD BiCS8 218L CBA 1 Tb 3D TLC NAND进行了深入分析,揭示了这项技术如何在提高存储密度、降低功耗和…

在Windows下部署jar包,关闭命令提示符可以后台运行

前言 大多数情况下,都是选用Linux作为服务器部署服务,在Linux中通过以下命令运行 nohup java -jar xxxxx-1.0-SNAPSHOT.jar 但是有时由于其他原因,或本地测试,或云服务器使用Windows server等等,需要在Windows上面运…

[嵌入式Linux]-常见编译框架与软件包组成

嵌入式常见编译框架与软件包组成 1.嵌入式开发准备工作 主芯片资料包括: 主芯片资料 主芯片开发参考手册;主芯片数据手册;主芯片规格书; 硬件参考 主芯片硬件设计参考资料;主芯片配套公板硬件工程; 软件…

学术研讨 | 基于区块链的隐私计算与数据可信流通研讨会顺利召开

近日,由国家区块链技术创新中心组织的“基于区块链的隐私计算与数据可信流通研讨会”顺利召开,会议邀请了来自全国高校和科研院所的相关领域专家,围绕基于区块链与隐私计算技术的应用需求、研究现状、发展趋势、重点研究方向与研究进展等内容…

基于 LlamaIndex 构建自己的 RAG 知识库

创建虚拟环境用于运行 运行 InternLM 的基础环境,命名为 llamaindex conda create -n llamaindex python3.10 查看存在的环境 conda env list 激活刚刚创建的环境 conda activate llamaindex 安装基本库pytorch,torchvision ,torchaudio,pytorch-cuda 并指定通道&…

【React】JSX 实现列表渲染

文章目录 一、基础语法1. 使用 map() 方法2. key 属性的使用 二、常见错误和注意事项1. 忘记使用 key 属性2. key 属性的选择 三、列表渲染的高级用法1. 渲染嵌套列表2. 条件渲染列表项3. 动态生成组件 四、最佳实践 在 React 开发中,列表渲染是一个非常常见的需求。…

Mac装虚拟机占内存吗 Mac用虚拟机装Windows流畅吗

如今,越来越多的Mac用户选择在他们的设备上安装虚拟机来运行不同的操作系统。其中,最常见的是使用虚拟机在Mac上运行Windows。然而,许多人担心在Mac上装虚拟机会占用大量内存,影响电脑系统性能。此外,有些用户还关心在…

Nginx Proxy缓存

Proxy缓存 缓存类型 网页缓存 (公网)CDN数据库缓存 memcache redis网页缓存 nginx-proxy客户端缓存 浏览器缓存 模块 ngx_http_proxy_module 语法 缓存开关 Syntax: proxy_cache zone | off; Default: proxy_cache off; Context: http,…

【JavaEE】Bean的作用域和生命周期

一.Bean的作用域. 1.1 Bean的相关概念. 通过Spring IoC和DI的学习(不清楚的可以看的前面写过的总结,可以快速入门, http://t.csdnimg.cn/K8Xr0),我们知道了Spring是如何帮助我们管理对象的 通过 Controller , Service , Repository , Component , Configuration , Bean 来声明…

开发桌面程序-Electron入门

Electron是什么 来自官网的介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 总…

JL 跳转指令的理解

一般情况下,JU 和 JC 是最常见的跳转指令;但有时会用到JL 指令,JL 说起来更像是一组指令,类似C,C# 语言中的 switch case 语句,但是有个明显的不同,前者的判断条件可以是任意合理数字,后者范围…

C语言 之 理解指针(1)

文章目录 1. 内存和地址2. 指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 指针类型的理解2.2.3 解引用操作符(*) 2.3 指针变量的大小 3. 指针变量类型的意义3.1 指针的解引用3.2 指针-…

【科研】# Taylor Francis 论文 LaTeX template模版 及 Word模版

【科研写论文】系列 文章目录 【科研写论文】系列前言一、Word 模板(附下载网址):二、LaTeX 版本方法1:直接网页端打开(附网址)方法2:直接下载到本地电脑上编辑下载地址说明及注意事项 前言 给…

计算机网络基础:4.HTTP与HTTPS

一、回顾设定 想象你在经营一家繁忙的餐厅,顾客们通过点餐系统(网卡)下单,订单被前台(路由器)接收并分发到各个厨房区域(网络设备)。光猫像是食材供应商,通过高效的物流系…