BUG&心得分享
强悍的MPQ加密 - CMP Debugger 1.72
[ 2010/02/14 17:00 | by mayafei ]
进下午尝试解密一个地图.N次尝试后泪奔...
1、Winmpq直接Crash
2、MPQEditor无list打开直接Over
3、StormLib尝试读scenario.chk,文件不存在!
4、Mpq2K直接Crash
两个字:无语!
最后用REP还原地图,得到加密信息:CMP Debugger 1.73
立刻跑去Google了一下。。。。果然强大啊。。。
想了半天也没搞懂。。。scenario.chk咋个就不存在了呢???
谁愿意研究就去下个看看:
http://www.mayafei.cn/read.php?226
(加密后电脑里有Rexplore的话,可能会导致explorer.exe崩溃!!)
1、Winmpq直接Crash
2、MPQEditor无list打开直接Over
3、StormLib尝试读scenario.chk,文件不存在!
4、Mpq2K直接Crash
两个字:无语!
最后用REP还原地图,得到加密信息:CMP Debugger 1.73
立刻跑去Google了一下。。。。果然强大啊。。。
想了半天也没搞懂。。。scenario.chk咋个就不存在了呢???
谁愿意研究就去下个看看:
http://www.mayafei.cn/read.php?226
(加密后电脑里有Rexplore的话,可能会导致explorer.exe崩溃!!)
浅谈星际争霸地图MPQ解密
[ 2009/11/27 18:50 | by mayafei ]
现在星际地图加密越来越BT,已经涉及到了MPQ,这给想手动解密的朋友带来了麻烦,今天就专门谈一下两种MPQ解密思路
众所周知,MPQ加密的目的就是为了干掉ShadowFlareMPQ,因为它太过于普及了(现在基本上编辑MPQ的工具都用的这个)。
我们现在的目的是解密MPQ,把里面的文件解压出来。下面,我就给大家提供2个常用的思路:
1、Rep还原法
这个方法最简单,也很实用。只需要下载一个Rep2Map,方法是这样的:
1、用网络模式创建一张地图,模式只要能进游戏即可。
2、进游戏后马上退出(是Quit Mission不是Exit Program),显示战绩时保存Replay(Save Repaly)
3、打开Rep2Map,将刚才保存的Rep还原为地图,此时保存的地图就没有受到任何保护!可以直接用Winmpq打开并提取scenario.chk
但此方法有个很大的缺点:就是音频文件的问题,你必须在游戏中听到了这个音频后,保存的Rep中才会包含这个音频文件!
2、Storm.dll读取法
这个方法是最无敌的,只要地图能读,那就能解密!对于所有MPQ都有效!步骤如下:
1、下载这个工具:MPQ Extractor
2、进去后选择地图,然后按解压、保存,scenario.chk就解压出来了
如果地图里有外部音频:
打开scenario.chk,从STR字段找到WAV文件路径(staredit\wav\*****.wav),再在这个工具的“解压文件名”框中填上这个路径,将外部WAV文件解压出来
接下来的事情,就自己去搞吧,解密完了用Winmpq再压缩成mpq即可。
总结:其实MPQ加密大多是针对Shadow,我们只要不用Shadow用其他的的工具就可以了!当然,用storm.dll才是王道
众所周知,MPQ加密的目的就是为了干掉ShadowFlareMPQ,因为它太过于普及了(现在基本上编辑MPQ的工具都用的这个)。
我们现在的目的是解密MPQ,把里面的文件解压出来。下面,我就给大家提供2个常用的思路:
1、Rep还原法
这个方法最简单,也很实用。只需要下载一个Rep2Map,方法是这样的:
1、用网络模式创建一张地图,模式只要能进游戏即可。
2、进游戏后马上退出(是Quit Mission不是Exit Program),显示战绩时保存Replay(Save Repaly)
3、打开Rep2Map,将刚才保存的Rep还原为地图,此时保存的地图就没有受到任何保护!可以直接用Winmpq打开并提取scenario.chk
但此方法有个很大的缺点:就是音频文件的问题,你必须在游戏中听到了这个音频后,保存的Rep中才会包含这个音频文件!
2、Storm.dll读取法
这个方法是最无敌的,只要地图能读,那就能解密!对于所有MPQ都有效!步骤如下:
1、下载这个工具:MPQ Extractor
2、进去后选择地图,然后按解压、保存,scenario.chk就解压出来了
如果地图里有外部音频:
打开scenario.chk,从STR字段找到WAV文件路径(staredit\wav\*****.wav),再在这个工具的“解压文件名”框中填上这个路径,将外部WAV文件解压出来
接下来的事情,就自己去搞吧,解密完了用Winmpq再压缩成mpq即可。
总结:其实MPQ加密大多是针对Shadow,我们只要不用Shadow用其他的的工具就可以了!当然,用storm.dll才是王道
当今地图制图的几大误区
[ 2009/09/05 20:51 | by mayafei ]
上高三了,以后不能常来了。。。因此今天有必要把需要说的全部说了。。
如今,中国星际争霸的版本基本为1.08b(比赛使用1.13f),当然这在世界上是落后了很多,目前国外最新为1.16.1。因此这给地图制作者们带来了很大的麻烦,因为国外很多技术在中国的1.08b上不是Crash就是没效果。然而在麻烦带来的同时,也带来了很多误解,今天我就在这说下这几大误区
№.1 Scorel触发中Kill项的误解
这个误解可以说是最厉害的,很多制图高手都有!一些高手甚至说那是BUG,实际上这根本不是BUG,只是误解那个数字的含义了。
中国制图者常喜欢这样做来实现“杀怪加钱”,然后就抱怨必须要Set to 0才可以避免一直加钱,但同时杀了2个又只加一个怪的钱:
其实事实并不是这样的。我也看了一些制图的技术文章,作者都大多将数字理解为杀敌个数,实际上这是错误的。
如今,中国星际争霸的版本基本为1.08b(比赛使用1.13f),当然这在世界上是落后了很多,目前国外最新为1.16.1。因此这给地图制作者们带来了很大的麻烦,因为国外很多技术在中国的1.08b上不是Crash就是没效果。然而在麻烦带来的同时,也带来了很多误解,今天我就在这说下这几大误区
№.1 Scorel触发中Kill项的误解
这个误解可以说是最厉害的,很多制图高手都有!一些高手甚至说那是BUG,实际上这根本不是BUG,只是误解那个数字的含义了。
中国制图者常喜欢这样做来实现“杀怪加钱”,然后就抱怨必须要Set to 0才可以避免一直加钱,但同时杀了2个又只加一个怪的钱:
Trigger("Player 1"){
Conditions:
Score("Current Player", Kills, At least, 1);
Actions:
Set Score("Current Player", Set To, 0, Kills);
Set Resources("Current Player", Add, 1, gas);
Preserve Trigger();
}
Conditions:
Score("Current Player", Kills, At least, 1);
Actions:
Set Score("Current Player", Set To, 0, Kills);
Set Resources("Current Player", Add, 1, gas);
Preserve Trigger();
}
其实事实并不是这样的。我也看了一些制图的技术文章,作者都大多将数字理解为杀敌个数,实际上这是错误的。