重要聲明:Flex文件(.hs文件)的修改需要對電腦有較深的了解,特別是對16進制代碼要能進行熟練的操作。不小心導致的處理錯誤將導致用修改后的hs文件刷機失敗,嚴重的可能導致手機無法開機。因此修改hs文件前請三思!!!
hs文件實際上是16進制代碼表,其中包含手機內的功能文件以及seem代碼以及其他的控制代碼。但是要注意的是,有些seem文件的代碼在hs文件中是不全的,有些seem文件甚至沒有。而有些功能目錄下的文件,如 /a/motorola/certs/root/x509/ssl/rsa.crt ,在p2k上看到的目錄是不一樣的,這些文件不要去動它。
用UltraEdit打開hs文件,以文本的方式查看(注意不是Hex方式),可看到hs文件的組織方式:
第一行: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代碼間沒有空行。
寫了這么多,比較亂,希望能看懂:) 附帶說一句,Flex文件內其實也未涉及到真正的操作系統程序,因此手機本身沒有的功能也不可能在這里面增加。看shx文件里能否實現了(可能性也不大)。倒是用JAVA理論上可以增加手機功能,遺憾的是MIDP2.0的安全機制使得一般的愛好者無法使用手機中敏感的功能,只好作罷