Default.phoneformat文件的大致结构和偏移量的计算方法:
文件开头的4个字节代表支持的国家个数,IOS 5.0.1的这一字段为E9 00 00 00,十进制即为233。即IOS 5.0.1支持233个国家的卡号
接下来就是每个国家的信息,一条接一条,一共233条,每条信息都是12个字节,这12个字节分别代表的是
0-3:国家代码,ASCII码的数字
4-7:国家缩写,ASCII码的字母
8-11:偏移量,指向该国家号码匹配规则等数据的起始地址
在文件的开头部分,用肉眼就可以发现在0x000000AC处中国的信息,如下
38 36 00 00 63 6E 00 00 18 19 00 00 | 8 6 . . c n . . . . . . |
86是中国电话号码的国家代码
cn是中国的缩写
而十六进制的18 19 00 00代表的是偏移量0x00001918(注意此处的顺序要颠倒一下!!)
计算中国的数据区的偏移量:
第一个国家的数据区地址 = 4字节(国家个数计数器)+ 12(字节每个国家)* 233(个国家) = 0xAF0
中国的偏移量 = 0xAF0 + 0x1918 = 0x2408
然后前面就有一些乱七八糟的计数器,往后找8个字节就是前缀区了,就到了我们要修改的0x00002416了,这个数据就是这么算出来的。

















