【追加高分】魔兽地图反作弊

"反WE类"

这类可以说是最常见的了,最早的加密就是为了使WE打不开地图,方法也很多

魔兽地图作弊版?魔兽争霸3有几个版本

1.删除WE的使用而游戏不需要的地图内部文件.

如war3map.wtg,war3map.w3c,war3map.w3s,war3map.w3r等文件,其中war3map.wtg是触发文件,游戏运行时使用的是war3map.j脚本文件,而触发文件是用来在WE中显示更为直观的T,其余war3map文件则是镜头之类都可以在J文件中定义的东西,游戏也不需要,因此删除这些文件可以使WE因为缺少文件而无法打开地图.

加密方法:使用工具如w3mmaster,Wc3MapOptimizer,其中Wc3MapOptimizer是当前最好的工具,而且与其说是加密还不如说是优化,使用该工具除了删除无用文件外,还可以优化脚本,加快地图读取速度等.(这里推荐使用时参照老狼写的使用说明,写的比较详细,工具现在已经有偶汉化的4.5版,里面集成了老狼的大部分说明,这里推荐大家使用--).另外一方面还可以手动使用MPQ工具进行删除或在WE中导入同名的空文件(最老的手动加密方式--),当然手动方法是不被推荐的,因为没有任何优化效果,而且这种加密是最容易破解的.

2.导入错误文件.

这种手段也是比较初级的加密手法,使用错误的war3map.wtg或在非正常数据环境下制作相关触发数据(如修改MPQ包中的blizzard.j文件,加入新函数等--),同样造成WE错误,没有优化效果.这样做的原因是因为出现了可以忽略常规缺少文件错误的新WE(如反汇编制作的ENE WE等),这类WE可以打开缺少触发等文件的地图(不过由于缺少文件,你依然不能修改和存储地图,这也是一些菜鸟修改者修改完地图后发现地图完全不能游戏的原因),在使用错误数据后这类WE大多会出现内存读取出错.(可见加密技术都是解密而发展的--)

魔兽地图作弊版?魔兽争霸3有几个版本

值得一提的是某些修改war3map.w3u(单位文件)等基础数据文件的做法,这种做法比较另类,向其中加入游戏中用不到的冗余错误数据,同时造成其中数据与war3map.wts等文件中数据错位.这种方式是针对现在比较流行MPQ工具导出相关文件进行外部修改的破解手段的,因为很多人喜欢导出w3u文件单独放入WE修改,而在没有使用Wc3MapOptimizer的WTS字符优化时,还需要导入WTS文件来查看文本信息,这时冗余的数据会造成错误,导致WE出错退出--,不得不说很有创意,不过如果使用w3mmaster修改的话就没有任何效果了,外加没有优化效果,因此也是不实用的方法.

3.SLK优化

这种方式最大的好处是可以大幅加快地图读取速度,SLK文件优化得当的话,体积也可能减小,是当前最好用的优化手段之一,很多优秀的地图如DOTA都是这种优化的.

原理:懂得基本的地图组成结构的人都应该知道,单位,技能等信息都是储存在w3u,w3a这样的文件中的,然而没有实质的了解其结构的人可能就不会知道实际上这些文件中储存的不过是改动信息,而这个改动是相对于魔兽基础MPQ文件中的SLK文件而定的.地图在读取地图时会读取w3u等文件,而如果这些信息都作为SLK的基础信息的话则不会占用读取时间,这样就做到了优化,而且SLK的读取速度也比较快.因此优化的过程实际上就是拆散w3u等文件再放到SLK文件中去.

SLK更多的是作为优化而言的,如果说到加密,那就是因为他可以防止w3mmaster这样的外部修改器,同时对于不了解内幕的人,也会因为找不到单位等数据文件而无从下手,不过现在基本上人人都知道SLK文件可以用EXCEL这样的工具来直接修改了,因此作为加密而言只是增加了修改的复杂性.

相关工具:Widgetizer(最早的SLK工具,性能可靠,可惜不支持中文,如果你是英文图的话,还是用这个最好),U9MapOpt(U9地图优化器,目前唯一支持中文的优化器,不过还不能优化大小,而且有加广告的"BUG"...).

总体来说"反WE类"是目前最广泛使用的加密方式,而且这类大部分是优化而非真正意义上的加密,同时我建议使用的SLK+Wc3MapOptimizer的优化方式.

"反MPQ类"

