·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 非标汉化 >> RVA字串乾坤大挪移--偏移量转换器的简单用法    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

RVA字串乾坤大挪移--偏移量转换器的简单用法

作者: 何知宇 来源:汉化新世纪 时间:2003-08-05 点击:20402



RVA字串乾坤大挪移

--偏移量转换器的简单用法

何知宇


  今天我结合一个简单的例子来谈谈 ASCII 字串的 RVA 类字串的挪移汉化,主要是想将梁利锋开发的偏移量转换器的用法给大家作一简单介绍,由于本人水平有限,所以不能说的很详细,因为有些概念我也正在摸索体会中。:)
  必看文章推介:伟乾的 ASCII 字串的汉化的文章;梁瑞本的 ASCII 字串汉化的文章;梁利锋的基地址引深一文,还有其它的文章,可以体会一下基地址,虚偏移,实偏移,及数据偏移,代码偏移的概念及字串挪移的原理及其它类别 ASCII 字串的汉化方法。

1.ASCII资源的汉化(1)(伟乾)
2.ASCII资源的汉化(2)(伟乾)
3.ASCII资源的汉化(3)(伟乾)
4.关于DLL文件基地址以及ASCII字符的汉化修改(伟乾)
5.汉化ASCII字符串的高级技巧——序言(梁瑞本)
6.汉化ASCII字符串的高级技巧——C字符串篇(1)(梁瑞本)
7.汉化ASCII字符串的高级技巧——C字符串篇(2)(梁瑞本)
8.汉化ASCII字符串的高级技巧——PASCAL字符串篇(1)(梁瑞本)
9.汉化ASCII字符串的高级技巧——PASCAL字符串篇(2)(梁瑞本)
10.基地址引深(梁利锋)

  首先声明的是,我只是结合一个极简单的例子来浅浅的说说,希望对你的汉化有所帮助。还需要强调的一点是很多 ASCII 字串并不是 RVA字串,只有 RVA 字串才能使用这种方法。如果你对 RVA 字串的定义和分类还比较模糊,请先关闭此文档,先去看看伟乾写的 ASCII 资源的汉化文章,这是基础。不然你可能说,我按照你的方法,算出 RVA 偏移量,但是在文件中找不到(或改了无效),都是因为不是这种 RVA 字串的缘故。
  例子程序是 B-jigsaw 4.1,一个拼图游戏,5.0 已经出来了,不过 5.0 中没有我们可利用的 RVA 字串加以代换,所以还是拿老版本说说,界面如下图所示,这是一个经过初期汉化后的软件开始界面。

图1

  大家可以看到,那个“OK”暂时没有汉化,当然你也可以译为“好”或“是”,不过今天我们要把它译为“确定”,再来看看这个 OK 在UE 中的样子吧。如图2

图2

  注意到,字符不足以让我们把“OK”汉化为“确定”,所以我们采用RVA字串的替换来实现它的汉化。再往后看,使用乾坤挪移,在这个具体的例子中,后面有个“Invalid registration code!”的 ASCII 字串,把它译为“无效注册码!”后,多出的字符位置修改为“确定”绰绰有余。(当然如果你在前期已经汉化了此字串,后面如果有足够的 00 就可加以利用),就从这里入手。将光标定位在“OK”处的首字符处,在UE的状态栏就会显示当前的实偏移量,一个是十六进制的,一个是十进制的。如图3,639f2h 是十六进制,408050 为十进制。

图3

  打开 PosConv (偏移量转换器),图标是一个笑脸哎,软件秉承了点晴系列软件的一贯风格,简捷明快,小巧实用,主界面如下,如图4。PosConv ,支持 PE 格式的文件,(32 位 Windows 程序的格式),不支持 NE 格式的文件。( NE 是 16 位 Windows 程序的格式), 当然,也不支持 Dos 程序。:) 
    目前的最新版本是 0.94 版,相比较以前的版本,新版本提供热键(F12)呼出支持,这下使用就更方便啦!

图4

图5

  偏移量转换器支持鼠标拖曳,找到需汉化的程序文件“bjigsaw.exe”直接拖到程序选择窗口就行了,见图5。当然你也可以通过点击“...”浏览选定需汉化的程序文件。选定文件后,我们可以点击“顶端”按钮,这样偏移量转换器就永远停留在最顶端,对于我们下面的查找替换工作来说非常方便;当然如果你不想让她停留在最顶端,再次点击“顶端”按钮取消该功能即可。
    图 6 ,直接在实偏移栏中输入 OK 的十六进制实偏移值,即 639f2,代码栏则显示计算出来的代码RVA值,本例中为 F2454600。你可以看到程序已经自动根据你输入的实偏移显示了区段名,本例中为.data 区段。如图 8。点击“至剪贴板”即可将代码值复制到剪贴板内,方便以后的操作。

