什么是地图加密
地图加密就是通过特殊方法破坏地图文件,使它可以在魔兽中运行,却不能被World Editor读取。
目前有哪些加密方法
现在已有很多种加密War3地图的方法。
1: 破坏 MPQ 文件头大小信息
魔兽争霸III的地图就像一个Zip文件。 首先是一个 512 字节大小的地图文件头,它记录了一些信息。然后附带一个MPQ 档案,
这个MPQ 档案中包悄亏含了一个地图所需的全部文件。 MPQ 文件的前4个字节是一个标识符。它可以被识别为 ’MPQ’。接下来的4个字节
是文件头大小,通常是16进制 hex 0x20 00 00 00的形式。 有些加密者将 0x20 00 00 00 改成一个随机数值,例如hex 0xF6 6E BA 76这个
样子。 目前多数 MPQ 程序因为大小错误而无法打开这样的 MPQ 档案。而 Warcraft3 似乎忽略了这启物神种错误的文件头大小,所以这些地图
仍可以在魔兽中运行。
这种加密只要把数值改回 0x20 00 00 00就可以轻易破解掉。
为了能够正常打开地图并提取文件信息,本网站(wc3sear.ch)将自动修复这类加密文件。
(译者:这一段的术语翻译可能并不正确,因为我对文件结构本就知之甚少。望谅解)
2: 删除地图内的 war3map.wtg文件
war3map.wtg 文件中包含了地图中所用到的变量,触发,数组等必需信息。但这个文件只对World-Editor有用。
war3map.wtg 文件丢失或者被改动都将导致 World-Editor 无法读取地图。
当然,这种加密也可以完美地解除。 通过一个小程序你就可以利用war3map.j 文件中蚂唯存储的信息来重建 war3map.wtg 文件。
本网站忽略掉war3map.wtg 文件,而是直接从war3map.j 文件中提取诸如触发数目,变量数目等信息。
你可能注意到,既然一个简单的 PHP 脚本就可以提取出 war3map.j,那么使用其它脚本就有可能重建war3map.wtg 文件。
2b: 删除 war3map.w3c, war3map.w3s, war3map.w3r 文件
war3map.w3c 存储了world editor的镜头设置。 war3map.w3s 存储了world editor在地图中所设置的声音。 war3map.w3r 存储了world editor中的区域设定。
这几个文件同样只对World Editor有用,而且同样可以通过 war3map.j 文件进行重建。参见上面的 “删除地图内的 war3map.wtg 文件“ 。
3: 隐藏 war3map.j 文件
有些耍小聪明的加密者找到了隐藏 war3map.j 的办法,这样我们就无法用一个网页脚本来轻易将它解出了。
正规的地图中 war3map.j 是直接保存在根目录里的。而这些加密者发现把它移动到 “Scripts\“下面也可以正常运行。
只要知道了这一点,就很容易破解这种加密 -) 非常感谢 BahamutZERO 和Quantam 帮我解决这种方法。
4: 打乱war3map.j 文件
有些加密者认为自己很聪明,他们用随机数字重命名了所有的变量和函数。这使常人很难读懂 war3map.j 文件。但这对脚本是不起作用的。
我为这个网站所写的脚本根本不在乎关键字,它只搜索模式,所以我仍然可以从地图中提取我所需要的信息 -)
只要借助能够重建 war3map.wtg 的脚本,这种加密方法同样可以破解。恐怕你唯一没法改变的就是已经重命名的变量和函数。
但这并不重要,因为你仍然可以用world editor打开它。 -)
加密的安全性如何
正如你所读到的,地图加密也许可以避免菜鸟们用world editor打开你的地图。
但事实是只要魔兽可以运行你的地图,就有办法修复它,从而可以用 World Editor打开它。
地图加密的利弊
有利面:
- 让菜鸟们不能打开你的地图并篡改它。
- 让你显得很聪明
- 因为删除了某些文件而使地图变小。
不利面:
- 它实际上是没用的
- 大家不能研究你的地图
- 自己丢失原版后将无法对地图进行修改
就我所知,魔兽地图还有很多加密方法,解密的方法也各不相同.这个只是范例.
主要分3种加密
谈加密地图的原理, 破解加密地图的可能及研究加密地图的方法
1.不可还原式删除加密, 即破坏性加密
说明: 这种加密难度小, 方法简单, 比较常用
原理: 魔兽的地图是一个mpq压缩文件, 里面存放了一些游戏中和WE中要用的数据, 其中一部分数据是只有WE要用而游戏时不要用的, 我们可以将它们移掉, 造成启动WE无法读到相关数据
方法: 1.用Import Manager导入这些文件的替代空文件 2.用mpq工具删掉这些文件
破解可能: 由于需要的文件已经被移掉, 而Jass-
第一章 关于MPQ的历史
MPQ,也称MoPaQ,是Mike O'Brien发明的一种压缩文件格式。
在1996作为,MPQ应用在Diablo(暗黑破坏神)游戏中。
然而它的版权属于 Blizzard 的父公司 Havas Interactive,并且在Mike O'Brien离开暴雪后继续使用。正是MPQs由于在Diablo(暗黑破坏神)中的出色表现,使其继续应用在Starcraft(星际争霸), Warcraft 2(魔兽高液争霸2), Diablo 2(暗黑破坏神2), Lords of Magic(魔法大帝)中。
第二章 关于MPQ的介绍
MPQ内部包含了许多文件,包括坐标算法、声音、动画、字符串、数字数据和故事情节信息。
明显地,MPQ的潜力很大。要想利用MPQ,那么您就需要了解它。
在有MPQ格式之前,一直使用的是WAR格式,在Warcraft 2,甚至在Warcraft1中存放游戏数据。然而WAR格式是简单的,不精制的,是由缺乏经验的程序员所编写的文件格式(相信我,我知道)。文件在档案中仅使用参考序数和是否被压缩做为唯一可选择调用的方法。
尽管如此它仍然完成了它的任务。它提供了压缩格式下的文件调用。但是,很快缺点开始出现。调用凳坦时使用参考序数,意味着一长传文件接口的名单必须被保留和被咨询,当程序员需要使用其中一个文件,那么则需要级长的时间,工作变得越来越繁琐。
当时这些问题并没有那么严重,所以有人坚持使用WAR格式,但是一切在使用Battle.net(网络对战)后,问题变得不能接受。
MPQ的特点
如被提及以前,MPQ格式一直被用做修正WAR的设计缺陷。但是现在他们也想增加一些全枣念桐新的特点到MPQ。在暴雪的游戏中,MPQ格式的特点总结为以下几点:
Security. 安全
暴雪一定不希望在游戏中玩家可以修改数据。或许他们提早知道MPQ格式可以为Starcraft使用。不管怎样,安全是最重要的,由此他们显然做了级大的努力去维护游戏的安全性。
Efficiency. 效率
MPQs要求执行时先简单预先输入的各种各样的任务数据然后实时放出。对于预先输入数据,时间并不重要。但是实时放出就是另一件事了,其中的数据必须快速地被解压使用。
Multilinguality.多语言的计算机处理
在最开始的时候,暴雪就计划发布其游戏在全球游戏市场,因此他们尽可能的做到多语言。在创新时,他们决定设计多语种能写入MPQ格式。
。
Expandability.扩展
显然的,在游戏中需要使用独立的数据。太大的数据不仅是效率低并且减慢游戏速度,如果补丁修改了,也是很麻烦的。暴雪明白这个道理,因而MPQ格式的要求就是有能力完全,高效率的,从多个档案数据中调用需要的数据。
什么是strom
相比在程序模块中复制函数,多数程序员喜欢把相同代码放到shared libraries(共享程序库)里。shared libraries是包含了任意程序功能的函数模块。不仅能避免多余,并且能缩小程序大小。
正因为如此,暴雪使用一个称为Storm的共享程序库(PC机上为Storm.dll,MAC机为Storm.bin)。
所有现代的暴雪游戏中都使用strom存放重要功能,比如读取MPQ,Battle.net和一些图形化例程。
当暴雪要发布新版本的游戏,只需要增加功能到strom,无需改变原有功能。这意味着旧版本的游戏只用升级新版本strom就可以了,这就是我们俗称的安装补丁。
就像所有共享程序库,任何想使用它的程序都可以访问到它的函数。这就是为什么strom只包含MPQ读取功能。
什么是 MPQ API Library DLL
虽然 Storm 没有包含任何编写MPQ的功能。
但是 StarEdit 包含,因为 SCM/SCX 文件也是 MoPaQ文件。
但是这些函数被加密了,所以只有知识渊博的黑客们才可以使用。
对于Blizzard 来说不幸的是,有一个这样的黑客,他的名字是 Andrey Lelikov(aka Lelik)。
他发现了一种访问这些宝贵的函数的途径,并把这个复杂的过程封装在
LMPQAPI.DLL(Lelik's MPQ API Library DLL)文件中。该文件自动破解
StarEdit,将这些函数展示在所有的程序员面前。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)