小凡 发表于 2003-6-6 00:49:12

[测试] 关于WWCL插件的致命缺陷(shijie朋友在隔壁我的版里发过的下载)

本人下载后并研究了一下,呵呵,发现了,原来是脚本的作者发现了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!"

fyerit 发表于 2003-6-6 18:52:58

好文章!!!
至尊宝几天不来原来在搞研究啊

ViVa 发表于 2003-6-6 20:07:57

C-D的进步...慢慢可以放弃WWCL不用了....:)

shijie 发表于 2003-6-7 19:02:12

lan game可以这样,在wwcl.net上下在一个客户段的wwcl启动工具,用它来启动cs,杜绝非法参数,不过internet就不行了,现在看来只能升级cs的引擎,或者靠cd了,

不过不能修改游戏,会使cs失去很多超级玩家,失去一些魅力,扼杀一些超级发烧友修改游戏的乐趣,所以还是放宽游戏的可配置性,正式的比赛还是要严格制止,cs不能少了严肃的竞技玩家,也不能少了狂热的改派玩家,我认为是这样的.

小凡 发表于 2003-6-7 21:37:08

同意楼上的说法。

fyerit 发表于 2003-6-8 00:57:58

那wwcl如果在之前先alias ex_interp ex_interp行不行啊

小凡 发表于 2003-6-22 11:51:36

插件在脚本之后被调用,因为脚本是CS本身系统的一部分。

native 发表于 2003-6-22 14:38:48

alias ex_interp "say I'm_Cheater!"
HOHO

马桶里的c4 发表于 2003-6-22 15:12:03

alias ex_interp "say I'm_Cheater!"
haha

cser2008 发表于 2003-8-11 12:19:38

不过,奇怪的是C-D允许ex_interp 0.05-.01...尽管CPL以前有过0.05,不过现在国际大赛似乎都锁定0.1了....
页: [1] 2
查看完整版本: [测试] 关于WWCL插件的致命缺陷(shijie朋友在隔壁我的版里发过的下载)