图6

图7

    对于绝大多数软件来说,一般不需要你来选择区段,如本例,程序可智能根据实偏移值来判断并自动选择区段。只有某些很少见的软件出现区段重叠时才需要用户进行区段选择。那位朋友可能要问了,如果我“不幸”碰到一个这样的情况,该如何处理呢?问得好,其实不用麻烦你,偏移量转换器觉察到有区段重叠时,会自动跳出对话框来提示你,还是看看图吧,唉,这样的例子还真不好找,嗯,找到了,大家看看。

图8

    程序提醒我们有区段重叠,并且给出了重叠的区段名称,即“BSS”和“.tls”。点击“选择”按钮,进入区段选择界面,如图 9。我们只需把重叠的区段前的复选框的“√”清除即可。如图10。点击确定继续进行,够智能吧?顺便再多说两句,进行区段选择时,当你点击任一.text、.data等区段,(装入程序不同,区段名也会有所不同),filemin,filemax,将显示该区段中实偏移量的最大值与最小值,你也可以根据实偏移量的范围来判断具体处于那个区段,不过,我很懒,所以都交给偏移量转换器代劳了。

图9 图10

     好了,还是回到例子中来吧,在 UE 中打开查找功能,将剪贴板内保存的代码值粘贴至查找窗口后,如图9设置。向上搜索此代码,并记下位置。(这个向上搜索不一定,大多数情况下是在字串的前面不远的地方,不过也有在后面的例子)。

图11

  在这个程序中只找到了一处,位于0x2364处。如下图所示。对于其它软件,有时我们找到的不止一处,那么倒底是那个代码需要修改呢?这就需要我们进行修改测试啦,虽然大多情况下我们找到的并不会很多,如果逐个修改测试还是比较麻烦,汉化新世纪的伟@伟乾介绍了一个比较简单的方法,+1,如 F2454600 改为 F3454600 ,存盘看看运行的界面原来显示 OK 是否变成了 K ,如果是说明我们找到了,如果不是,说明这个不是,查找下一个。如果还是没有找到,只能说明你老兄粗心,计算步骤有错,再试试。“什么什么,已经检查好几遍了,还是找不到RVA偏移量”,这个不是RVA字串,请认真看看有关文章

图12

  现在可以回去修改程序了,例子程序中我在“无效注册码!”的后面隔两个00的位置上添加“确定”字符,即“C8B7B6A8”,如图所示。当然你也可以在其它位置修改,但要注意必须和上一字串至少要有一个00相隔。

图13

  接着,我们把光标定位在“确定”的首字符处,读出它的实偏移量,如图12所示。十六进制为63a5cH。再次启用偏移量转换器,此偏移量仍位于data区段,如图13,输入63a5c,计算出其代码偏移量为5C464600。(这里又有一个技巧了。我们用鼠标选择,从“OK”开始,一直选择到“确定”前面,看看我们选择的代码的长度,然后RVA代码减去或加上这个长度,就是我们需要修改后的RVA代码。注意,这里的RVA代码是低位在前,高位在后显示的。在本例中,距离是比较短的,所以这个技巧就很方便了。如果你乾坤挪移功力太高,距离太远了,我们可以将光标定位在两个字串的首字符处,将实偏移相减就是距离了。不过在远距离操作中,若超出了区段,这个技巧就无法适用了。)

图12

图13

  在 UE 中,跳转到0x2364处,将“F2454600”修改为“5C464600”。如图14所示。

图14

  存盘,试运行一下,下图就是结果图,我们的目的实现了。原来的“OK”我们并没有动它,这就是乾坤大挪移!

图15

  文章到这里就结束了,这里主要是结合一个 RVA 字串的汉化讲了一下偏移量转换器的使用方法,希望对你有所帮助。

                                                                        止稿于2000年10月21日

   

 

汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): ASCII RVA 乾坤大挪移 偏移量

·上一篇: VB类程序汉化-IcoFolder3.0汉化之实验报告 ·下一篇: Resource Hacker 帮助

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

· 转载申明: 本文引自《汉化新世纪》[ 作者: 何知宇],如需转载请直接联系原始作者,并请注明原始出处。

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

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