初识网络游戏防作弊

来自维基百科,认为整理得较乱:

作弊类型:

1. 使用僵尸程序:kickbots:原来用于将作弊用户强迫下线,如今被滥用到强迫合法用户下线

                         spinbots:类似加速器,使得使用者的人物行为异常无法被攻击

2. 人为延时或者故意下线:

通过物理切断对手网络或者使用拥塞产生程序(likeVE这种可以设置网络延时以及拥塞程度的软件),人为延时使得攻击者比延时者更有游戏主动权。

有些玩家在发觉失败后故意切断网络,防止自己的失败被服务器记录。服务器端可以将掉线记录为失败,或者通过记录为“掉线状态”,在开始比赛前其他玩家可以看到该玩家的掉线率以判断该玩家的诚信度。

3. Extrasensory perception (ESP),翻译过来也就是超能力?

在军事中叫Battlefield Visualization,也就是通过从内存中获取对手所在的位置、状态、动作、生命值,或者从网络封包中解密出这些原本应被隐藏于其他对手的信息。

4. Exploiting the game environment/bugs,不知道怎么翻译好,通常利用游戏漏洞,是种高级的玩法

wallhacking:将游戏文档中的一些参数修改,比如将texture参数改为透明,就像有透视眼一样了

skin-cheating:是玩家的一种伪装吗,将自己的skin颜色改掉,伪装起来让对手认不出来

5. farming and stat-padding, 就像足坛踢假球,大家都懂得

6. fly hack: 也是使用游戏程序漏洞,修改文件或者参数,使得玩家不受游戏限定参数的限制,比如最多能跳多高等,甚至还可以修改到可以飞越游戏中的物理屏障

7. ghosting,也就是开小号

有些游戏用ip来限制小号,比如同一个ip登录的号码进行限制。那么一个人有多个ip怎么办呢?或者他用远程登录工具操作别的小号呢?

8. 更改游戏设置

比如更改鼠标绑定键,使用户操作更迅捷。或者是auto-robot

 

网游作弊的几种实现:

1. 修改游戏软件

修改地图、从内存中修改游戏状态

如果全用二进制文件,代码就该将会困难一些, 但是从二进制到高级语言的恢复软件可能被使用

2. 修改系统软件

比如修改显卡驱动,忽略所有进深,使得所有对象都可以显示在屏幕上。或者更改各种驱动,这很难被发现,因为驱动种类过多且有硬件依赖性

3. 网络封包篡改

对策:通信加密

 

反作弊侦查:

1. client datefile checksum

如果校验通过,则锁定游戏文件夹,过程中不允许任何进程修改之

2. non-standard datafile storage

有些游戏公司为了防止用户修改文件,将用户文件加密存储,使得文件名是不可读的。但考虑到游戏运行效率,很多状态文件的内容时非加密的,通常几G。还有谢谢文件,如显示文件夹文件结构的文件,很小,几M,是机密存储的。作弊者可以破解加密密钥,或者从文件大小或者配置状态文件类型(如jpg,wav等),分析哪些是配置文件,并修改之。

3. Availability versus usability , efficiency versus security

如何保证用户的可用性,以及服务器请求的实时性?

 

 

某篇中国论文上的:

1. 自动机器人 auto-robot

即外挂,使用自动程序练功,并且已经只能到可以根据用户等级选择打怪等级,并且更新快,破坏游戏的公平性。

防治原理:auto-robot无法进行物理动作,比如将鼠标移动到一个特定的坐标上。

方法构思:服务器不定时发放含有随机坐标位置的宝贝鱼怪物,一段时间后检验回传封包中的坐标。

               或者根据玩家特征进行识别,比如玩家的空闲时间分布曲线。比较玩家的不同的空闲时间分布的中位数,相符合则判定是玩家游戏。方案缺点是,存储空闲时间数据消耗存储器资源。

 

2. 辅助性作弊器assistant cheats

比如:加速器(accelerator), 补血器 ( blood enricher?)

方法构思:防治加速器,在位置坐标加入时间戳,随机要求回传坐标,判断速度是否合理

               防治补血器:利用作弊器的物理动作缺失,随机要求回传点击鼠标补血的热键

 

 

 

 

 

你可能感兴趣的:(初识网络游戏防作弊)