前面说过使用Wc3MapOptimizer等工具只能说是优化而非加密,原因之一是他们主要是做使地图变小,读取变快的优化,另一方面就是对于这类反 WE的地图,修改者最常用的手段是使用MPQ工具进行内部文件的修改,对于这类修改,很长时间内可以说是无敌的解密方法,因此真正可以说得上是加密的就是反MPQ类.

1.MPQ头文件修改

这种修改方式由来已久,直到不久前hackwaly的新加密方法出现之后才真正流行起来要讲其原理,需要先了解一下mpq头文件的结构

struct TMPQHeader文件头结构定义

{

DWORD dwMpqFlag;头文件标志,一般是'MPQ'

DWORD dwHeaderSize;头文件大小

DWORD dwArchiveSize; MPQ包大小

USHORT wFormatVersion;版本(这个直到WOW燃烧远征才开始有用,MPQ2这个值是1,魔兽的MPQ1是0)

USHORT wBlockSize;块大小,熟悉的人一般叫它BUFFER SIZE

DWORD dwHashTablePos;哈希表偏移位置

DWORD dwBlockTablePos;块表偏移位置

DWORD dwHashTableSize;哈希表大小

DWORD dwBlockTableSize;块表大小

};

具体的含义在MPQ讲解中我还会介绍,这里只说和加密相关的.

1.同样的这种加密也是随着相关MPQ工具而发展的,最早是soar(GA的c-a)的mpqworkshop,这个工具有一个弱点是其寻找MPQ时需要检验头文件大小(dwHeaderSize)这个值,而由于MPQ1的这个值显然是固定的32,所以当人为的修改这个数为一个随机数时,该工具就会认为这是个无效的MPQ文件,造成无法打开,当然明白了原理后这是很容易破解的,而且现在的MPQ工具都忽略这个错误.不过这个修改这个值几乎成了习惯,虽然没有作用也还一直沿用着.

2.之后出现了w3mmaster和mpqmaster,依然是soar的作品,使用自己制作的mpqlib,可以忽略dwHeaderSize的错误(同时sfmpq也一样).很长时间内MPQ头的加密没有新的发展,直到今年初,hackwaly公布了他的研究成果,新的killmpqmaster加密,实质上是修改块表大小为大于哈希表大小的数.这里简单讲一下原理:

最通俗的语言来说,MPQ就可以看成一本书,但他有两个目录,哈希表是第一个,当你要找书中的一页时需要先查哈希表,得到块表这个目录的位置,再从块表中查找到具体的页数,而MPQ这本书还有一个特殊之处是哈希表这个目录的大小是固定的,也就是说书里面最多能放的页数也是固定的(这就是MPQ中文件数有上限的原因),而如果我们的内容不能装满整个书的话,那么哈希表的一部分就是空的.而块表不同,他只存放有效的页,因此他的大小是不固定的,哈希表与块表是一一对应的,因此块表不可能比哈希表大.

再讲一下MPQMASTER的文件查找原理,大家就会明白为什么修改块表大小会造成这类工具不能读取地图的原因了.MPQMASTER准确说是 mpqlib.dll是需要枚举MPQ包中的每一个文件的,而魔兽则只需要查找其需要的文件,也就是说,魔兽在翻书时直接查找目录找文件,而不必去管目录到底有多大,什么时候目录会结束.而MPQMASTER则需要知道这个,他要先知道目录的大小才能得知什么时候已经找到了所有文件,mpqlib是根据块表来查找的,因此如果修改了块表大小,就相当于让他去不存在的目录查找文件,这当然是错误的.

3.修改MPQ包大小(dwArchiveSize)为0,这是我个人最先发明的,原理实际上也和修改块表大小差不多,但实际上还是由于mpqlib的严谨性,mpqlib在读取MPQ文件结构时会验证一些数据的准确性,虽然不一定有用,但是正是这项检查造成修改MPQ包大小后,mpqlib将地图识别为错误MPQ.

4.修改哈希表大小(dwHashTableSize),这种加密也和我有一定关系,不过没有流行起来,而且事实证明也并不是一种安全的加密

