·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 一个字符串长度与偏移量调整的问题。    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

一个字符串长度与偏移量调整的问题。

作者: westking 来源:汉化新世纪论坛 时间:2004-01-10 点击:20390

点击进入原贴

westking


 


OFA
在汉化 All Video Joiner 1.0.2 的过程中,遇到这样一个问题。需要修改的字符串由于长度不够需要修改前面的长度标识,如图:
user posted image
可是后面的长度却不够,需要用到乾坤挪移,但是一旦挪移 Resize crop 即运行出错。如果挪移 Resize crop 连同前面的 0B 00 00 00,则偏移量对应的 Hex 代码无法找到。
请问要怎么解决这个问题呢?

原英文版软件下载: http://www.zealotsoft.net/download/alljoiner.exe

westking
是不是你没有真正的挪移?

OFA
什么是真正的挪移?
是否需要挪移 FF FF FF FF?

大牛
前面四个FF,只需保留一个就够了,其他三个你可以用来增加字串长度啊。

OFA
长度还是不够,我要翻译成 “调整大小并剪切多余部分”,这样一共占22个字符。

westking
没有问题!

大牛
找个地方重建一个完整的字符串,汉化宝典有介绍。

OFA
我就是这么做的,请问 westking,需要挪移的是哪个部分?

westking
利用前面多余的空间,将你要加的字符串提前,然后对应偏移地址就可以了.

OFA
20 F2 49 是对应 FF FF 16 这个地方的偏移吗?
还有上面那个 asp(ect) 后面的 ect 怎么不见了?

westking
20 F2 49 对应的是“调”的偏移。
上面的英文未翻译,我删除了一部分,你翻译出来以后的长度应该不会很长的。
难道你没好好看过教程吗?

OFA
为什么我改了“调”的偏移量以后运行就会出错?试了两次都这样,前面的长度标识我已经改成16了。

chenmy
D 程序的字串偏移量是这样的:

字串的第一个字符作为字串偏移量值,其长度由前面的 FF...FFxx000000 中的 xx(16进制值)决定,FF...FF,1 - 4 个都行。转移后的字串应有完整的表达式

westking
再给你将具体点吧:
1、用 UltraEdit 打开文件,并找到该字串,可以看到该字串对应的“实偏移”,如图:

2、然后用“点睛偏移量转换器”打开该文件,并输入“实偏移”,然后复制“代码”,如图:

3、返回到 UE,搜索该“代码”,如图:

4、搜索的结果如图:

5、最后根据要更改的字串长度在适当位置开始输入中文字串(这里我们可以从 9e620H 处开始),然后将前面借用的部分修改为 00 FF FF 16 00 00 00(第一个 00 必须,为了与前面的字串分隔;FF FF 也可用1个;16 是输入的中文字串的长度(十六进制);后面的3个 00 必须)。接着还要将前面借位的字串的长度进行修改,切记!最后,再把中文字串的偏移由原来的 2C F2 49 更改为 20 F2 49(20 就是中文字串的起始位置)。如图:

另外,某些程序中的字串对应的代码地址可能不止一个,遇到这种情况一般都要进行修改。

OFA
谢谢westking如此热心,我自己的问题已经解决,原来是将 FF FF FF FF 整体向前迁移到空余的位置上,而仅仅更改 “调整...”以后的偏移量。但是由此我想到一个另问题,如果 FF FF FF FF 前面没有足够的空间,或者要翻译的句子实在太长,没有足够空间向前迁移怎么办呢?按照我原来的做法,整体挪移 FF FF FF FF 和后面的内容 或者 仅仅挪移 FF 长度标识 00 00 00 后面要翻译的内容,但是这两种方法均会出错。要怎么解决?

sigporsson
FF 和长度标示以及具体字符都移到有空位的地方。

westking

引用 (OFA @ 2003年12月15日 06时49分)
如果 FF FF FF FF 前面没有足够的空间,或者要翻译的句子实在太长,没有足够空间向前迁移怎么办呢?


没什么好办法,好像只能 —— 缩短翻译!

OFA

引用 (sigporsson @ 2003年12月15日 15时06分)
FF 和长度标示以及具体字符都移到有空位的地方。


这样做是不行的,至少在我这个程序里不行。

雅枫
怎么不行?我就不信软件中没有空余的地方
就算没有,也可以用增肥的方法弄出空余的字节来

OFA
空余的地方是有,但是无法完成偏移量替换,FF 的偏移量用偏移量转换器计算出代码后在程序里找不到。

westking
只管字符串的偏移,不要去理会 FF 的偏移,那是根本找不到的

OFA

引用 (chenmy @ 2003年12月15日 18时53分)
字串的第一个字符作为字串偏移量值,转移后的字串应有完整的表达式


请问什么叫做完整的表达式?

引用 (westking @ 2003年12月15日 19时22分)
好好看看:http://teach.hanzify.org/ArticleShow.htm?ArticleID=26


这篇文章我已经通读过几遍了,但是其中有一些内容该文章并未提到,也是我这个帖子的主要几个问题,有两点。
一、文章没有提到字符串前长度标识的修改问题,这个问题只在VB汉化的教程中提到,而其他一些语言编写的程序也会出现这个问题。但是该问题可以移花接木,变通解决,所以不算困难。
二、没有提到雅兄提到的程序增肥术,即增加字节。当偶尔遇到需要翻译超长中文字符串,而程序中剩余的00又都不足以填满这些字符串的时候(而且不是所有的00都能用来挪移),需要其它一些方法“制造”出可以放下这些字符串的00(我听说过一个软件 topo 用来增加 PE 文件的字节数,不知是不是做这个用的)。此问题还得请教各位。
三、最顶上的那个问题,已经在各位的指导下解决(今天早上6:00突然惊醒,恍然大悟,立即开电脑把这最后一点搞定了)。现在需要解决的唯一问题就是后面的提到的“如何给程序增肥以放下过长的中文字符串”。谢谢各位指教。

雅枫

topo可以用,2k下还有个zeroadd
如果你懂pe结构,也可以自己手动增肥(半仙写过文章)

 


主页上有个增加字节的工具,可以试试。通常都可以找到地方挪移的。关于乾坤挪移的方法,的确并没有哪篇文章完整表达清楚,最好是把有关的文章都反复看,串着来看。

wzx2001
如果没有位置, 可以把前面或后面的字串也一起移.如果只要加长一句的话,只要把前面的一句也往前移移,后面不就有位置了么?

雅枫
呵呵,对pe熟了,又懂寻址,悟就悟出来了:)

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

·上一篇: [x]/(x)的转换 ·下一篇: 汉化教学基地开放公开投稿账号

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

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

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

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