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的分享


相关推荐
冲,干,闯40 分钟前
VScode相关问题与解决
c++·ide·vscode
月夕花晨3741 小时前
C++学习笔记(26)
c++·笔记·学习
快快小毛毛1 小时前
CC攻击防御策略要怎么调整?使用游戏盾有效解决
运维·服务器·网络·tcp/ip·游戏·udp
闲人编程1 小时前
Python实现 Socket.IO 的在线游戏场景
开发语言·python·游戏·网络编程·io·socket·异步
Flame_Cyclone1 小时前
FakerInput 键盘鼠标输入封装
c++·windows·win32·fakerinput
嵌入式杂谈2 小时前
人工智能在C/C++中的应用:图像处理与机器学习
c语言·c++·人工智能
攻城狮手搓万物2 小时前
C++函数在库中的地址
开发语言·c++
GIS数据转换器2 小时前
跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例
大数据·数据库·人工智能·游戏·gis·智慧城市
YYDS3142 小时前
C++战列舰小游戏Lv. 1.4版本(半成品)
开发语言·数据库·c++·算法·游戏·游戏程序
hawkol2 小时前
如何打造一款成功的游戏
游戏