首页 > 解决方案 > 客户端服务器游戏包注入

问题描述

在开发我的在线游戏时,我正在尝试更多地了解安全性。

拦截从服务器发送的数据包,使用某些软件对其进行修改并将数据发送回服务器是否有可能以及有多困难?

这是一个场景:

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

有没有可能说玩家进入了与 1 个敌人的战斗,但向服务器发送了一个数据包,说玩家赢得了与 20 个敌人的战斗?(假设服务器没有实现保护自己免受这种情况的影响)

标签: securityserverclientpacketpacket-sniffers

解决方案


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

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

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

一次战胜 20 人的情况还取决于服务器端如何处理游戏(例如,它是否一次接受每个用户多个游戏?)


推荐阅读