RemRain
2016-06-09 09:56:39 +08:00
要防多开的,想必是游戏吧。可以想像,大多数游戏启动后,尝试创建互斥体、通过各种方法检测虚拟机,然后报错退出,都是纯客户端检测,属于古老的防多开技术。实际所有 debugger/cracker 不怕开发者技术硬,就怕开发者脑洞大, LZ 不妨试下这么做:
1. 假装自己很弱:启动时只做很少的检测,比如只检测硬件特征,然后报错退出。这样对付小白足够了,高手则会小看你。
2. 猥琐地收集数据:运行一段时间后,动用你所能想到的所有办法,获取所有特征数据,比如注册表、 MAC 特征、硬盘信息等,加密后待提交。注意一定要隐蔽,可以由计时器、操作系统消息、游戏中不常用的功能等触发,而且不要一次性获取所有数据,每个事件触发时只获取几项,存在不同的地方。
即使是专家, debug 这样的程序也会觉得日了狗了,毕竟,谁能想到先喝两个红瓶、再打开技能窗口居然有 50% 的概率在 23 秒后触发驱动检测呢
3. 分步提交:和收集数据一样,提交这些数据也要猥琐,可以随心跳包、战斗数据等每次提交一部分
4. 服务端策略检测:数据一旦到了服务端,检测手段就很多了,而且随时可变,防不胜防。比如判断运行系统的硬盘空间小于 50G ,且没有 E 盘 F 盘,就是虚拟机;比如同一 IP 连过来好几个帐号,并且每个帐号登录时间差不了几分钟,就认为是多开;又比如有几个帐号总是在固定的几个设备上来回登录,而且总是同时在线,就说明是多开等
5. 多开惩罚:如果服务端检测出多开,就直接把对方踢下线的话,前面的努力都白费了。正确的做法是过一段时间后,进行人品惩罚,比如总是打出很烂的装备、打怪很难暴击、合成装备老失败等。切记不要一检测出来就立即惩罚,防止对方对客户端最近提交的数据包产生怀疑。而且一旦惩罚开始,可以持续进行数个小时,即使改成单开也接着惩罚。
这么一套连击下来,多开者会发现,一旦帐号多开了, RP 会急剧下降,而且根本不是调试或者虚拟机能解决的