首页 > 代码库 > 网页游戏防外挂策略。
网页游戏防外挂策略。
目前市面上的外挂主要就三种模式:1、按键模拟挂。2、按键封包结合。3、全脱。
一:针对按键模拟的。
1、一般按键模拟的辅助都是先通过找网页中的窗口句柄,来给其发送按键信息什么的。
对应解决方法:在插入flash的embed或object标签中加入”wmode”属性并设置为wmode=“transparent”或”opaque”,
这样在查找flash中时,会找不到flash的窗口句柄。
2、按键一般都是通过找图,文字来实现接下来需要做什么。
对应解决方法:在设计游戏时,图片可加些动态效果。
3、做游戏时,尽量不要做成那种无脑流的,尤其是对话框,最好是需要玩家自己去点击,而不是自动弹出对话框。
4、做按键的还是有一些高手的,可以在一台电脑上多开很多个游戏(会做内存优化),这样打怪打金效率就高了。
对应解决方法:设置flash防多开。(网上有教程,不多说)
(不过对于按键研究的不多。上面那些说的也许只是片面的。)
二:按键封包结合。
1、一般为了快捷什么的。这类辅助都会通过封包买药,卖装备什么的。
对应的解决方法:在游戏中加入动态 验证系统。并对封包信息进行加密。
(如斩仙,他虽然对自己的封包进行4个字节的加密,但是他的加密是固定的,说白了就是用他自己的crc16来进行加密。其实可以通过异或倒推出他的key,这样他的加密也就没意义了。同样的斩龙传奇,他用的跟斩仙是同一个加密系统,但是他多了个动态验证,相对于斩仙要做按键结合封包的游戏就会很麻烦。因为即使你倒推出key,还涉及一个动态验证系统,你随意发包,可以让他掉线。)
2、对于上述防半封包的方法呢,也有一种对策,就是劫持他的发包,对游戏的发包进行处理,然后再发送出去。
应对方法:对于这种的话,好的技术防范基本没有。不过游戏开发者可以在封包里下暗桩。这类辅助作者一般不会去研究他所有的发包的,可以在游戏里下个暗桩,来判断用于是否劫持了发包。
三、全脱;
脱机的流程一般是先通过http获得游戏登录的参数,然后按照游戏流程去发包什么的。
1、登录参数获得。
一般作者都是 通过post,get来获得登录的参数,在这里进行防范的话,可以从cookie着手。普通玩家登录游戏的话,一般在网页传递过程中,这个cookie数目的比较多的。而这类cookie数量一般就是那些必须的。就如QQ,他在登录时,一般都会带上你平常上的QQ,而这种通过post,get的不会发这些。由此来判断是否是合法登录。
2、全脱顾名思义,就是不借助于客户端,自己构建客户端利用协议跟官服交互。也就是说他在运行时是不需要加载资源的。那么开发者可以从资源这块着手。下个暗桩,某个资源会记录玩家的ip,玩家id的,服务器根据他来判断玩家是否在线。不在线,还在哪边发包,看作外挂处理。(后续处理自己看着办,直接掉线,告诉外挂作者你有暗桩,不掉线,过个1、2天,封号,哈哈。)
3、对于全脱,作者最烦的就在于那个参数的算法那,参数最好要经过多次计算,增加复杂度,不要弄一些固定的值,这样对脱机辅助作者来说,他就是做了个复制,粘贴的事情。
4、在发包中,一些重要包的信息最好带上玩家ID,时间和综合后的一些加密等。
适合于所有。页游之所有辅助比端游 要多,原因就在于页游可以很容易的得到源码。
所以呢,页游公司应该在保护源码这块入手防外挂。
源码的保护呢,一般3种,加壳,混淆,加扰码。
1、加壳
这个最没用,因为flash的运行机制里,都要先把他转成FWS,来进行加载,所以一般有能耐的,直接可通过内存拿到脱壳后的swf,像doswf那些,都是可以搞定的。不要觉得内存发行,只是水平不够而已。
2、混淆
这个就不错了。尤其是对于一些参数名称的混淆,这个更有效果,让作者即使解出了这个包,也不晓得这个包的意思,猜不透。不过混淆的话,还是可以去混淆的,只是看起来较麻烦点。解包还是能解,只是增加复杂度。
3、加扰码
这个最好,一般做脱机辅助的,虽然可能是高手,但也只是在一方面把,对于flash的反编译,肯定还是借助于工具的asv,硕思什么的。而如果你在swf加入大量的扰码的话,对游戏运行没多少影响,但是会直接让asv,硕思死掉。这样,即使他得到了脱壳后的swf,也弄不到源码,也就做不了辅助了。
个人意见。其实做到这里还是不够的,因为我通过虚拟机可以实现替换swf,让你官方的swf加载我的swf,从而我可以对你的游戏进行控制。应对方法,对每个swf来个长度检测啊什么的,来识别是否是你自己的swf。
这是在下的一点点见解。高手勿笑。
网页游戏防外挂策略。