注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

The Bloom of Youth

本博客已搬家至http://kuangqi.me

 
 
 

日志

 
 

iPhone + iOS 5.0.1系统下自动匹配中国移动飞信12520前缀  

2012-02-01 00:17:37|  分类: 果粉手札 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
手机接收到通过飞信发送的短信时,号码会显示12520+对方手机号码,这种短信在iPhone上会被识别为独立的会话,而不是与同一个人的普通短信在同一个会话中,这就给管理带来了不便,那一大串号码也影响了短信箱的美观。而且我还通过人人网同步了用户的头像,这样的会话也无法显示对方的头像,总之有各种不便。。。

我们修改的最终目的是让iPhone将同一个人的飞信短信和普通短信放到同一个会话中。修改前需要以下准备工作
1. 设备需要越狱且为iOS 5.0.1系统(其它系统偏移量有差异,请根据文章后面介绍的文件结构自行计算)
2. 一个在电脑上访问iPhone上文件的文件管理工具(我在Mac系统下用的iExplorer)
3. 一个十六进制编辑器(我在Mac下用的HexEdit,Windows下推荐用WinHex)

要修改的文件是/System/Library/PrivateFrameworks/AppSupport.framework/Default.phoneformat

将此文件拷贝到电脑上,用十六进制编辑器打开,寻址到0x00002416处,将之后的三个179##改为125##
保存文件,将文件复制回iPhone,覆盖原文件。然后重启SpringBoard(如果没有Respring的软件就重启iPhone吧~)
再打开信息,就会发现12520前缀的短信已经正确显示为联系人的名字了。

=================如果您关注Default.phoneformat文件的细节,请继续阅读===================

下面粗略的介绍一下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

然后前面就有一些乱七八糟的计数器,在WeiPhone论坛上有人讨论,我们暂且不详述(有兴趣的请移步http://bbs.weiphone.com/read-htm-tid-162620.html)往后找8个字节就是前缀区了,就到了我们要修改的0x00002416了,这个数据就是这么算出来的。
  评论这张
 
阅读(2201)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018