游戏工作室

辅助作者从程序方面谈 游戏防封反检测那点事

游戏工作室 2015-09-04

作为一个小小小程序员的我,书读的少,技术也渣渣,只能谈谈程序方面的反封号检测技术,(一直打算给老A写点东西,但是一直没什么心情,这也算完成一项任务吧。好不好的没办法了,水平有限!忘看官不要动怒,喷我,可以指教、纠正!)剩下的常规理论游戏防封技巧,你们这些职业玩家要比我懂的更多!

一,游戏辅助作者使用的编程语言是否有固定特征,比如“某某精灵”你代码写的再好,但是它是低级语言,生成EXE的时候还自带加密壳,前期因为是低级语言没办法 进行程序结构属性相关更改,后期又加壳了,更不容易更改属性了。不管你代码 如何写,直接检测进程,读取程序相关属性,立即被检测到,还百分之百准确。

二,我记得以前有位内存老手准备用我的网络验证系统,他刚巧也是和我做一个网络游戏,所以他打了个电话给我,我们聊了会,通话中得知他搞的是内存,我就问了下,这个网络游戏抓的这么严,内存好像容易死吧,他回答说:内存偏移地址那么多为什么要和别人用一样的呢,他说他的一直安全在,是否真安全,这个不得而知,但是要明白一点,走出自己的路是多么重要,内存我没怎么涉及学习和研究,所以我说不了什么道理。

那么我就说说模拟这块,代码怎么决定了安全性:

1,比如鼠标移动到坐标X10 Y10(X=横 Y=纵)去点击一个东西,百分之99.9的作者都会直接这样写出来了,请问你正常人能每次点击一个东西的时候,每次都在同个像素点上面吗,那是完全不可能的,像素不放大正常情况就一个针尖大小。那么我们应该这样写,鼠标移动到[ X=取随机(5,15),Y=取随机数(5,15)](具体数字范围根据东西大小来调整)这样每次点击就不会再相同坐标了。

2,有的作者鼠标点击一个东西,之后鼠标移动到傍边来识别下这个地方图片可改变了。也不要这样做,点击后就不要把鼠标移走去识别,这个东西总有剩余地方能做识别对比判断的。正常玩家点击一个东西,不可能点击后需要把鼠标移动走,查看是否点击成功。这都是举了几个常见问题,更多的大概都是基本相同的道理,必须思考琢磨才能写出来好的东西,而不是写的代码能达到功能就OK了,这些就是防止有行为检测的网络游戏。

三,前面说到的是外皮和大脑,现在说下手脚的事。你模拟鼠标键盘动作都是程序通过调用系统里的DLL来达到目的,那么有的网络游戏就会时时检测这个DLL,有的直接HOOK掉函数地址,这就是有的网络游戏作者模拟键鼠却发现没用。我们其实可以用硬件模拟设备来解决这个问题,程序直接通过电脑串口和硬件设备通信,硬件再发送协议给电脑,协议和通常大家用的键盘鼠标协议是一样的,不然电脑不会做出反应。真实鼠标键盘操作电脑也是用的单片机,这个也是单片机做的。这样就不需要调用系统DLL键鼠相关函数了。到2015年我用硬件已经三年了,也自己开发出来硬件设备,因为繁琐麻烦,销售实物售后太麻烦,利润还不大,所以开发出来了,卖过几个,就不做了。买现成的用就是,^_^。

四,现在说说网络游戏官方拿到你程序,并锁定了相关特征。取什么特征那是他们的事,可以取程序内部特征码,也可以直接取程序MD5都可以,或者更多。我们怎么让网络游戏客户端分析不了呢。可以对进程进行保护,无非就是隐藏啊、保护啊、注入系统做外衣来隐藏自身啊,等等。反正大概就是这些。

五,问题来了,拿到你程序发现有保护,那么会针对性寻找程序别的特征(文件释放,配置文件等),或过了你的保护,你过他保护,他也能过你的保护撒。那么就死的更惨了哦。所以可以启动几十分钟后再开启保护嘛。他分析到了特征,以为OK了,也不会管你了,谁知道有保护,有了特征码但是后期并不能分析你的程序。检测系统不可能时时开启的,那样服务器和客户端压力都会很大,时时卡的要死的网络游戏谁玩。一般都是一天某时间段,一个星期某天的时间段。(这是按常理猜出来的,不一定完全正确。但是只要有可能,就要想到嘛^_^)

六,上面说的拿程序去分析锁定特征码,这也是为什么有的程序刚刚开始还安全,之后做大了,或搞到市场了,就死了。所以最后一点就是,想长久稳定,请放弃暴力,做真正的内部,积少成多。(不过一般作者都不会放弃眼前暴力的) 说了那么多,其实就是想说,想到问题,才能解决问题。不怕不安全,就怕你不知道哪里导致的不安全。

小结:游戏辅助作者以上几点全部都做到,做好,就差不多能很安全了哦。这都是我从实战中得到的真实东西。还是那句,游戏防封技术是件矛与盾的事,想做到真正安全防封号,那就一直走在这个行业的前面,而不是跟随大家去做什么。(这句话其实也适用于人生哈^_^) 没有固定的方案,固定了就会淘汰,就会被钉死。就等于无方案。

总结:以上权当和我和同行们喝茶聊天般的交流,于职业玩家随便聊聊。直接说职业玩家自己就能完成的方法,我真没有,像刚刚开始的那句:剩下的你们这些职业依靠游戏赚钱玩家要比我懂的更多!但是总归来说,安全还是取决于程序作者,很少部分在于用的人,前者不解决,后者做什么意义都不大。