逆向实战 | galgame的汉化研究(新坑)
开新坑了属于是
主要是在看雪上面看到了这样一个文章:https://bbs.pediy.com/thread-259962.htm
看的时候觉得很简单,亲手操作的时候人都麻了,每个游戏都不太一样,我直接用的我手头的资源去尝试的。
我选择的是Clannad,程序本身加了壳,我没仔细研究这个的脱壳,就想着看一下能不能直接汉化。
主要的游戏目录是这样的:(因为我是用的别人汉化过的版本卸载汉化进行尝试的,所以其实可能跟原版有区别)
主程序就是RealLive.exe,没有别的dll,直接莽。
先把游戏跑起来,然后上CE(CEyyds):
一不小心按到快进了,不过没关系,咱直接搜这个字符串就行。
这里有个大坑,CE默认不搜代码段,但是由于存在加壳,所以管他是啥全都搜一遍,记得勾选codepage:
然后依旧搜不到,没有关系,因为是按gbk搜的,应该要按sjis才行,所以我直接用编辑器新建了个txt然后保存编码为sjis然后搜这个字符串的hex就可以了。
非绿色基址的部分就是我们要找的字符串资源文件的位置了!
验证的方式也很简单,就是Browse the Memory region,然后找一点别的字符串拿出来验证一下:
比如说我们把这一整串拿出来读一下:
88 EA 96 CA 81 41 94 92 82 A2 90 A2 8A 45 81 63
用hex形式写进去然后用sjis读取:
非常nice:
可以再找点扩展ascii的片段试一试:
基本上可以说我们找到了目标在内存中的位置,然后下硬件断点进行调试就好了。
这里还是继续用CE,找下面的句子然后查看内存访问:
我猜测的关键点是这一句,不是也没关系,先看一看:
对这个部分下断点,然后点击游戏窗口,捕获断点,直接在ecx的位置找到下一句话的地址(如上图红色部分)
之后就可以换其他调试器顺藤摸瓜去找解密函数的部分了。
这里引用devseed师傅的一句话:“其实汉化游戏我们甚至可以不管它用了什么加密,直接hook这里然后替换为其他缓冲区。
但是这样就没有分析的意义了,为了练习和游戏封包兼容性,我们最好还是要去分析算法。”
所以还是要认真点去分析一下比较好。
(今天就写这么多,有空继续23333)
本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/15371247.html
如果有问题可以在下方评论或者email:mzi_mzi@163.com