iOS 5.0.1系統(tǒng)下自動匹配中國移動飛信12520前綴
2024-09-21
更新時間:2024-09-21 00:07:21作者:未知
iphone手機(jī)接收到通過飛信發(fā)送的短信時,號碼會顯示12520+對方手機(jī)號碼,這種短信在iPhone上會被識別為獨(dú)立的會話,而不是與同一個人的普通短信在同一個會話中,通過修改系統(tǒng)默認(rèn)的匹配模式可以實(shí)現(xiàn)匹配飛信前綴號碼的功能
請注意同一個會話中如果包含了飛信短信,普通文本短信之后,可能導(dǎo)致iMessage短信無法使用
我們修改的最終目的是讓iPhone將同一個人的飛信短信和普通短信放到同一個會話中。修改前需要以下準(zhǔn)備工作
1. 設(shè)備需要越獄且為iOS 5.0.1系統(tǒng)(其它系統(tǒng)偏移量有差異,請根據(jù)文章后面介紹的文件結(jié)構(gòu)自行計算)
2. 一個在電腦上訪問iPhone上文件的文件管理工具
3. 一個十六進(jìn)制編輯器(ultraEdit之類的即可)
要修改的文件是/System/Library/PrivateFrameworks/AppSupport.framework/Default.phoneformat
將此文件拷貝到電腦上,用十六進(jìn)制編輯器打開,尋址到0x00002416處,將之后的三個179##改為125##
保存文件,將文件復(fù)制回iPhone,覆蓋原文件。然后重啟SpringBoard
再打開信息,就會發(fā)現(xiàn)12520前綴的短信已經(jīng)正確顯示為聯(lián)系人的名字了。
-------------------------------------------------------------------------------------------------
Default.phoneformat文件的大致結(jié)構(gòu)和偏移量的計算方法(有人貼過)
文件開頭的4個字節(jié)代表支持的國家個數(shù),iOS 5.0.1的這一字段為E9 00 00 00,十進(jìn)制即為233。即iOS 5.0.1支持233個國家的卡號
接下來就是每個國家的信息,一條接一條,一共233條,每條信息都是12個字節(jié),這12個字節(jié)分別代表的是
0-3:國家代碼,ASCII碼的數(shù)字
4-7:國家縮寫,ASCII碼的字母
8-11:偏移量,指向該國家號碼匹配規(guī)則等數(shù)據(jù)的起始地址
在文件的開頭部分,用肉眼就可以發(fā)現(xiàn)在0x000000AC處中國的信息,如下
38 36 00 00 63 6E 00 00 18 19 00 00 | 8 6 . . c n . . . . . . |
86是中國電話號碼的國家代碼
cn是中國的縮寫
而十六進(jìn)制的18 19 00 00代表的是偏移量0x00001918(注意此處的順序要顛倒一下!!)
計算中國的數(shù)據(jù)區(qū)的偏移量:
第一個國家的數(shù)據(jù)區(qū)地址 = 4字節(jié)(國家個數(shù)計數(shù)器)+ 12(字節(jié)每個國家)* 233(個國家) = 0xAF0
中國的偏移量 = 0xAF0 + 0x1918 = 0x2408
然后前面就有一些亂七八糟的計數(shù)器,往后找8個字節(jié)就是前綴區(qū)了,就到了我們要修改的0x00002416了,這個數(shù)據(jù)就是這么算出來的。