页游变速齿轮作弊的前端处理(转)
变速齿轮这样的作弊软件已经不是什么新鲜的玩意了,但是它们的出现缺验证的破坏掉游戏的运营与维护。
下面来说说怎么在前端中将这样的一款毒瘤给摘除掉。
首先看看变速齿轮这类软件的工作原理:
变速齿轮工作的原理是通过修改API函数GETTICKCOUNT和TIMEGETTIME骗过了游戏和程序的定时器导致游戏和程序速度看起来被改变。
咋一看,貌似十分不好处理,因为经过变速齿轮加速后,播放器的运算时间也被修改了,其表现就是通过调用gettimer的方式获得的时间已经跟实际时间不同了。
怎么去防止此类操作呢?其实突破点也不难找,虽然通过修改API函数GETTICKCOUNT和TIMEGETTIME骗过了游戏和程序的定时器导致游戏和程序速度看起来被改变后的游戏运行时间已经不可信任,但是系统时间却还是准确的。我们只要通过获取系统时间的间隔差值与通过gettimer()得到的时间间隔差值比较一下就可以知道玩家当前时候通过变速齿轮在作弊了。当然为了更加准确,这里还进行了一个连续处罚次数来保证期判断的准确性。
下边是具体的检测代码实现。
private static var cheatNum:int
private static var cheatTime:int
private static var timerNum:int;
public static function checkCheat():void
{
var date:Date=new Date
var durValue:int=date.time-cheatTime
var timerdurValue:int=getTimer()-timerNum
if(timerdurValue-durValue>10)
{
cheatNum++
if(cheatNum>5)
{
tarce(“检测到异常操作”)
}
}else {
cheatNum=0
}
timerNum=getTimer()
cheatTime=date.time
}