最近在国内的 CS 圈子在流传一些 5e 可以检测软路由外挂的说法吗,虽然可能说我对一些我不了解的技术进行评价可能会有点不好,可是我不论怎么想,都无法想出能除了“线下抓包”以外的任何可以在线上抓包这种外挂的思路。
首先就是,软路由外挂,他的本质就是将外挂设备部署到网络传输这一步,而且是运行在游戏电脑以外的系统里,而这类外挂只针对游戏的网络封包进行读取,从技术上来说完全不可能检测。
为什么会这样想?首先我建立一个理想的模型来观看:
正常人、不作弊的内网数据包流向应该是这样的:
[游戏电脑] => [路由器] => [光猫] => [运营商的多层路由] => [服务器前置路由] => [游戏服务器]
而开启软路由外挂时,最理想的流向应该是这样的:
[游戏电脑] => [软路由] => [路由器] => [光猫] => [运营商的多层路由] => [服务器前置路由] => [游戏服务器]
好,即使说可以通过扫描内网情况来确定你使用的是软路由,但如果我将这个路由放在真路由后面会怎样?
[游戏电脑] => [路由器] => [软路由] => [光猫] => [运营商的多层路由] => [服务器前置路由] => [游戏服务器]
就按照这个网络传输路径,我实在想不出能有什么技术检测方案可以检测出某个人使用了软路由。
现在网上流行的说法还有如下:
- 解析包延迟
- 流量特征
针对第一点来说,数据包延迟分析可以按异步来做,也就是说,可以把抓包和解析两个流程分开来,抓包的线程只抓包,抓好的包就丢入队列;解析线程只从队列拿数据,有就解析,解析完毕就继续推给下一个队列让其他线程处理信息传输给其他设备等。
这里的特点就是,抓包和解析不需要在同一个线程运行,只要软路由的系统有两个核心就可以做到线程互不干扰,CPU频率高一点甚至做到低于 1 毫秒的处理延迟,再者假设这两步是同步执行(程序的同步是指两个操作在同一个线程内进行)的情况下导致延迟多出了 20 ~ 30 毫秒,你又怎能假设这个延迟一定是软路由解析包导致的呢?游戏本身对数据的解析也导致了延迟的加大,难道运营商中间有什么问题也能被看作软路由吗?
针对第二点来说,更是扯淡,这种外挂就相当于网络攻防的 MITM(中间人攻击),所有流量都可以看作经过了所有正常的网络设备,严格来说只要你的手机拥有两个网卡,都能作为路由器来路由数据。
对于只读操作来说,中间人完全可以做到不修改你的网络数据包,就可以解析出游戏发送了什么,服务器数据回传了什么,严格来说,在整条链路上的网络设备都有能力知晓终端到底发送了什么,要不就是受限于性能,要不就是这个设备压根就不关心。
最近我也是在开发一个可以建立加密通讯的 TCP 通讯库,基于 C# 编写的,我就结合我最近写的项目,还有我编写过一个小游戏的辅助程序的经验,来说一下:
就先假设这个游戏的通讯会走加密流程,那么首先肯定是排除非对称加密的,因为性能损耗太大,在我这台计算机下,主频为 3.4 Ghz 的情况下对 128KB 的数据量加密耗时 24.74 ms,解密耗时 426.36 ms,对于 FPS 这类实时要求高的游戏,肯定是不会使用非对称加密的。
对于常见的加密握手来说,都是通过非对称加密来传递对称加密的密钥,这样才能达到最快的性能,否则光是解密就耗费了很多时间了,这样来加密完全不可能应用的。
总之就是,对于只读外挂真的无法防御,外挂在任何时候都是令人讨厌,只希望在联网对抗的游戏都不会遇见作弊玩家。
用 Cookie 保存: 别名、Email