本人下载后并研究了一下,呵呵,发现了,原来是脚本的作者发现了wwcl一个致命的缺陷,也让本人悟出了wwcl的原理,呵呵:
wwcl插件是如何锁定CS(或者说所有HL游戏)中的参数的?看看我们启动游戏后出现的一大堆unknowncommand,就知道wwcl原来是通过每次启动游戏后(注意这里是启动游戏后,后面会讲到) 通过服务端向客户端发出命令让客户端执行指定的指令,比如:cl_showfps "1"之类的。当客户端试图通过手工/脚本修改这些参数时,服务器收到后会发送一段预先在wwcl的设置文件中设置好的信息到客户端的控制台,并不执行我们的改动或者说再执行一个改回原来规定参数的命令,这就是wwcl的基本原理,尽管目前我还不知道怎么设计插件,但我设想的这个原理应该没错。
那么这个脚本是怎么绕开wwcl检测的呢?
先来看看shijie朋友转来的原文:
1,首先将3个cfg文件全部放到你的cstrike目录下,<我提供下载>,添加
bind "自定义键" "exec cvarlist_ex.cfg"
bind "自定义键" "exec cvarlist_s.cfg"
2句话到autoexec.cfg中
注意: 自定义键自己设置你键盘上无用键,
2,在你的cs快捷方式后面加上一句+exec wwcl.cfg,如hl.exe -console -+exec wwcl.cfg
3,进入cs游戏,按你在autoexec.cfg定义的那2个键,打开控制台,按你的截图键,看看有神么变化吧,
注:此时亮度已经生效, 你也可以编辑wwcl.cfg中的任意键
首先申明这个脚本是有效的,所以说wwcl的致命缺陷是存在的。
第一句也许有误:我想应该是加入到config.cfg中而不是autoexec.cfg中,因为基本上config.cfg以外的bind语句在CS启动后都会被抹掉。
关键在第二句:
在你的cs快捷方式后面加上一句+exec wwcl.cfg,如hl.exe -console -+exec wwcl.cfg
看出来了吧,哈哈,+exec wwcl.cfg,首先申明这个wwcl.cfg是你自定义的文件,决不是wwcl插件里面那个。
这里怎么解释了?合理的解释就是CS自身的脚本系统先于metamod的系列插件执行。
来看看脚本作者的wwcl.cfg中的部分内容,这wwcl.cfg文件就是脚本作者最高明的地方:
ex_interp "0.1" // ( 0.1 ) calculating player position in ms, lower value = model position differs from real position
alias ex_interp
看看:
alias ex_interp
哈哈,多么简单,作者聪明的运用CS自带的alias命令让ex_interp这些环境变量命令失效了,哈哈。
(什么是alias?
Alias就是给一组命令定义一个名称,当你定义过后,CS就认为此alias为一个普通的命令,你可以用bind命令分配一个键给这个alias,也可以在其他的alias中使用它。
比如:
alias hw "say Hello World!"
则当你在控制台(console)中输入hw这条命令回车执行后你就对服务器里所有的玩家说了Hello World!这句话,你还可以用bind命令:
bind v "hw"当你按过v键后你同样对服务器里所有的玩家说了Hello World!这句话。)
按照alias的语法规则这里ex_interp是一组命令的名称,输入ex_interp则执行相应的alias语句中ex_interp后面的一组命令,但在这里ex_interp后面为空,这样在控制台输入ex_interp抑或是其他方法执行ex_interp系统都是不做任何事,而前面已经证明了这个脚本在wwcl的插件之前执行,so,首先,在wwcl.cfg脚本中ex_interp已经被预订好了为"0.1"然后wwcl.cfg脚本立即通过上面的手段去冒充真正的ex_interp这条环境变量修改/显示命令,真正的ex_interp这条命令已经被他屏蔽/销毁了:-(,等到wwcl插件试图来规范环境变量时,ex_interp这个命令已经被屏蔽/销毁了,只会执行一段空指令,此时游戏中的ex_interp的环境变量已经是wwcl.cfg脚本中所“规定”的了,所以wwcl插件并不能做到更改现有的环境变量无论他怎么发命令。(BTW:实际上这才是真正的锁定方法,在客户端使用这样的“锁定脚本”)上面shijie朋友转的原文中的第1,3两句的作用,我也不大明白,脚本文件内容作用是模拟显示一段变量的内容,也许是做给wwcl插件看的吧。
这样我们只要在wwcl.cfg脚本中把ex_interp的"0.1"改为"0.05"任何数字,wwcl插件都不能拿我们怎么样,只不过同时你不再能在游戏中更改这个参数了,除非你出来改wwcl.cfg脚本文件。(知识并没有好坏,关键看你怎么使用它)
目前还没有什么办法制止在网上服务器使用这种方法逃避wwcl检测,不过如果是打Lan比赛,可以在每台选手的机器上使用这个方法并在wwcl.cfg脚本中使用默认参数,这样既不用装metamod插件系统,又防止了裁判没看到不自觉选手修改参数所带来的麻烦。(比wwcl可靠)呵呵,如果想要惩罚一下这些不自觉选手:
alias ex_interp "say I'm_Cheater!" |