zoukankan      html  css  js  c++  java
  • 逆向实战 | galgame的汉化研究(新坑)

    开新坑了属于是

    主要是在看雪上面看到了这样一个文章:https://bbs.pediy.com/thread-259962.htm
    看的时候觉得很简单,亲手操作的时候人都麻了,每个游戏都不太一样,我直接用的我手头的资源去尝试的。

    我选择的是Clannad,程序本身加了壳,我没仔细研究这个的脱壳,就想着看一下能不能直接汉化。
    主要的游戏目录是这样的:(因为我是用的别人汉化过的版本卸载汉化进行尝试的,所以其实可能跟原版有区别)
    image

    主程序就是RealLive.exe,没有别的dll,直接莽。
    先把游戏跑起来,然后上CE(CEyyds):
    image
    一不小心按到快进了,不过没关系,咱直接搜这个字符串就行。
    这里有个大坑,CE默认不搜代码段,但是由于存在加壳,所以管他是啥全都搜一遍,记得勾选codepage:
    然后依旧搜不到,没有关系,因为是按gbk搜的,应该要按sjis才行,所以我直接用编辑器新建了个txt然后保存编码为sjis然后搜这个字符串的hex就可以了。
    image

    非绿色基址的部分就是我们要找的字符串资源文件的位置了!

    验证的方式也很简单,就是Browse the Memory region,然后找一点别的字符串拿出来验证一下:
    比如说我们把这一整串拿出来读一下:

    image

    88 EA 96 CA 81 41 94 92 82 A2 90 A2 8A 45 81 63
    用hex形式写进去然后用sjis读取:

    image

    非常nice:

    image

    可以再找点扩展ascii的片段试一试:

    image

    基本上可以说我们找到了目标在内存中的位置,然后下硬件断点进行调试就好了。

    这里还是继续用CE,找下面的句子然后查看内存访问:

    image

    我猜测的关键点是这一句,不是也没关系,先看一看:

    image

    对这个部分下断点,然后点击游戏窗口,捕获断点,直接在ecx的位置找到下一句话的地址(如上图红色部分)

    之后就可以换其他调试器顺藤摸瓜去找解密函数的部分了。

    这里引用devseed师傅的一句话:“其实汉化游戏我们甚至可以不管它用了什么加密,直接hook这里然后替换为其他缓冲区。
    但是这样就没有分析的意义了,为了练习和游戏封包兼容性,我们最好还是要去分析算法。”

    所以还是要认真点去分析一下比较好。

    (今天就写这么多,有空继续23333)

    本文来自博客园,作者:Mz1,转载请注明原文链接:https://www.cnblogs.com/Mz1-rc/p/15371247.html

    如果有问题可以在下方评论或者email:mzi_mzi@163.com

  • 相关阅读:
    MySQL性能调优语句
    APP测试
    JForum项目搭建
    Bug的等级及定位
    mysql any和all的用法
    mysql产生随机数
    MySQL存储过程例子
    【转】 卡特兰数
    牛客小白月赛5 I 区间 (interval) 【前缀和】
    牛客小白月赛5 D 阶乘(factorial) 【前缀】
  • 原文地址:https://www.cnblogs.com/Mz1-rc/p/15371247.html
Copyright © 2011-2022 走看看