论坛风格切换切换到宽版
  • 3781阅读
  • 2回复

【求助】汉化非标资源超写后出现乱码 [复制链接]

上一主题 下一主题
离线ikyo
 

发帖
21
金钱
200
威望
20
只看楼主 倒序阅读 0 发表于: 2011-12-22
最近在汉化一个模拟器时,遇到了两个不得不超写的字串,但超写后该位置出现乱码。

"&Save State"和"&Load State"不得不翻译成"保存进度(&S)"和"载入进度(&L)",仅超写1字节就导致这两个字串出现乱码,见下图:

汉化前:



汉化后:


已确定不是字串粘连的问题,我故意将"保存进度(&S)"之后的内容清出好几个$00仍不能正常显示,而且经试验,原版字串的"&Save State"超写后也会乱码。


汉化版在这:
http://www.hanzify.org/software/13263.html
我发布的汉化采用的是折衷的办法,即缩短字串长度。经试验不超写的情况下没有乱码,只要超写就会乱码。这个软件里其他字串也有超写的,但都没有乱码。

英文原版我上传到附件里了。
Ootake.rar (492 K) 下载次数:14

在实在没有解决办法的情况下不得不求助各位,虽然不抱什么希望但是我还是力求汉化完美,如果有知道原因或解决方法的请告诉我,不胜感激!
离线uzkbn

发帖
2
金钱
20
威望
2
只看该作者 1 发表于: 2011-12-29
帮顶帮顶帮顶
离线wanfu

发帖
2666
金钱
11510
威望
1151
只看该作者 2 发表于: 2016-06-29
好久的帖子,今天有空,自学一下 OllyDBG 调试来尝试解决这个问题,终于成功,现介绍方法如下:

1、看到楼主说 &Save State 菜单无法超长写入,就先用 UE 查一下这个字串,发现它是与下一个字串 &Load State 用“.”连接在一起的。


2、用非标宏(也可以用其它工具)提取,找到该字串的引用地址和代码为:
引用代码 FC224E00
引用地址 8566,72389

3、用 cao_cong 汉化的 OllyDBG v1.1 汉化第二版载入,右键菜单 > 查找 > 二进制字串,输入引用代码,找到 &Save State.&Load State 的调用处:

由上可知,程序只读入 12 个字节即结束读入,而且 &Save State 和 &Load State 虽然连在一起,但是按“.” 号,分二部分读入的。故可以断定,&Save State.&Load State 可以拆分为二个字串,即“.”号的十六进制代码 2E 可以改为 00。

4、将 &Save State.&Load State 拆分为二个字串,用非标宏移位写入翻译到新增节,运行效果为:


字串可以移位,但是一级菜单中的翻译被截断显示,二级菜单显示完整。

5、按照图 2 中的二级菜单处理方式,修改这二个一级菜单的处理方式如下:

用 OllyDBG 右键菜单:复制到可执行文件 > 所有修改,然后在弹出的对话框中,右键菜单中选择保存文件。

6、修改成功,运行测试的效果如下: