第四课:A码汉化之A码偏移
教程作者:摩登
讲解人员:摩登
发布人员:冰封的♂心
开始上课
这节课我们来讲偏移,要会偏移必需要懂十六进制,下面我再给大家复习下十六进制
我想到一个能帮助大家容易理解十六进制的方法,我先给大家举个十进制的例子,帮大家容易理解
十进制基数0—9组成,逢十进一,也就是数到9就进一
例十进制:
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
十进制谁都会,只是举个例,
十六进制有16个基数,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
十六进制逢十六进一,也就是数到F时进一再从0开始数
例
00000
00001
00002
00003
00004
00005
00006
00007
00008
00009
0000A
0000B
0000C
0000D
0000E
0000F
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
0001A
0001B
0001C
0001D
0001E
0001F
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
0002A
0002B
0002C
0002D
0002E
0002F
00030
虽然很哆嗦,这样可能大家容易理解
好我们开始讲偏移
我们还是以PhoNetInfo这个软件为例,大家得重新解包
就以菜单的Exit来讲解,大家都知道Exit只有4个字节,而要汉成中文得5个字节才够,大家看图1
(注:原图1损坏)
我们上次上用借位方法来汉它,如果上面两个都不能借的话我们就要用到偏移,我是说如果
我们还是用x-plore十六进制模式打开语言包,按菜单-编辑,再按菜单查找到EXit的位置,又按菜单选择插入模式
我是在45与78之间插入45,即是E
插入字符后别忘了改指针,
好,字符插入完成,接下来的是要修改引索表
修改引索表是我们这节课的重点,也就是难点,大家一定要认真听
下面给大家举个例
例如一位作者写了本书,这本书有10页,后来作者有了灵感想补充一页内容,可这页内容要插在4与5页之间,那么原来的第5页要改为第6页,原来的第6页要改为第7页,即第5页以后的页码都得增加一页,书本页码增加了一页,目录也要修改,修改目录和修改书本页码一样都是从第5页以后加一页,书本的目录就像我们语言包的引索表,刚才插入的字符就像书本一样插入一个页码
现在来看看我们是在那两页之间插入一个字符的,大家看图3
十六进制表分为三个区,左边的为引索码区,中间是十六进制区,右边是字符区
先看看左边引索码区0002b7这个引索码,可以看作02b7,再看十六进制区和02b7同一行的第一个字节是00,那么这个00的引索码就是02b7,第二个是05,按十六进制计算方式它的引索码是02b8,第三个还是05,引索码02b9,第四个是45,引索码是02ba
我们是在45后面加了个字节45是不?
很明显看到我们是在我02ba后面加了一个字节,也就是在02ba与02bb之间加了一页
现在我们已知是在我02ba后面加了一页,有了目标我们就可以去修改引索表了
书本的目录是在开头,而语言包的引索表是在结尾
大家按菜单滚动至底部,看图4
我们看到的就是引索表了,我记得上第一节课时有位同学问我引索表怎么看?怎样才知道引索表从那里开始?
现在就慢慢解释给大家,大家从引索码000b9f那行开始看,从我划红线的地方开始是18 00 20 00 2b 00 47 00…这就是引索表的开始位置
往前面看是些乱七八糟没有顺序的代码,所以前面就不是引索表了
大家看我用红线划在一起的1800 2000 2b00…
这是A码形式,所以是反过来看的,应该看作0018 0020 002b…
还有个朋友向我求助过,他问我引索表为什么不是按这样0018 0019 0020 0021排下去的,为什么从0018就跳到0020,从0020就跳到002b呢?
引索表如果一个个排下下去的话不是比长城还要长么,呵…
如果一个个排下去你要改时改到手肿都改不完啊!
所以引索表省略了部分,大家明白了吧!
回到我们的主题,我们在上面插入了一个字节,也就是插入一页,我们是在02ba后面插入的是不,大家看图5,
引索表没有00ba这个引索码怎么改啊?
我们前面不是讲过被省略了吗!被省略了要怎么找呢?
大家看看我划红线的地方一个是6402 ,一个是cd02,我们说过看作0264、02Cd的
大家看0264比02ba小,02cd比02ba大
现在答案出来啦!0264比02ba小是前页的,前页是不能改的
那么就要从02cd开始改了,我们是插件一个字节所以02cd加1就是改为02ce,我们讲过例如书本在4与5页之间插入一页第5页以后的都得增加一页,所以02cd以后的如02df 024b…都要加1,如图6我都加1了
如果是插入两个字节就要增加2了,这个道理谁都懂!
好!这节课的偏移就全部讲完,大家要多多练习,我们下节课讲汉化风暴的汉化及注意点