在killmpqmaster加密(工具为hackwaly的w3xmaster)流行后,mpqmaster的使用受到限制,当然也出现了不少手动破解方法,不过相对而言最好用的是winmpq和我的ShadowEditor,sfmpq是因为其在查表时是检查哈希表而不受块表错误的影响,同时也不检查 MPQ包大小,因而可以正常打开w3xmaster加密的地图,不过从w3xmaster0.006开始采用了修改哈希表的技术而造成其显示错误文件而不那么好用了.同时期我就结合了sfmpq的优点做了ShadowEditor,自动修复所有的头文件错误,修复后可以用mpqmaster打开.作为反 ShadowEditor还原的第一例,就是55YOU的简单做的修改哈希表大小加密,理论上说哈希表大小会直接影响查表的过程,因而不能修改,但确实在一些特例中成功了,但并不是所有图都可以,再加上我第一时间修改了还原程序,这个加密貌似就只出现了那么片刻的时间--...

2.利用地图大小限制

魔兽连网是有4M大小限制的,而在早期大家都使用MPQMASTER来修改地图时,由于mpqlib的压缩性能较差,因而总会造成地图变大,有些加密就是利用这个漏洞,在地图较大的情况下干脆直接让地图接近4M,这样随便改动都会造成无法连网.这种加密实际上也在winmpq和偶的 ShadowEditor流行起来之后变得用处不大了,因为SFMPQ.DLL的压缩效果要明显好的多.

值得一提的是最近还能见到一些图利用0byte文件来填充的方法把MPQ包添满,当然这也是在地图本身比较大的情况下,这种方法貌似是利用地图大小的升级加密版本,因为这样即使压缩的很好也有可能超出4M,不过解起来也很简单,把这种文件删就好--,所以感觉是种很搞笑的方法.

3.脚本文件加密

包括3种:

1.最早的是移动脚本,把根目录下的war3map.j放到scripts\下依然可以用,在开始没有人知道的情况下,确实找不到脚本,但是现在已经是路人皆知的事情了,使用Wc3MapOptimizer会自动移到那里去.

2.双脚本,一个在根目录下,另一个在scripts\下,出现两个脚本,迷惑新手罢了,当然只有一个是真的,我给他的评价是劳民伤财,白占体积--.

3.替身脚本,这个理论上有些技术含量,和后面要讲的我的文件隐藏法有一定的联系,原理上说是利用了魔兽的storm与一般工具的MPQ库之间读取文件的原理差异,在地图中放入两个同名的war3map.j,一个是假的替身文件,在用一般的MPQ工具读取时只能读出假文件,游戏则会读真的,识别方法可以用偶的ShadowEditor打开发现两个同名的war3map.j且大小不一样(大小不一样很重要,因为w3xmaster也有一种能造成这种假象的),这种方法对所有具有写入功能的MPQ工具都有效,不过估计应该不是用某种专门加密器完成的,估计是用了某个MPQ工具的BUG,而且这种方法加大地图体积,还可以用简单的方法破解,因此我只说他是理论上有技术含量的东西--.

4.文件属性加密

这种貌似是最扯淡的加密了,方法简单的出奇,而且不容易察觉,就是把地图的属性改成只读,这样任何MPQ工具都不能对其进行写操作了,当然还原方法不用多说了,不过不仔细的话还真以为是什么厉害的加密呢,汗......

5.MPQ哈希表,块表加密

这种才可以说是真正意义上有技术含量的加密(相对于Wc3MapOptimizer等工具也算不上有技术--,不过那些是优化...),从hackwaly的w3xmaster开始.

这里只举两个例子:

1.w3xmaster0.009:未公布的地图加密器,主要原理是将块表扩充为确实比哈希表大,同时打乱哈希表与块表间的连接,填充无用的哈希空位,迷惑性的复制哈希表项目(这就是为什么ShadowEditor可能读出两个J文件的原因,大家也可以推想一下替身脚本的原理--...),再详细的原理我也不想说了,未公布的东西不能乱讲,其实主要是防止我的ShadowEditor对地图进行还原,同时也造成了无法重压缩的问题,虽然不能防止解压,但是确实比较有效的防止了在原图上进行修改.

2.War3map Encrypt:未公布的加密器,这个是我做的,也是只简单的讲一下原理:前面已经说过war3和一般的mpq工具读图原理是有差别的,这也是制作加密的突破口,简单的说这个差异就是在 MPQ中出现同名文件时的处理机制,因为正常的MPQ是不会有同名文件的,因此一般的MPQ工具不会处理这个错误,而war3则会,因此才有了替身文件和隐藏文件的可能,与替身文件不同的是,我的加密是通过直接修改哈希表制作的,因此我不需要替身文件可以直接隐藏文件,同时在加密中加入了SFMPQ列表读取崩溃和w3xmaster的一些反mpqlib机制,所以现在基本上可以防止所有流行的MPQ写入工具进行修改,甚至读取.不过既然魔兽能够读取,那么就一定有办法能解压文件,这种方法是什么我就不想多说了,这里只是加密讲解.

