之前我写过一个“RGSSAD终极解包器”,可以自动猜测RM加密包的初始MagicKey,并进行解包。那个解包器缺点很多,本来一开始做的时候,有考虑加入智能猜测内部文件、抗文件名混淆等,但考虑到没有什么意义,最终没有做。而且以后也没有打算再更新。
其实不管rgssad_wx也好,catpaws也好,都是运用和RM默认读取加密资源包的相同算法来解包的。要防止这些工具解包,单单修改初始的MagicKey是还不够的。所以如果想防止被人用这些工具解包,最好的办法就是更改打包结构了。
而更改打包的结构不是不可能,但是我相信一般人不会去做那种吃力不讨好的事情。其实有一个最简单的办法,就是修改MagicKey的变形公式,同样能避免被默认算法解包。
打包的函数在地图编辑器exe里,解包的函数呢,则是在rgssxxxx.dll里。我是用OllyDBG打开的脱壳后的文件,搜索下面列的代码块。
RMXP的MagicKey变形函数,在exe和dll里都各有4处(分别是加密文件名长度、加密文件名和加密文件数据……)。变形公式大概如下: