越狱开发之iPhone原生短信hook

来源:互联网 发布:淘宝企业店铺报名活动 编辑:程序博客网 时间:2024/05/24 02:44
一直在研究iphone上的短信,想在原生的短信上面做一些修改,研究了一段时间,现在部分讲解给大家,希望对大家有所帮助。

我主要是对原生短信进行hook操作,捕捉到系统的一些类来进行自己的功能操作。

大家打开iphone的framework的头文件可以看到有个ChatKit,这个framework里面就包含了很多关于原生短信运行所用到的类,例如CKSMSService.h 和CKSMSMessage.h以及CKTranscriptController.h等。里面有很多的头文件我就不一一介绍出来。如果要进行详细的开发还需自己去慢慢怀疑和操作,毕竟里面上上千个头文件里面又有上万个接口,我不能说出。

关于怎么越狱开发,我想大家查阅资料都知道,可以使用Theos这个集成环境来进行动态库的开发,在此我不对theos环境的搭建做说明了。

CKTranscriptController.h主要是用于显示短信的会话界面,无论是新建短信的界面还是已经存在的会话的界面,只是根据不同类型来加载不同的控件而已。

里面有很多函数,例如可以对CKTranscriptController.h进行hook

%hook CKTranscriptController

-(id)tableView:(id)view willSelectRowAtIndexPath:(id)indexPath{
    
    CKTranscriptBubbleData *data =[self bubbleData];
    
    NSString *str = [[NSString alloc]initWithString:[NSString stringWithFormat:@"      CKTranscriptBubbleData    %@",  data  ]];
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome" 
        message:str
        delegate:nil 
        cancelButtonTitle:@"Thanks" 
        otherButtonTitles:nil];
    [alert show];
    [alert release];

    return %orig;
}

%end

钩住这个方法,我们就能够在某个会话里面点击某条信息的时候,弹出一个对话框,输出值为CKTranscriptBubbleData    这个对象。

CKTranscriptBubbleData   这个对象是顾名思义是气泡数据,通过这个对象可以获得当前点击的会话的内容,也可以获得当前会话的联系人的电话号码等。

当然,如果想要修改会话界面上的发送按钮,或者觉得iphone原生短信的,新建会话的内容输入框只有一行觉得太窄的话,我们可以去进行修改。这块控件的代码在CKMessageEntryView.h里实现,于是例子代码可以这样:

%hook  CKMessageEntryView
//底部栏的高度
+(float)defaultHeight{
  %orig;
  return 70.0f;
}

%end

这样修改之后,输入框的初始高度就是原来的两倍了。


暂时说那么多吧,还有很多函数,包括发短信还有收短信的接口,都在这些framework的头文件里面,至于怎样要自己慢慢去尝试。

自我感觉说得比较乱,还请大家多多谅解。





原创粉丝点击