话说回来任何加密都可以破解,懂得MPQ核心原理的人应该可以自己写程序破解,不过我的SE暂时是不会再写任何破解模块了...

"脚本类"

从这类开始应该说就是反作弊的范畴了,这类出现的前提是无法阻止脚本文件的解压,以及某些外挂作弊(MH)

1.打乱脚本,变量名替换.

这是最早的了,也是沿用至今的基本方法,代表工具是Wc3MapOptimizer,利用他进行脚本优化后,脚本中放在一起的T相关函数被分散并进行同类汇总,删除注释,这样造成脚本可读性变差,但是真正使可读性变得很差的还是重新用字母或数字来替换那些有意义的函数名,这样就给理解脚本造成了很大的麻烦,因此修改脚本时需要的是对于J文件的深刻理解了.

2.添加作弊检查的函数.

这类方法很多,比如检查玩家的资源数等,只要超出合理范围就判定为作弊,同时可以检查是否使用了单机秘籍.其中还有一类比较有趣的方法是在游戏中读取wts文件的字符,如果修改者修改了某些字符,如作者信息之类就判定此图为盗版.

3.禁止单人游戏.

这种多用于ORPG,防止单机秘籍的使用造成游戏平衡性破坏.

方法有几种,比较好用的有判断是否可以保存缓存,单机可以,多人就不行,另外判断是否可以保存游戏也可以做到,同样是只有单机可以.

单机判断和作弊检查函数联合,同时分散写上多个处判断函数,可以使修改者不容易删除判断函数,而且在判断为作弊后采用死循环或大量制造单位的方法来强制地图出错,也可以防止修改者通过文字信息来找到相关函数.

4.反MH函数.

MH无疑是最让对战地图头疼的东西,不过在kook,hackwaly,朱朱等人的研究下,确实找到了一些反MH的脚本方法,我没有仔细看过他们的脚本,所以以下只是简单的写点基本原理,如有不对的地方还请指正--:

1.通过触发选择不可见单位,然后判断是否出现取消选择的事件来判断是否使用MH,在开了MH后是不会出现取消选择的事件的.

2.通过在不可见区域创建闪电特效,如果没有开MH不会返回句柄,开了就会有.

3.使用由hyp制作的看见就会造成游戏错误的模型.

"特殊标示类"

说到特殊标示,最先想到的应该是官方的兰色小标志,这一类就是采用各种算法来给地图加上独特的标示,通过标示可以方便的辨认正版地图.

1.官方的签名.

这个不知道有多少人想要破解了,不过现在还没有人成功,而且估计也不可能有人成功

原理:对地图内容进行SHA-1摘要,然后对摘要的结果进行RSA运算,当然懂RSA的人应该知道这运算是要有自己的私钥的,结果是一个260字节的签名,放在地图末尾,在game.dll中有检验这个签名的公钥,只要验证成功就会加上兰色小标志.

知道原理就不难理解为什么这个是不可能破解的了,首先RSA现在还没有破解理论,其次你不可能从暴雪手里偷到那个私钥,因此该签名是目前最保险的防盗版方法.

2.GA的签名.

既然我们不可能从官方得到地图签名,那我们就自己改,通过将game.dll中的公钥修改为自定义的和自己的私钥相匹配的数据,我们就可以做自己的签名了,这就有了GA的补丁,不过确实这种补丁的推广很难,广大玩家并不像地图作者那样需要他......

3.盗版地图删除器.

这个东西的作用不是很大,但毕竟起过一些作用,这里把他放在标示类也有一些原因.

原理:早期的盗版地图删除器如3CORC之类的,是根据地图大小来判断是否正版的,这样做的缺点是每更新一张地图就需要更新一次删除器的列表,比较麻烦.后期我为WOW8制作的删除器是采用类似签名的摘要加密法,不知道原理的情况下很难仿制,而且随便的更改都会造成不匹配,这样只要用删除器对签名进行判断就可以验证是否是正版图,不需要更新列表这种麻烦事.至于算法可以自己随便选择,如MD5,RSA等有名的算法...

