·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 非标汉化 >> 关于DLL文件基地址以及ASCII字符的汉化修改    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

关于DLL文件基地址以及ASCII字符的汉化修改

作者: 伟乾 来源:汉化教学 时间:2003-07-31 点击:13766

小经验
关于DLL文件基地址以及ASCII字符的汉化修改
(伟乾)

    自从使用了明白的代码转换器之后,相信大家对.exe文件中的ASCII字符的调整修改都已经非常熟悉了。明白《汉化ASCII字符串的高级技巧》文章中提到一些调用的DLL文件的基地址是不同的,但是没有具体的实现方法。最近作的几次关于Opera的汉化中,由于该软件增加了一个新的DLL来加强它的电子邮件功能,而这个DLL的ASCII汉化就让我一直头痛。其中汉化一个界面"邮件"/"查找",里面的几个字符,比如"&Find",都是ASCII字符,而且变成中文后位置不够使用,结果就成了下面的样子:

    在这次汉化中,使用明白的代码转换器之后无法找到相应的调用地址,因此无法完美的汉化修改。

    其实问题的关键是如何找到有关DLL的基地址!
    于是伟去问了梁利锋兄,得到回信:
    “对于明白的文章中关于字符的偏移量的问题,他说的对于exe文件有效,但对于.dll就不行,我想应该是因为基地址不同造成的。一般的,C 写的 EXE 文件的基地址总是 400000h ,不过对于 DLL ,只有少数的基地址是 400000h ,关于基地址,可以使用 fi ,gtw 或 ProcDump 得到,就是那个 Base Of Image 项。”
    于是这次Opera 4b6汉化时开始尝试。尝试的结果是gtw没有看到Base Of Image,fi和ProcDump都可以,由于fi是DOS界面风格,而ProcDump又是汉化者常用的工具,因此介绍使用ProcDump,截图如下:
    等等,先告诉大家那个DLL是:OMail32.dll。

    步骤是:①启动ProDump(这里使用的是1.62汉化版),单击“PE编辑器”,②在选择对话框种选择OMail32.dll,③那个“图像基于”就是“Base Of Image”(似乎应该译成映像之类才对吧8-)),里面的数字10000000就是我们需要的基地址。记住有七个0。
    现在就要看如何转换了。明白已经用软件实现了.EXE的转换功能,不过我不是搞编程的,不懂原理,估计是相加吧,验证一下:


   
明白提供的例子是.exe的,基地址是:400,000——4F008+400000=44F008,咦?哦,懂了,反过来就是08F044(注意,是从后面每两位两位的反过来。编程高手不要笑出声。)。那么对于DLL就应该用10000000来相加了。OK,试试看:

    这是英文界面,我们用match做关键词,用UE来打开查找看看:

    在这里看到&Find[7字符]、Match c&ase[10字符]如果翻译成:“查看(&F)”[8字符]、“大小写匹配(&A)”[14字符],就需要增加空间,而Match wh&ole word only有22个字符[译成“全字匹配(&O)”,12字符],可以匀出空格来,它的地址是30ef4H。为了保证前面的&Find有足够的空间,因此“全字匹配(&O)将向后移两格,地址是30ef6H。
    先找原始的调用地址:30ef4+10000000=10030EF4,倒过来:F40E0310,在UE中反向查找:

    原来找不到的地址现在果然找到了!
    剩下的其实大家都会了:新的调用地址是:30ef6+10000000=10030EF6,就是F60E0310,修改。此处省略若干动作,最后的结果如下:

    对比原来的汉化,觉得舒服多了。
    其实这只是一个小小的经验,而且是借助了前人的帮助、高手的指点,之所以写出来,是希望给还没有时间尝试的朋友一个参考,也希望可以帮助有心深入汉化的朋友。
    再次谢谢明白梁利锋所给与的指点和帮助。

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): ASCII 基地址 非标

·上一篇: 让软件个性飞扬—dfm之聪明汉化篇 ·下一篇: 你的补丁CoCo了吗?

· 版权申明: 本文引自《汉化教学》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《汉化教学》[ 作者: 伟乾],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号