Flex文件格式及修改方法

重要声明:Flex文件(.hs文件)的修改需要对电脑有较深的了解,特别是对16进制代码要能进行熟练的操作 。不小心导致的处理错误将导致用修改后的hs文件刷机失败,严重的可能导致手机无法开机 。因此修改hs文件前请三思!!!
hs文件实际上是16进制代码表,其中包含手机内的功能文件以及seem代码以及其他的控制代码 。但是要注意的是,有些seem文件的代码在hs文件中是不全的,有些seem文件甚至没有 。而有些功能目录下的文件,如 /a/motorola/certs/root/x509/ssl/rsa.crt,在p2k上看到的目录是不一样的,这些文件不要去动它 。
用UltraEdit打开hs文件,以文本的方式查看(注意不是Hex方式),可看到hs文件的组织方式:
【Flex文件格式及修改方法】第一行:AAB03000000D0000004A0005000000000006000092 。这行其实是一个空字符,可不管它
第二行开始,是功能文件和seem代码的16进制表示 。其中,以 AAB030000XXX0000004A 开头的行是功能文件,以 AAB030000XXX0000002F 开头的是seem代码 。其中的XXX是变化的,下面有说明 。功能文件都是以一个空行为结束,空行代码为 AAB03000000C0000004A0004000000000004008E 。也就是说,两个这样的代码行之间就是我们在p2k上看见文件了,只不过它是以16进制表示 。下面以 /a/mobile/audio/~AlertFile121.mid文件为例,说明功能文件的表示方式 。在hs文件中可以找到以下代码,这就是/a/mobile/audio/~AlertFile121.mid文件的内容,其中XXX......XXX是文件真正的内容,因为内容代码太长而用这个来代替的 。AAB0300000310000004A0029000000000000000000442F612F6D6F62696C652F617564696F
2F7E416C65727446696C653132312E6D69640CB1
AAB0300003F80000004A03F0000000000002000003E8XXX......XXX1207
AAB0300003270000004A031F00000000000200000317XXX......XXXCE8B
AAB03000000C0000004A0004000000000004008E
代码第一行是文件名(包含路径),但其前面有44位的控制代码 。其中最后面44是表示这个文件的属性是44 。44后面的代码就是文件名16进制代码(不包括最后四位校验码0CB1) 。再看前面的031,是文件名字节数(两位一个字节)加16 。如本文件名的字节数是33,33 16=49,49的16进制表示为031 。然后还有中间的029,是文件名字节数加8 。最后面的两位字节0CB1是校验码,它的生成方式是,将最前面的AAB0和最后面的0CB1去掉后中间的所有字节当成16进制数字相加的结果 。如果结果超出了两位字节,将高位字节丢掉即可 。注意的是每一个字节(两位)当成一个16进制数字,然后累加 。
代码的第二行第三行是文件的真正内容 。每行1000字节,控制代码的最后面3E8就是十进制的长度1000,同样3F8是1016,3F0就是1008 。内容的最后一行不足1000字节的,按实际长度计算 。每行最后面的校验码按第一行同样的方法处理 。
代码的第四行就一个空行,这是固定的,不用多说 。
上面就是功能文件的表示 。再来看seem 。比如0021_0001.seem,可在hs文件中找到其对应代码:
AAB0300000930000002F008B00000032000100000083XXX......XXX32E7
其中的00320001表示是0032_0001.seem,其他093、08B、083与上面所说一样 。XXX......XXX是seem文件的实际内容 。注意的是内容可能比实际的seem文件内容要少,少的话就是seem文件的前面部分,其后面的部分由shx文件或其他方式生成 。
以上就是hs文件的格式表示 。了解了其格式,修改起来思路就清晰了 。要删除文件,将相应的代码删除即可(包含一个空行的删除),要增加文件就复杂点,将其16进制代码拼成串,以1000字节为单位分行,计算出每行前面的控制代码和后面的校验码 。拼好代码后增加到hs文件中即可(手工弄的话得脱层皮哦~,编个程序还差不多 。不过一般也不会增加文件的啦) 。重要注意事项:hs文件中是以一个0A字节作为换行符,而不是0D或0D0A,修改时注意 。要修改seem,找到相应的字节进行更改,然后记得按规则更改校验码就可以了 。seem代码间没有空行 。

推荐阅读