论坛风格切换切换到宽版
  • 2053阅读
  • 9回复

挪移问题 [复制链接]

上一主题 下一主题
离线a996575745
 

发帖
8
金钱
80
威望
8
只看楼主 倒序阅读 0 发表于: 2016-06-22
我用Athena-A 矩阵 去挪移 一个字符串  但挪移好 发现 显示不完整      比如原内容 nihao   修改内容 你好玩家    


修改好后只随机显示你好玩家的其中一个字符  
离线a996575745

发帖
8
金钱
80
威望
8
只看该作者 1 发表于: 2016-06-22
求解答
离线wanfu

发帖
2711
金钱
11950
威望
1195
只看该作者 2 发表于: 2016-06-23
估计有长度标识符,参阅这个帖子:
http://bbs.hanzify.org/read.php?tid=98777
最好请提供文件及无法完整显示的截图。凭空谁能帮你啊。
离线a996575745

发帖
8
金钱
80
威望
8
只看该作者 3 发表于: 2016-06-24
回 2楼(wanfu) 的帖子
看一下吧 就是这个文件  不是可运行程序   这是一个脚本文件
汉化内容是 Self  
jaudf.zip (316 K) 下载次数:2
离线a996575745

发帖
8
金钱
80
威望
8
只看该作者 4 发表于: 2016-06-24
回 2楼(wanfu) 的帖子
wanfu:估计有长度标识符,参阅这个帖子:http://bbs.hanzify.org/read.php?tid=98777最好请提供文件及无法完整显示的截图。凭空谁能帮你啊。 (2016-06-23 09:50) 

Self  汉化成玩家选项 只显示 一个字符串
离线wanfu

发帖
2711
金钱
11950
威望
1195
只看该作者 5 发表于: 2016-06-24
这是个什么软件?没有原版程序,无法测试。
离线wanfu

发帖
2711
金钱
11950
威望
1195
只看该作者 6 发表于: 2016-06-24
1、根据你提供的“Self  汉化成:玩家选项,只显示一个字符串”分析,从你直接将 Self 翻译成简体中文,并且能够正确显示出一个字符的中文来看,这个字串应该是一个 936 代码页的 ANSI 编码的字串,据此也可以排除 UTF-8 编码 。

2、先用 UE 找到 Self 这个字串,发现字串前没有任何长度标识符(前后字节都为00)。

3、获取这个字串的引用,发现有以下引用:
引用代码:AE850600,0B7B0600,82760600,4F510600,71DC0300,DEBE0300,CABE0300,54BA0300,31AF0300,DBAE0300,7BA10300,A4170300,45000000  
引用地址:210014,212737,213898,223421,384411,391982,392002,393144,395995,396081,399505,434792,635847
(1)用 UE 查找第一个引用代码 AE850600,发现引用代码前有 04 这个字节,这个字节值正好和 Self 字串的字节长度相等。


(2)用 UE 查找第二个引用代码 0B7B0600,发现引用代码前也有 04 这个字节,这个字节值也正好和 Self 字串的字节长度相等。


(3)用 UE 查找第三个引用代码 82760600,发现引用代码前也有 04 这个字节,这个字节值也正好和 Self 字串的字节长度相等。

所以,初步判断这个 04 字节可能就是 Self 字串的长度标识符。

4、接下来,用 Passolo 非标宏来提取这个文件的字串。
(1)先自定义一个字串类型:

说明:查看 04 前后的字节,都是以 46 开头,并以 48 结尾的,所以为便于非标宏准确判断每个字串的字串类型,我们设定这个长度标识符是以 46 开头,48 结尾的。

(2)设置提取选项并选择自定义字串类型:


(3)提取字串后得到以下字串:


(4)过滤显示字串,看到下面这些字串是刚刚自定义的字串类型:


(5)在非标宏中选择 Self 字串并单击右键,选择“查看字串数据”菜单,显示以下信息:

