飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3774|回复: 4

[转贴] 浅谈Delphi程序的汉化

[复制链接]
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-5-5 09:25:42 | 显示全部楼层 |阅读模式
    标 题: 【原创】浅谈Delphi程序的汉化
    作 者: daokers
    时 间: 2009-06-23,23:27:47
    链 接: http://bbs.pediy.com/showthread.php?t=92143

    英文程序的汉化是一个枯燥、幸苦的体力活,但是我深深的喜欢上了这个过程,虽纯粹是爱好,但是一直自得其乐,沉醉其中,体会那别样的酸甜苦辣。
         成功汉化一个程序的前提是确保目标软件没有加密,所以首先是检查软件是否被加密。我已刚刚汉化的一个程序HFS为例子来说一下程序汉化的大概过程。
        首先用DIE或者peid查壳

    程序被UPX 2.0压缩,可用peid的通用脱壳机插件脱壳之,用UPX的解压工具脱壳体积小些。
    脱壳后软件运行界面

    脱壳后就可以直接对资源进行编辑了,对于delphi程序我建议使用Multilizer来汉化标准资源,其读取RC数据的功能十分强大。

    最后记得保存或者导出项目文件,下次更新时就不用逐个翻译了,直接使用就可以自动翻译。
    现在软件的界面

    可以看到已经汉化了很大部分了,怎么还显示有英文呢,哈哈,现在就到了非标准资源汉化了。这里推荐大家使用Athena-A来搞定非标准资源,这个软件的功能叶非常强大,支持字典,这点比狂风汉化百宝箱好多了。打开Athena-A,新建项目,选择ASCII。

    这个软件的字典提取,编辑,自动翻译等等功能都设计的非常巧妙、灵活,俺很喜欢,用活了这个软件可以省很多功夫。

    经过这一步汉化后,看看现在的软件界面

    或许您已发现还有一个地方没有被汉化,那就是“Log”这里,他的意思是”日志“,”日志“为四个字节,而“Log”有3个字节,很明显汉化所需位置不够,所以Athena-A无法替换,在这里怎么办呢? 我们采用修改Log的RVA来解决。
        打开16进制编辑软件,比如UltraEdit,将上面汉化的软件拖入UltraEdit。点击查找"虚拟文件系统",来到“Log”附近。

    查看这段代码,可以发现这样一个特点,我们可以拿“虚拟文件系统”和“Log”2个字符的16进制代码来比较,字串之间以00间隔,而且只能以一个00间隔,D0 E9 C4 CE C4 BC FE CF B5 CD B3是虚拟文件系统的十六进制代码,在它的前一个字符间断符00后的代码是FF FF FF FF 0C 00 00 00 00,而在Log的前一个间断符号后的代码是FF FF FF FF 03 00 00 00,和上面的非常相像,并且仔细看看,03不正是Log的长度吗,0C不正是“虚拟文件系统”的12字节长度吗?同时可以发现,在“虚拟文件系统”和“Log”之间除了间断符外有很多剩余的空间,既然有这个特点,那么我们将“Log”前的FF FF FF FF 03 00 00 00代码前移,为后面的汉化腾出空间,并且输入“日志”,现在成了这样

    代码前移时切记一定要留下一个00做字符间隔符号,“日志”为4的字节03改为04,输入“日志”确保后面有00间隔符。现在是不是就行了呢?还没有呢,还需要修改调用这个字符的RVA。我们先查看调用"LOG“的RVA是多少,鼠标停在”L“处,在下面状态栏显示字串的实偏移。

    打开点睛偏移量转换器,可求出调用RVA

    RVA=C0EB5200
    同样的办法求出”日“第一个字节的RVA,RVA=BADF5200
    现在就搜索十六进制的C0EB5200,修改为BADF5200就ok了


    原来就在上面不远,修改后现在另存为,
    现在的软件界面

    咦,LOG已被成功汉化,

    至此,这个软件就被完全汉化了,希望能抛砖引玉,^_^。

    [ 本帖最后由 whypro 于 2010-5-5 09:32 编辑 ]

    评分

    参与人数 1飘云币 +40 收起 理由
    月之精灵 + 40 讲汉化的不多哈,

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-5-5 13:03:01 | 显示全部楼层
    我说过要来学习的,先保存,晚上练习一下,不过我的 E 文不是一般的烂,估计能用上的时候很小 /:013
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-5-5 17:20:56 | 显示全部楼层
    对我来说,E文早还给老师了,不过还是想学习学习。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2010-5-5 21:48:39 | 显示全部楼层
    lgjxj,请给我如种子破土而出般的坚定的力量和坚强的决心吧。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-5-6 10:21:31 | 显示全部楼层
    你就是未来的牛人啊,我真的很佩服你的学习精神,远非我所及  (我说真的 )
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表