首页
社区
课程
招聘
[原创]浅谈Delphi程序的汉化
发表于: 2009-6-23 23:27 22841

[原创]浅谈Delphi程序的汉化

2009-6-23 23:27
22841

英文程序的汉化是一个枯燥、幸苦的体力活,但是我深深的喜欢上了这个过程,虽纯粹是爱好,但是一直自得其乐,沉醉其中,体会那别样的酸甜苦辣。
     成功汉化一个程序的前提是确保目标软件没有加密,所以首先是检查软件是否被加密。我已刚刚汉化的一个程序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已被成功汉化,

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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
嗯,支持原创,支持与人分享经验。
2009-6-25 18:13
0
雪    币: 14
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错,学习了,呵呵
2009-6-26 01:20
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LZ 能不能把这个发出来。我也想练习一下哟。。。

谢谢楼主小哥咯。。。
2009-8-16 09:14
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
以前也接触了下汉化,跟楼主比真是小孩过家家
2009-10-10 16:11
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
非常棒,好羡慕,努力学习中!
2010-3-13 07:41
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不错,学习了,呵呵
2010-4-7 04:47
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习学习~~~~
2010-4-7 06:22
0
雪    币: 602
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
喜欢楼主的软件
2010-4-7 08:00
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
向楼主学习,汉化的很全面!
2010-4-7 19:09
0
雪    币: 104
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
汉化,我想学
2010-8-12 15:40
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习了  支持 楼主
2010-9-15 10:13
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这里的图片能从新处理下吗?或者再做个图文教程,我想学习下这个汉化。。。。
2010-9-22 10:04
0
游客
登录 | 注册 方可回帖
返回