4.(attributes)文件.

这个文件是官方检验地图文件是否受损的文件,也是所有改图者必删的文件,否则游戏中就会提示文件错误.

原理:这个文件是按照MPQ中的文件顺序将每个文件的CRC32值,文件时间等数据放入(attributes)中,游戏中进行检验,在MPQ2中应该还包括MD5校验.

这个东西由于一般都被删了所以也没什么作用,不过可以是另外一种盗版地图删除器的判断方法,加入自定义的校验文件(里面包含关键文件的MD5,CRC32等值),然后检查时自动查找就可以了,由于是自定义文件名,也不容易被直接找出来.

我也不知道是不是。

魔兽争霸角色地图防止作弊触发

不能这样设置,推荐两种办法

设置成不能单人游戏的模式

通过一些别的触发来模拟反作弊

比如说如果想设置成不允许输入 whosyourdaddy这条命令

可以现在地图的某个角落放置一个单位,如弓箭手,给他加上蝗虫技能,攻击力设置为100,旁边放置一个敌对的单位X(也可以是中立的),设置最大生命值为1000,每秒回血200,编辑触发1,对弓箭手发布攻击命令对X,再编辑触发2,当X死亡时游戏失败

这样设置好,当正常情况下,弓箭手是永远射不死单位X的(100的攻击力 200的回血),但是,当玩家开启 whosyourdaddy的时候,单位X会被弓箭手秒杀(只有1000的血量),所以判断为作弊,游戏失败

类似以上这种模拟还有很多

望采纳,可追问

魔兽争霸全部秘籍

1.thedudeabides-平静

2.iocainepowder-快速死亡

3.pointbreak-清除食物限制

4.strengthandhonor-无敌环境

5.allyourbasearebelongtous-直接胜利

6.whosyourdaddy-神化模式

7.sharpandshiny-研究升级

8.motherland-选择等级

9.daylightsavings-设定白天的时间

10.thereisnospoon-无限魔法

11.lightsout-设置晚上时间

12.daylightsavings-白昼连续开关

13.greedisgood=黄金木材各加500单位

14.KeyserSoze=加黄金

15.LeafItToMe=加木材

16.PointBreak=加人口上限

17.iseedeadpeople=显示全部地图

18.WhoIsJohnGalt=研发加速

19.WarpTen=快速建筑

20.无敌并一击必杀: whosyourdaddy

21.无限能量: thereisnospoon

22.任务模式里即使失败也继续游戏: strengthandhonor

23.地图全开: iseedeadpeople

24.立即胜利: allyourbasearebelongtous

25.立即失败: somebodysetusupthebomb

26.禁止任务默认的胜利条件: itvexesme

27.加黄金: keysersoze [黄金数量](如果未指定数量默认增加500)

28.加木材: leafittome [木材数量](如果未指定数量默认增加500)

29.加黄金和木材: greedisgood [数量](如果未指定数量默认增加500)

30.快速建造: warpten

31.无人口上限: pointbreak

32.快速研究技能: whoisjohngalt

33.快速升级: sharpandshiny

34.解除科技树限制: synergy

35.将时间直接设定到白昼: riseandshine

36.将时间直接设定到夜晚: lightsout

37.设定具体时间: daylightsavings [小时数]

38.让时间永远停留在白昼: daylightsavings

39.等级选择: motherland [种族] [等级]

扩展资料:

开秘籍常见情况——

1、必须在单人游戏里玩的时候才能用秘籍,在局域网里是不行的。

2、进入单人游戏后,按回车键,会出现发信息的那个对话框,然后输入秘籍即可

3、有的地图是有限制,有的原版RPG图不允许玩家在单机模式下作弊的,有的屏蔽了作弊码,有的作弊就直接游戏结束。

4、全部秘籍大小写均可。

注:GreedisGood+空格+数值=黄金与木材同时增加数值指定的数量,无数值则各增加500。(以上秘籍会增加数值最高为1000000,当数值达到11位数以上时黄金和木材会清零。如果输入一个负的数值,黄金和木材会减少相应的正数值。

PointBreak=取消人口因当前上限值不足而无法生产单位的情况(达到100人口的最大值之后仍然无法生产单位)[人口到达上限时排在造兵建筑序列里的单位仍会被生产出来,此时人口将突破100,但无法继续增加生产序列]

参考资料:百度百科-魔兽争霸3