2019-2-15 15:10 /
过几天要闭关了,几率解决程序问题。把这段时间做的程序分析放一下,有需要的可以来看看,我尽量把内容写简单点,让一些不懂程序的人也能看懂。
(图片就懒得放了)
Malie这玩意儿说实话光是解包就麻烦,新版的引擎把文本封在data.dat里的exec.dat,直接看的话是能够看到明文的,剩下的就是二进制分析提取明文就可以了(不过也有人说检测文本里的shiftjis字符然后批量提取也可以,我没去试过,有兴趣的朋友自己去试吧)。
不过部分游戏系统的脚本应该还残留在exe里面,澄空学院里面有人解析了封包解包方法,自己去看。
图片的话除了遮片以外其他的全部处理了,首先图片是被加密了的,不过鉴于有工具解密我也没去追加密算法了。其次是处理后的图片太恶心了,图片被分成一块一块的,根据拆分法则的不同分别放在0、1、2三个文件夹内,如果要处理图片的话建议三个都要做,因为引擎在调用时会按着顺序去读取这三个文件夹。
封包就按着原来的解包的过程逆运算就可以了,不过注意的是Malie读取封包不一定要对封包做加密处理(貌似加密和不加密的封包都可以被读取)但是注意封包内文件排列模式要和原封包内相同,哪些文件在哪个文件夹里要保持相同,不能随便乱丢。
然后是一些细节处理。
Malie唯一让我欣慰的就是不用去改字体函数,在malie.ini里面可以直接修改(注意如果要添加自己的字体的话要把自己的字体转成otf文件,放在data/font文件夹内然后一起封包),甚至还可以修改标题(事实上还有很多参数可以修改自己去看吧,注意保存malie.ini时要用GB2312编码保存,否则会乱码)。
啰嗦了那么多后,我想说的重点来了,汉化信息保护以及补丁制作。
首先说我个人的原则:保证游戏体验优先,能不覆盖原文件就不覆盖,按需求制作补丁,少添加花样。
也就是说做出来的补丁不能破坏游戏体验(致命bug,游戏卡死等是NG的)。保留原文件,使想玩原版的玩家能够方便点。按着需求来制作补丁,尽量少添加其他内容。
然后就是制作方法。
我比较喜欢的就是通通封进exe,顺便再加一层硬壳,好处就是简单,快。不过这就要建立在你对程序读取顺序的了解举个例子:Malie读取封包方式是遍历文件夹,从data9.dat依次向下读取,如果有就读,没有就跳走。那么汉化内容打包就简单了,直接在封包后面加个大于1的数字就OK了。
然后利用一些打包工具把主程序和封包一起打包就OK了(不过要注意封装时文件夹的设置,否则会读不到原来的包导致崩溃)。
不过这样做就有可能导致一个结果:程序负载量变大。还是举个例子:Malie我这么去打包了后,运行游戏就会卡,甚至出现了假死的现象。这是因为Malie读取文件方式导致这个问题。
然后第二种方法就是hook程序内部函数,定向到汉化文件的封包,然后写loader机制。
这种方法最大的好处就是,你可以自己选择你喜欢的加密算法和压缩算法去封包,然后再让游戏读你的封包,并且负载量不会有太大的变化。
不过前提就是你的编程基础过硬。
例子可以参考Xmoe汉化的一些游戏,以及ADVHD的一些汉化游戏。
其他的也没什么了,再也不想碰Malie这个玩意儿了。