搜索
发新帖

[攻略秘籍] mpq加密和解密破+解的一些方法

时间:2016-12-8 18:43 2 2701 | 复制链接 |
mpq加密和解密破+解的一些方法

如果用mpqworkshop打不开地图
如果用mpqworkshop打不开地图 说明mpq的文件头被损坏,可以用UltraEdit 32 打开地图,魔兽争霸III的地图就像一个Zip文件。

首先是一个 512 字节大小的地图文件头,它记录了一些信息。然后附带一个MPQ 档案, 这个MPQ 档案中包含了一个地图所需的全部文件。 MPQ 文件的前4个字节是一个标识符。它可以被识别为 ’MPQ’。接下来的4个字节是文件头大小,通常是16进制 hex 0x20 00 00 00的形式。 有些加密者将 20 00 00 00 改成一个随机数值,例如F6 6E BA 76这个样子。 目前多数 MPQ 程序因为大小错误而无法打开这样的 MPQ 档案。而 Warcraft3 似乎忽略了这种错误的文件头大小,所以这些地图仍可以在魔兽中运行。

这种加密只要把数值改回 0x20 00 00 00就可以轻易破+解掉。

然后看到的这些文件都是地图的原始数据我们可以*直接修改它们来达到修改地图的内容。
下边是一些有用的文件的列表
war3map.w3u 单位
war3map.w3t 物品
war3map.w3b 可破坏的
war3map.w3d 地形装饰物
war3map.w3a 技能
war3map.w3h 魔法特效
war3map.w3q 升级
等等,这些都是地图的基本设置文件,我们可以用WE中的物品编辑器直接导入进行编辑。
war3map.wtg 触发事件
这个是保存各种触发事件的地方。我们在地图里搞装备合成,刷怪,作任务等,都是依*触发指令来完成的。但是一般的加密地图都把war3map.wtg和war3map.wts删除了。
war3map.j jass数据库
这个是地图的核心,所有跟地图设置有关的资料如地图摆放的建筑物、角色、技能、触发事件的指令等等,只可惜是用jass语言保存的。如果你懂jass的话可以在这个文件里任意改动任何数据。包括触发指令。
war3map.shd 地层数据
war3map.wpm mp3,wav等媒体文件的设置
war3mapPreview.tga 地图缩略图
war3mapmap.blp 图形文件的设置
war3mapmisc.txt 游戏平衡常数

下边是最重要的,因为很多人把文件修改完以后都不知道该怎么还原。
我们现在就要用到mpqediten或MPQWorkshop了
新建一个MPQ文件,然后把那些文件全部添加进去再保存。
现在你们得到一个MPQ文件了。下一步是添加w3x地图文件的文件头
用UltraEdit-32随便打开一个w3x魔兽地图文件和自己的mpq文件。
对比一下,就会发现w3x文件比MPQ文件多了一个16字节的文件头
后边的事我不用说了吧,w3x文件中复制,然后在MPQ中粘贴这个16字节的文件头,然后把后缀名MPQ改成w3x就可以了。
修改地图就是这么简单,欢迎大家修改地图,尤其是好地图。


==============分界綫是必須的==========================
WE] 谈加密地图的原理,破+解加密地图的可能及研究加密地图的方法

1.不可还原式删除加密, 即破坏性加密
说明: 这种加密难度小, 方法简单, 比较常用
原理: 魔兽的地图是一个mpq压缩文件, 里面存放了一些游戏中和WE中要用的数据, 其中一部分数据是只有WE要用而游戏时不要用的, 我们可以将它们移掉, 造成启动WE无法读到相关数据
方法: 1.用Import Manager导入这些文件的替代空文件2.用mpq工具删掉这些文件
破+解可能: 由于需要的文件已经被移掉, 而Jass->Trigger的还原难度非常大, 所以基本不能完全还原原来的地图

2.可还原式移动加密
说明: 这种加密比较复杂, 但可以利用一些密钥还原
原理: 根据上面一种方法的原理, 我们把地图里的一些文件改名为特殊的文件名或者移动到特殊的目录去, 并且删掉(listfile), 这个文件是用于获取mpq格式的文件里面的文件列表的, 这样WE也无法读取到这些文件从而无法启动
方法: 根据一定的算法把密钥哈希成一个字符串, 然后把文件改名或者移动到用这个字符串生成的文件名里. 还原时只要有密钥就可以找到移动后的文件并还原
破+解可能: 这些算法通常是md5等不可逆算法, 或RSA等大素数可逆算法, 加上我们根本连移动或改名后的文件名或路径都不知道, 基本很难破, 除非你知道密钥

3.可还原式破坏WE显示加密
说明: 该方法简单但如果被知道了了方法很容易破+解
原理: WE启动时和读取地图时会读取一些模型, 音乐, 贴图等, 如果我们导入一些错误的文件, 在WE读取时会先读地图里的文件, 就会因为这些错误的文件而出错
方法: 我自己不太清楚可以导哪些文件, 大家可参考以前的一些帖子
破+解可能: 如果你知道这个方法, 那么只要从地图里删除坏文件就可以了
然后讲一下几个加密中会用到的技巧:
1.删掉(listfile), 这样别人不能看你的文件列表, 无法知道你的加密方法
2.把war3map.j移动到Scripts\\目录下, 这样仍然被游戏读取, 但是一般人不知道就会无法解压出这个文件
3.针对一些mpq工具可能会将文件头部的一个数改掉导致mpq工具无法处理, 通常offset是0x218, 用16进制工具把这个位置改为20 00 00 00即可还原

最后讲一下如何研究加密的地图:
1.学会Jass语言《jass使用教程·基础篇》
2.用mpq工具解压出war3map.j(如果没有则参见上面的第二条解压Scripts\\war3map.j), 注意如果mpq工具如果不能读取则按照上面第3条的做法修复文件头
3.结合所学的Jass看war3map.j, 就能知道对方地图的处理过程
4.关于地形的获得我还没有好办法, 我把别人的地形文件导进自己的地图会出现读取错误, 估计是有些选项必须符合, 考虑到有些人加密地图就是为了保护地形不让别人"盗版", 所以我也没有多做研究, 只要知道war3map.j的内容就可以学习别人所有的地图处理过程了
总结一下:
解密是很难的, 但是可以通过解压war3map.j来分析别人的地图, 希望这篇文章对大家关于加密解密的争论能给出一个理论依据.

2回复

qq_1490526872 发表于 2017-3-26 19:22:44 | 显示全部楼层 | 举报
::@:@:@:@:@:@:@
快速回复 2 返回列表 返回顶部