============ 字串数据的详细信息 ============
字串索引号:字串数据的序列号,仅供查看被占用的其他移位字串索引号、移位写入所使用的地址编号时参考
字串类型:<-4 = Android 字串,<0 = .NET 字串,0 = 标准字串,1 = Pascal 字串,2 = Pascal 宽字串,3 = Pascal 长字串,4 = Pascal 短字串,>4 = 自定义
写入类型:0 = 不写入,1 = 原址完整写入,2 = 原址截断写入,3 = 全部移位写入,4 = 部分移位写入
写入状态:0 = 未写入,1 = 完整写入,2 = 截断写入,3 = 字串写入失败,4 = 引用代码修改失败,5 = 标识符修改失败
移位类型:0 = 未移位,1 = 字串空位,2 = 非字串空位,3 = 节尾原有空位,4 = 节尾扩展空位,5 = 最后节扩展空位,6 = 新增区段
移位模式:0 = 超长移位 (未移位时引用地址为空),1 = 强制移位 (未移位时引用地址非空),2 = 原址移位 (字串类型字节长度改变),3 = 手动移位,4 = 不移位
锁定状态:0 = 未锁定,1 = 已锁定
拆分状态:0 = 未拆分,>0 = 已拆分的父字串 (数字表示子字串数),<0 = 子字串 (数字表示其父字串编号)
标识符类型:0 = 无标识符,1 = 在字串开始地址前,2 = 在字串引用地址前
被占用的其他移位字串索引号:-1 = 没有被占用,>-1 = 占用该字串地址的其他移位字串的字串索引号
移位写入所使用的地址索引号:-1 = 没有移位,>-1 = 其他移位字串的字串索引号,<-1 = 非字串空余地址索引号
字串原址的清空状态:0 = 未清空,1 = 已清空
==============================================================================
字串编号 项目 字串数据
==============================================================================
#635920 字串索引号 155  
字串类型 5  
写入类型 0  
写入状态 0  
移位类型 0  
移位模式 0  
锁定状态 0  
拆分状态 0  
标识符类型 2  
被占用的其他移位字串索引号 -1  
移位写入所使用的地址索引号 -1  
字串原址的清空状态 0  
原始字串 Self  
原始字串所在节名 .rdata  
原始字串开始地址 635920  
原始字串结束地址 635923  
原始字串最大地址 635927  
原始字串字节长度 4  
原始字串最大允许字节长度 7  
原始字串代码页 1252  
原始字串引用代码 AE850600,0B7B0600,82760600,4F510600,71DC0300,DEBE0300,CABE0300,54BA0300,31AF0300,DBAE0300,7BA10300,A4170300,45000000  
原始字串引用地址 210014,212737,213898,223421,384411,391982,392002,393144,395995,396081,399505,434792,635847  
原始字串跟随引用地址的字串类型 5,5,5,0,0,0,0,0,0,0,0,0,0  
原始字串引用次数 13  
原始字串的字串类型字节长度 0  
翻译字串 Self  
翻译字串所在节名 .rdata  
翻译字串开始地址 635920  
翻译字串结束地址 635923  
翻译字串最大地址 635927  
翻译字串字节长度 4  
翻译字串最大允许字节长度 7  
翻译字串代码页 1252  
翻译字串引用代码  
翻译字串引用地址  
翻译字串跟随引用地址的字串类型  
翻译字串引用次数 0  
翻译字串的字串类型字节长度 0  
==============================================================================
注意:原始字串跟随引用地址的字串类型 5,5,5,0,0,0,0,0,0,0,0,0,0,表明只有前3个引用有长度标识符。

5、在Passolo中添加简体中文目标语言,然后打开翻译列表翻译 Self 这个字串为:玩家选项,然后运行非标宏并写入。


5、 用 UE 打开目标文件,找到第一个引用地址 210014(十进制地址),可以看到引用代码前的长度表示符已被修改为 08,正好和翻译的字节长度相等。

其它引用地址也一样被修改了,这里不再繁琐。

6、运行测试,看看是否可以完整显示。因为我没有这个软件,所以这步需要你自己做了。
离线a996575745

发帖
8
金钱
80
威望
8
只看该作者 7 发表于: 2016-06-24
回 6楼(wanfu) 的帖子
wanfu:1、根据你提供的“Self  汉化成:玩家选项,只显示一个字符串”分析,从你直接将 Self 翻译成简体中文,并且能够正确显示出一个字符的中文来看,这个字串应该是一个 936 代码页的 ANSI 编 .. (2016-06-24 12:57) 

谢谢  那具体要怎么修改呢
离线wanfu

发帖
2711
金钱
11950
威望
1195
只看该作者 8 发表于: 2016-06-24
你按照我上面说的做就可以了。请把汉化的测试结果告诉我。
离线a996575745

发帖
8
金钱
80
威望
8
只看该作者 9 发表于: 2016-06-25
回 8楼(wanfu) 的帖子
wanfu:你按照我上面说的做就可以了。请把汉化的测试结果告诉我。 (2016-06-24 13:39) 

感谢我等下去试一下