类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
欢迎讨论
网友回答:
最有效的手段是将所有数据校验的工作都放在服务器上进行。不过不太现实
还有在客户发出/接收数据时加密。
内存中的变量等也加密。然后给程序加一个壳。
还有别的方法吧。。。。。。。。。。。
数据加密没有用的,因为现在的外挂很多都用到了截包技术和伪装包,不管你怎么加密,外挂不需要考虑你的包中的数据是什么内容,只需要考虑包中的数据可以完成什么功能,然后就可以依葫芦画瓢的发包,到了服务器端一样会被认为合法数据。如果想要完全封外挂,必须对整个游戏数据进行保存,然后分析日志,发现作弊的就做处理!!不过这样的代价会很大!!
把所有数据都放到服务器,客户端只做键盘和鼠标的输入!
把所有数据都放到服务器,客户端只做键盘和鼠标的输入!
============================================
这样服务器的负担太大了吧?还有,现在的网络速度,达不到这种要求的。
在客户端留个后门,不定期的像客户端发送查询命令。让客户端返回当前程序的相关信息。例如:程序的大小,调用的dll列表等。根据这些可以判断是否用了外挂。
如果发现有外挂使用,可以像blizzard一样在网站上公布用户名称进行警告。
使用动态加密,服务器随机产生Key,客户返回的数据使用Key做标志,Key不对,则认为返回数据非法,过滤掉。
把所有数据都放到服务器,客户端只做键盘和鼠标的输入!
----------------------------------------------------
============================================
这样服务器的负担太大了吧?还有,现在的网络速度,达不到这种要求的。
-----------------------------------
这个样子也是不行的,因为外挂一般都是模拟发包,就是说游戏的通讯协议已经被破解了
服务器是可以负担的,因为现在大多数游戏都是这样做
瘦客户端
数据包加密,实在不行就用隧道方式通信。
还有就是服务器集群的安全,防止入侵。
发表一个比较强的解决方案:自己写一个操作系统,只能运行你的游戏程序,其他一概杀掉。 让外挂者分析吧!
其实无论用什么手段封外挂都是不可能的,最后还是要被破解。只是难度和时间的问题而已。
加校验码
让服务器每个周期产生一个新的校验码,分别发给客房端。无论是服务器还是客房端,在发数据前,都把它按一定规律加杂数据里面。如:数据本身为32位,校验码为4个8位的数据。加入校验码后为64位。也可以让校验码为8个4位数据,这样更难被识出,是加杂在里面。收数据时检验校验码。
关于加杂校验码的位置的保密就很关键了:
1、一个时间内用一个校验码不太安全,容易让人通过劫取数据分析出你校验码加杂的位置。可以同时有三到五个校验码。发送数据时任意使用,收数据时任一校验码通过都可。
2、校验码加杂的位置也可以改变,做几套固定的加杂位置保存起来。听服务器安排使用那个,也可以通过升级的方法来增加新的加杂顺序。
以上模块当然是汇编来写。应该还是比较快的。
现在的外挂一般都是做成程序,这样使用起来才方便。因此只要让它无法适应你的变化,那就成功了。
以上是我的一点想法,不成熟之处还请高手指正。
对付非脱机外挂的方法,就是在远程序时,除了系统的程序以外,不允许运行任何其它程序。发如果发现其它程序,就自动退出游戏,然后提示。
增强游戏的可玩性才是关键!
个人感觉,不是游戏本身的问题,应该是
系统本身的问题,曾经考虑是否可以为游戏程序做一个更安全的平台,
负责一些像通信,绘制,智能等方面的基本操作,但首要是提供一个
安全的环境,使得外部程序不能进入。
这只是个设想,我们可以从可行性,代价,效果等方面讨论一下
我以前玩天骄网络游戏的时候,就没有外挂,听说要出天骄2了,强烈推荐该游戏:)
把所有数据都放到服务器,客户端只做键盘和鼠标的输入!太偏激了点,可以将一些关键数据,譬如说经验值啊,装备啊等放到服务器上去运算。
天啊,这样做出来的游戏暴卡:(
在服务器端增加反外挂模块,比如定时检测玩有的跑动速度,经验值检测等,其实反外挂并不是很难的,难的是支持,现在很多网游国内都是代理的,想实时更新很不容易
基于 硬件把..想玩的 都买个硬件卡~~
天天都更新客户端和服务器端的通讯协议。外挂的承诺一般是3天破解,如果你天天都更新保证没有外挂,外挂作者也会做烦,呵呵~~~~~~~
即使能负担,全部放到服务器也不行
那外挂只要模拟键盘鼠标动作就行了,反而更简单了
现有协议下,从服务器端是很难判断数据到底是哪个程序发出的,
分不出是外挂还是正常的游戏
客户端增加一个检查外挂得程序
只能使用指定得外挂,否则,无法进入程序
否则,如果只从服务器那边考虑,永远有破解得方案
我是做金融领域软件的。在我看来,外挂的出现和横行只有两个可能:A.程序员烂;B.游戏公司需要外挂增加上线人数。
前面某位说加密没用的老兄,请先了解一下金融系统是怎么保证系统安全的。
怎么感觉大家都觉得外挂是作弊工具?
现在的外挂多是辅助工具
要封在技术上是不现实的,所谓道高一尺魔高一丈
天堂2不是用了nprotect,就是通过hook几个常用的api来实现的,结果还不是被破了,而且破的很轻松,偷字节就可以了,要封外挂实在是太难了.
除非公司有决心封使用的用户,但是一些辅助外挂又无法核实,所以说呢,难啊.
将破解进行到底,微软再怎么设计操作系统得加密,还不是盗版横行。
没有破不了得,也没有封不了得。
外挂不可能完全封,只能避免。游戏是人做的,就一定会有外挂。
可玩性才是减少外挂的有效措施!
可玩性,游戏里面经常出现血爆多的怪物,基本上属于打不死的那种 ,然后在加上不出月卡,就ok了
老大你挂吧,是你的钱多还是我的怪物多
数据加密,
加密码方法每几天改变一次,
让他们做外挂的去忙吧.
我个人认为防止外挂做数据加密是没有用的,如果在游戏开发阶段就已经把外挂因素考虑到了即使不加密也应该可以起到防止外挂的作用。
如防止复制物品方面可以用一个全局变量记载当前游戏世界中物品总数等。
考虑用session机制。
我是做金融领域软件的。在我看来,外挂的出现和横行只有两个可能:A.程序员烂;B.游戏公司需要外挂增加上线人数。
前面某位说加密没用的老兄,请先了解一下金融系统是怎么保证系统安全的。
-----------------------------
金融系统和游戏系统是非常不一样的系统,你不了解游戏系统前,请不要随便下定论。
不然会被人笑话。
1)游戏服务器对外的网络带宽是多少?
2)游戏服务器对数据同步要求非常高。那象你银行系统,取一次钱都要几分钟。如果我在游戏里去仓库取装备要延迟30秒,我保证没人玩。
3)游戏服务器封装的业务逻辑,绝对比银行的高。服务器负荷大。
---------
前面某位说加密没用的老兄,请先了解一下金融系统是怎么保证系统安全的。
回应:加密确实用处不大,因为漏洞的根本原因不是加密,而是服务器把相关业务逻辑放在客户端处理了。金融系统对数据的加密,并不是怕数据被修改,而是怕数据被窃知如账户密码;而游戏封包通讯目的不一样。。
用密码学的话来讲:你把密码机放在解密者前,而且解密者有机会拆开密码机,那么这种加密方法肯定很快被破解。而游戏非常不幸,就是这一类型的系统,是无法避免的。金融系统呢??晕,那ATM机器,用户能拆来看吗?金融系统的网络,解密者能进去慢慢调试其程序吗?还有很多。。
作为开发金融系统的开发人员,却不懂密码学的基本原理。可谓悲哀!
你说的是国内现在的金融系统。我参与做的金融系统,响应时间是15毫秒,我想不会比游戏差吧?再则响应时间和加密好像关系不大。业务逻辑的多少有什么关系?金融系统的业务逻辑会比游戏少?你不要开玩笑了,随便一个金融业务,都能写一本书出来。业务逻辑的多少,和系统安全有必然联系吗?
加密算法都是公开的。我们的系统所用的加密算法都是书上写着有的,但是你就是不能破解我的数据包。举个国内的例子,你去www.hexin.com.cn下载一个交易客户端,你倒是把它的数据包给我破解看看?
世界上没有完美的体系,解决办法:
定期更换总模式 当破解时间>升级周期 或 破解成本>破解利润时 聪明人都不会打你的主意^-^
最好的方法,把主程序模块每次等待客户机的请求之前,进行加密传送,然后到客户机再解包运行,而且每次都是动态加密,嘿嘿!
数据包每次根据用户的连接id(只在客户端识别,不向客户端发送,类似于数据库的自动id)不同,采用加密密钥(用户连接id)都不一样,这样可以防止客户端每次发迷惑性的数据包。
这样子,做外挂可能要头疼一点
每天连上服务器时, 客户端在客户不知道的情况都下载一个不太大的最新外挂特征库, 查杀内存中的外挂。若能做到新外挂出两天就有杀挂程序自动下载, 相信外挂公司的日子会难过得多。
问题是游戏服务商愿不愿花这个时间和精力。毕竟不是所有外挂都是和服务商有利益冲突的,例如一些纯挂机练功的外挂就很受服务商欢迎,甚至将一部分外挂合法化在官方主页出售。