客户端服务器游戏包注入

Client server game packet injection

我在开发我的在线游戏时试图了解更多关于安全性的知识。

是否可以拦截服务器发送的数据包,使用一些软件对其进行修改并将数据发送回服务器?

这是一个场景:

玩家与 AI 敌人进行战斗。一名玩家输掉了战斗,在战斗结束时,数据包被发送回发生了什么的服务器。是否可以在发送之前修改此数据包并告诉服务器玩家已赢得战斗?如何读取和修改这些数据?

是否可以说玩家进入了与 1 个敌人的战斗,但向服务器发送了一个数据包说玩家赢得了与 20 个敌人的战斗? (假设服务器没有实现自我保护)

考虑到你的场景,如果你假设客户端和服务器之间的数据包是加密的,那么攻击发生的可能性相当低(当然这取决于使用的加密)。

但是让我们考虑未加密的数据包,中间人攻击是可能的并且不难执行。这将要求攻击者能够理解您发送的数据包:例如,如果您在某处有一个 'win/lose' 位并且攻击者知道它的确切位置,那么他可以制作一个不同的数据包(查看 scapy 模块 python 如果你正在制作数据包)。

有拦截数据包的工具,最常见的是Wireshark。例如,Scapy 模块允许您嗅探数据包并同时发送数据包,从而使这种情况变得容易。

同时赢得 20 人的场景还取决于服务器端如何处理游戏(例如,它是否一次接受每个用户超过一个游戏?)