目前外挂加速的原理(个人推测):加快app响应频率,例如一秒才响应一次的,调整到一秒响应多次,从而加速游戏速度(当然减速也是相同原因)。 观察经过:通过观察时间差(deltaTime),发现当外挂调整游戏的时钟频率,时间差也会相应的进行改变,如果只是设置cocos2dx引擎的scaleTime是不会改变这个时钟频率,所以解决方案锁定在检测这个时间差来判断是否使用了外挂进行加速或减速。 预防:把检查api放到需要的位置,例如游戏登录后通过定时器执行,或者开始战斗后的每帧逻辑里,通过cocos2dx的导演类获得当前deltaTime判断是否在合理范围内(例如,我目前项目正常速度下,时间差为0.033左右),我这里设置的合理范围是0.032至0.034,如果超出合理范围则记录当前的时间,与下一次的记录时间作比较,当连续记录时间超过自设时间(我设置了2秒),则认为是使用了外挂,最后执行自己想要进行的逻辑(我这里设置了跳到登录界面,并弹窗提示玩家使用了外挂),如果没有连续记录,则让记录清零,防止因短暂的频率波动导致误判。 以下是具体代码: function Util:checkCheat() local deltaTime = cc.Director:getInstance():getDeltaTime() if deltaTime > 0.034 or deltaTime < 0.032 then self:logTime() else self.dtTime = 0