大多作弊器都可以看作是CS的一个外挂程序,作弊器的运行方式从发展轨迹来说经历了三大方式其一,作弊器早期阶段是通过程序使得cs在启动的时候不去执行cs游戏本身固有的动态链接文件,而转去执行作弊程序锁提供的作弊功能链接文件。这种方式的作弊在早期比较多的应用,但是当反作弊程序大行其道的时候这种方式逐渐消亡,因为它太容易被反作弊程序所侦测。其二是最为强大的运行方式,作弊程序将尽全部可能独立运行,用自己独立的构架,独立的console,独立的菜单。通过侦测内存 监视游戏运行来得到游戏数据,将外挂程序与cs程序本身的瓜葛降到了尽可能低的程度。此种作弊方式是现在和未来相当长时间内作弊的主流。对于此种作弊,反作弊的难度较大。其三是通过BUG来实现,多半是通过驱动的对应缺陷,再加上作弊程序对对应bug的激活 从而实现透视等效果。可以说这种方式对反作弊来说最为困难,CheatingDeath的作者也不断根据bug发放最新补丁,CD4某些版本的时候很多朋友发现一进入游戏就发现CODE错误,有一些就是因为CD对驱动系统要求过敏感了,一般更改一下驱动可以解决。kangpin_002....
是否有一天可以消灭作弊器呢?从目前cs1.5 1.6的运行机理来看,不可能。因为服务器必须将一些必要的信息发送到客户端,比如敌人位置,木仓械位置,炸弹时间,击中你的子弹等等数据,只是某些处理出来,某些不显示罢了。可以说,在面对作弊器的时候,凡是发送到客户端的信息都无法保密,总可以通过这样那样的作弊软件得以还原再现。话也可以反过来说,某些信息是作弊器永远也无法得到的,不管这个作弊器有多么强大,比如远距离敌人的位置,比如敌人的HP等等。因为这些信息在你角色存活的前提下,始终保存在服务器,并没有向你机器发出,你自然也无从得知了。kangpin_002....
作弊器的功能
最早作弊的功能比较单一,仅仅能实现透视 自动瞄准等功能,作弊器的易用性也很差,所有的操作都必须在控制台输入对应命令,一些比较经典的命令例如sv_aim sv_fov等等就是在那个时候深深刻入我的脑海,不一而足。毫无疑问,OGC是cs作弊史上的里程碑软件,也是最完善作弊的代表,随着OGC版本的不断更新,变种的增多,现在OGC以及其变种所能实现的功能已经达到“体贴入微”的程度具体功能基本有瞄准方式,瞄准部位,射击方式,射击速度,移动速度,自动瞄准角度, 一键激活瞄准,透视视觉效果,地图坐标效果,距离武器标注,声音标注,时间提示,亮度设置,血迹设置,自动购买,自动切换手木仓,解除手雷效果,狙击开镜效果取消,瞄准区域放大,显示弹道,保存设置 等等等等。OGC是CD为代表的反作弊软件重点针对的作弊器,道高一尺魔高一丈,他们之间版本的升级无异于一场战争。kangpin_002....
作弊的几种人
1. 纯粹好奇型2. 冒充高手型3. 泄愤报复型4. 理论研究型5. 追求快感型
什么时候你可以开始怀疑某人是cheater?1、极高的暴头率:没人能否认SK队员代表着世界顶级水平,如果你有兴趣,可以统计一下SK比赛中的暴头率,不会超过八成。当某些人肆意超越这个数值的时候。我们就可以有足够理由来怀疑。(此类人有两种可能,一种是开着锁定头部作弊器的作弊菜鸟;一种是国际高手 或者中国顶级高手趁在状态来服务器录暴头demo.谁过年不吃一次饺子?)kangpin_002....
2、不可思议的反应:当一个cser突然看到2个以上的敌人并且敌人不处于同一直线,迅速将敌人全部放倒。如果再加上暴头就更没话说了。(这种情况在比赛或者混战中并不多见,但是一旦出现,证据就很充分)
3、当你与之面对的时候,就感觉子弹没有停止过命中自己。可以很明显发现他的命中率相当高(同样两种可能: 一种是中级作弊鸟,准星缩定敌人胸部;一种是国内高手正常状态中,我交手过的很多职业选手都可以做到。)
4、感觉水平相当高,暴头不多。也没有什么穿墙。但是就是杀人和死亡比例相当高。比如3x-x.(三种可能,1、一般选手 正在状态;2.高手 3.作弊骨灰级)
5、莫明的穿墙 当你和你的队友总是某名奇妙的被对方的某一人穿杀 可以开始怀疑.kangpin_002....
CS作弊器
打开作弊器目录一般会看到3个文件:myhack.exe,myhack.dll,myhack.cfg。第三个文件.cfg是用来保存配置信息的比较简单,下面仅讨论前两个文件,因为这两个文件是缺一不可的(.cfg文件等可以没有)。
对于普通的CS作弊器(比如OGC类,CDD类等), 其注入器(EXE)的作用是这样的:
1、负责启动或监视CS游戏进程
2、创建或检测到游戏进程后,将作弊器的主文件(DLL)注入到CS游戏进程中(注入的意思是让运行中的CS游戏进程主动加载我们的作弊器主文件(DLL),就象这个文件本身就是CS游戏的一部分一样)
其主文件(DLL)的作用是这样的:
我们知道,一款CS作弊器从功能方面来说大致可以分成2块:一部分负责显示方面的,比如透视、防闪、显示人物名字武器等信息;另一部分则是控制本地玩家的动作,比如自动瞄准、开火、加速、冲刺等。而这些功能则全部是由CS作弊器的主文件(DLL)实现的。 kangpin_002....
1、透视、防闪功能的实现:一般来说,我们都是以OpenGL模式运行CS的。这种情况下CS游戏画面的显示就全部是调用OpenGL函数实现的,于是我们可以通过挂接(就是拦截的意思)CS调用的OpenGL函数中特定的一些函数并修改它,比如取消CS游戏场景中物体之间的深度测试或改变物体的透明度从而实现透视等等。
2、机器人功能的实现:以瞄准机器人举例。
同现实世界一样,CS游戏中的每一个人物都具有一组结构相同但数值各不相同的数据,我们抽 取其中主要的来说,大致有这几类数据:1、首先则是人物的姓名、状态、帮派、外貌等,用以表示这个人物看起来什么样、哪一个队等
2、人物的坐标值O(X,Y,Z),用以表示此人物在游戏场景中当前的位置
3、人物眼睛瞄向的方位向量V(X,Y,Z),这个向量决定你开木仓时子弹会朝哪飞,你按前进键 时人物会往哪个方向走
要做一个瞄准机器人思路就清晰了:得到本地玩家的坐标O1,其他任一玩家的坐标O2,然后修改本地玩家的方位向量V1=O2-O1(当然,这是个简单的说明,实际中要稍微精确一点)
知道了思路然后就是实际写代码做了:我们调用CS游戏中获取人物数据的函数得到人物的坐标,计算出V1,然后再调用CS游戏中修改人物方位向量的函数修改本地玩家的方位向量。当然了,前提是我们需要调用这两个函数,而我们作弊器主文件(DLL)则理所当然的挂接了这两个函数。kangpin_002....
小结:总的来说,我们作弊器主文件(DLL)就象一个高智商的间谍,打入敌方核心阵地(CS游戏进程),劫持敌方各部门收集数据(挂接调用CS游戏的函数),最后整理收集到的数据(计算)。够简单吧,对了,还有一个比较通用的说法,我们把除OpenGL以外的CS函数概略的称为CS游戏引擎函数。
总结:
注入器(EXE)------------- 我方间谍的支持团体,负责将其打入敌方内部。
作弊器主文件(DLL)------ 我方间谍,负责在敌方内部活动,完成实质性的工作。
Cheating-Death(以下简称C-D)
和其他反作弊软件的主要不同之处在于它不是*侦测已知作弊软件的特征,而是尝试让作弊不那么有效,并防止作弊者获取信息来防止作弊。在大多数情况下,作弊因此被阻止。kangpin_002....
侦测作弊的观念
侦测作弊听起来简单——如果你注意到某人正在作弊,那么就把他踢出去。问题在于没有一种普遍的,可*的方法去把作弊软件和别的正常的软件区分开。因此,反作弊软件被迫以已知作弊软件的特征为线索搜寻作弊者。服务器端的反作弊软件正是这样工作:一旦发现某个作弊软件,就把它的使用者踢掉。
此方法的问题在于作弊软件的作者很容易就可以修改他们的作品,使其变得不一样。同样,如何编写自己的作弊器的信息很多,所以新作弊软件层出不穷。要与之对抗,反作弊软件采用更新已知作弊软件列表的方法。当一个新作弊器公布后,列表立即更新。现在服务器端的反作弊软件使用不间断更新的作弊器列表,发现一个,踢掉一个。
可见,这并不是一个特别好的方法。事实上,这方法相当不可*,因为它需要一个重要的条件为补充——惩罚。通常的惩罚是在服务器上禁止某玩家。言外之意是即或无法抓住所有作弊的人,你至少能阻止以往作弊的人进入服务器。这也能告诫试图作弊的人。现在反作弊软件拥有不断更新的作弊软件列表和作弊者名单,一旦发现有作弊器或有过去曾作弊的人存在,它就踢掉他。
你或许认为这的确可行,但事实上不太有效。问题在于如果你在一个服务器上禁止了某人,他们只需进入另外的服务器即可。目前有一些全球作弊者数据库正在运作,其中一个甚至整合进了反作弊软件。然而,许多问题出现了:这样做合法吗?数据库由谁维护?作弊者的名字在数据库中保留多久?如果某人没有作弊却被放进数据库,怎么办?如果你不知情但你的孩子或朋友在你的机子上尝试作弊器,怎么办?反作弊软件出错导致错误的侦测怎么办?如果一个服务器要禁止某人,而另一个却不希望如此,怎么办?谁将负责判断这一切的一切?kangpin_002....
所有这些问题都对作弊者数据库的功能性和公平性提出了质疑:可能出错的地方很多,维护也很消耗精力。综上所述,侦测作弊的概念瑕疵百出,必须更新。
《半条命》如何工作
那么如何不侦测作弊软件的特征就能阻止作弊?要明白这点,必须首先了解一些《半条命》(以下简称HL——译者)多人游戏运作的原理。当你玩HL的时候,你的电脑成为一个客户端(Client)。客户端负责收集你的键盘和鼠标指令,并绘在屏幕上。客户端和服务器相连。服务器注意所有客户端的状态。它发给客户端信息,告诉它每个人在哪里,在做什么。kangpin_002....
客户端由两部分组成,引擎和客户端MOD。引擎处理和服务器的连接,在屏幕上绘图,并获取键盘和鼠标输入的信息。MOD部分处理和你玩的某个特定游戏相关的事情。每个游戏都有自己的MOD。如果你装了HL和CS,那么就会有一个HL的MOD,还有一个CS的MOD。但是只会有一个引擎。所有的MOD都使用相同的引擎。
引擎和MOD互动使你机子上的游戏顺利运行。大多数作弊软件的原理是他们把自己楔入引擎和MOD之间。引擎和作弊器“对话”,作弊器再把信息传递给MOD。同样,MOD和作弊器“对话”,作弊器再传给引擎。引擎和MOD仍然相关联,表面上看一切都好,其实两者实际上在通过作弊软件“交流”。这些作弊软件通常被叫做“客户端钩子”(”clienthooks”)。kangpin_002....
既然作弊软件栖身于引擎和MOD之间,它可以做它想做的任何事情。常见的事情是在屏幕上画出额外的信息,或是让你瞄得更准。但是它同样可以让你像个白痴一样转着圈跑,丢掉你的武器,或者自杀。完全取决于作弊软件的作者想做什么。
另外一种正在变得流行的做法是把作弊软件伪装成3D驱动程序(OpenGL或D3D)。当游戏引擎以为一切正常时,作弊程序正分析渲染数据,然后再把它传给真正的驱动程序。(它把自己“裹wraps”在真正的驱动程序外围。)虽然作弊器用此方法得到的信息不如直接介入引擎和MOD之间获得的信息多,但是也足够分析出正被绘制的任何目标的位置。同传送鼠标和键盘事件的程序连接起来,此类作弊软件也能有很高的效率。他们更难被阻挡,因为介入引擎和驱动程序之间的途径比介入引擎和MOD之间要多得多。这些作弊软件通常被称为“包装工”(“Wrapper”)。kangpin_002....
防止作弊
有两个基本的问题需要解决。第一个是引擎提供给MOD有关其他玩家位置的详细数据。第二是必须和引擎绘图的做法一致。
MOD确实不需要知道玩家的确切位置。它仅仅需要知道一个玩家大概在什么位置。为了有效瞄准,作弊软件需要知道玩家的准确位置。如果引擎并不告诉MOD玩家的准确位置,而是只告诉大概的位置,自动瞄准将会失效。
第二个问题是要和引擎绘图的方法一致。它由后向前绘图。比如,如果一个玩家站在墙后,引擎先画出玩家,然后画出前面的墙。通常情况下,这样做效果很不错。问题出在如果一个作弊器已经使墙变得透明,你将能看见透明强后面的玩家。这种形式的作弊叫“穿墙”(wallhacking)。如果引擎不画出不可见的玩家,那么透视将失效——使用穿墙程序得到的只是一堵堵透明的墙而已。
Cheating-Death如何工作
C-D的工作方式是把自己楔入引擎和作弊软件之间。这正是C-D和别的反作弊软件的不同之处。它不会在游戏外运行,而是介入到游戏内部。以下是C-D的做法:
如果C-D侦测到某玩家对你不可见,它会把这个玩家的位置“挪”到你背后。这样做的好处在于:首先,它使“穿墙”失效。即使你让墙变得透明,也无法看见其后的敌人,直到敌人的某部分在屏幕上为可见。
第二,它使雷达和ESP方块作弊失效。ESP方块画在玩家顶部,会透过墙显示。如果一个玩家蹲在墙的另一面,玩家的位置将会在墙上用ESP方块标记出来。即使你看不见玩家,ESP方块也能给你他们的准确位置。
另外,C-D通过使MOD掌握的玩家位置信息不精确,从而毁掉ESP,自动瞄准或其他类似作弊功能。它并不影响“碰面判定”(collision detection),因为这是由引擎完成的,而引擎仍掌握精确数据。
最后,C-D监控一些引擎的数据中常被作弊软件介入修改的地方。如果C-D发现某处被改动,它会断开玩家的连接。这样做使作弊器无法获得它们需要的关键数据,并使得它们不得不改变获取信息的途径——它们将无法简单地使自己看起来正常就能骗取数据,而不得不寻求更困难的方法。kangpin_002....
客户端的解决方案
我们意识到我们无法阻止破解者破解C-D。运行在客户端的任何东西都有可能被破解。我们最新版本的C-D最终也将被破解,况且编写作弊软件的人非常聪明。然而当它被破解时,我们将改变行事方法并发布新版本德C-D。让他们有新的东西可供破解。 kangpin_002....