IPhone短信相关部分研究(转载)
2010-05-05 10:45
267 查看
方式一:
打
开/dev/tty.debug使用AT命令操作,这类代码最早的出现在一些开源项目中,改改基本能用,现有的版本用的就是这种方式。
缺
点:机器必须破解并必须安装到 /Application ,IPA安装方式无法使用,应该是权限的问题。
不太稳定,速度有点慢,也可能是我代码写的有问题,这类代码code.google.com上可以找到,就不贴出来丢人了;
方式二:
直
接使用apple的私有库来(CoreTelephony)操作,其实有人已经弄出来了(别问我是谁啊,我不知道反你们的软件是不是非法啊),可是你别指
望在网上找到任何资料,我用ida看了2天还是没有弄出来,反而3.0的sdk拿到手立马搞定了3.0的短信发送。
缺点:唯一的缺点就是
你不知道什么时候apple又修改了api,私有的api不需要对你承诺兼容性,还有一个缺点就是appstore的签名可能会有麻烦;
1.x、
2.x、3.x的iphone应该都能支持的方式,随便定义个头文件,把下面的copy进去,同时主要加入CoreTelephony
framework
extern NSString* const
kCTSMSMessageReceivedNotification;
extern NSString* const
kCTSMSMessageReplaceReceivedNotification;
extern NSString* const
kCTSIMSupportSIMStatusNotInserted;
extern NSString* const
kCTSIMSupportSIMStatusReady;
id
CTTelephonyCenterGetDefault(void);
void
CTTelephonyCenterAddObserver(id,id,CFNotificationCallback,NSString*,void*,int);
void
CTTelephonyCenterRemoveObserver(id,id,NSString*,void*);
int
CTSMSMessageGetUnreadCount(void);
int
CTSMSMessageGetRecordIdentifier(void * msg);
NSString *
CTSIMSupportGetSIMStatus();
//获取sim卡状态,kCTSIMSupportSIMStatusNotInserted表示没有sim卡
NSString *
CTSIMSupportCopyMobileSubscriberIdentity();
//获取imsi号码,泪牛满面啊,我原来都是用AT+CCID来获取的iccid识别用户
id
CTSMSMessageCreate(void* unknow/*always 0*/,NSString* number,NSString*
text);
void * CTSMSMessageCreateReply(void* unknow/*always 0*/,void *
forwardTo,NSString* text);
void* CTSMSMessageSend(id server,id
msg);
NSString *CTSMSMessageCopyAddress(void *, void *);
NSString
*CTSMSMessageCopyText(void *, void *);
/*还有很多API,比如说挂机的啊,拨号的啊,获取
iccid,imsi,cell id,bootload/fireware版本的啊,暂时用不上,就没有一一弄出来哦*/
获取IMSI
号码:
NSString * imsi=
CTSIMSupportCopyMobileSubscriberIdentity(/*nil*/);
获取SIM卡状态:
NSString
* simStatus= CTSIMSupportGetSIMStatus();
截获短信(3.0暂时已经失效):
void
SmsCallBack (
CFNotificationCenterRef center,
void
*observer,
CFStringRef name,
const void *object,
CFDictionaryRef userInfo
)
{
NSAutoreleasePool *pool =
[[NSAutoreleasePool alloc] init];
if (!userInfo) return;
if
([[(NSDictionary *)userInfo allKeys]
containsObject:@"kCTSMSMessage"]) // SMS Message
{
void
*message = (void *)
[(NSDictionary *)userInfo
objectForKey:@"kCTSMSMessage"];
NSString *address =
CTSMSMessageCopyAddress(NULL, message);
NSString *text =
CTSMSMessageCopyText(NULL, message);
NSLog(@"address = %@,text
=%@",address,text
);
}
}
[pool release];
}
id server =
CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(server,
self, smsCallBack,kCTSMSMessageReceivedNotification,NULL,4);
发送的代
码应该是(难道我弄错了么?为什么发送不成功):
id server =
CTTelephonyCenterGetDefault();
id msg =
CTSMSMessageCreate(0,@"10086",@"fuck");
id
result=CTSMSMessageSend(server,msg);
apple在iphone
3.0在短信方面做了很大程度的修改,同时也让我看到了他们开放sms方面sdk的打算,现在有了一个ChatKit,ClassDump下来貌似很复
杂,我还是ClassDump了一下他的CoreTelephony,惊喜的发现里面多了很多obj
c的class,修改了一下大致是下面这个样子,也是随便找个头Copy进去就可以用:
@interface
CTMessageCenter : NSObject
{
}
+ (id)sharedMessageCenter;
-
(id)init;
- (id)sendSMS:(id)fp8;
- (id)sendMMSFromData:(id)fp8
messageId:(unsigned int)fp12;
- (id)sendMMS:(id)fp8;
-
(id)send:(id)fp8;
- (id)incomingMessageWithId:(unsigned int)fp8
telephonyCenter:( id)fp12 isDeferred:(BOOL)fp16;
-
(int)incomingMessageCount;
- (id)allIncomingMessages;
-
(void)acknowledgeIncomingMessageWithId:(unsigned int)fp8;
-
(void)acknowledgeOutgoingMessageWithId:(unsigned int)fp8;
-
(id)incomingMessageWithId:(unsigned int)fp8;
-
(id)deferredMessageWithId:(unsigned int)fp8;
-
(id)statusOfOutgoingMessages;
- (id)encodeMessage:(id)fp8;
-
(id)decodeMessage:(id)fp8;
- (BOOL)isMmsEnabled;
-
(BOOL)isMmsConfigured;
- (BOOL)sendSMSWithText:(id)fp8
serviceCenter:(id)fp12 toAddress:(id)fp16;
@end
从接口上来看,发送,
截获应该都可以搞定,还能支持彩信
发送很简单:
[ [CTMessageCenter
sharedMessageCenter] sendSMSWithText:@"1111" serviceCenter:nil
toAddress:@"138XXXX0610"];
截获很诡异的,我不知道他是怎么通知的,看里面的代码应该最终还是用了
CTTelephonyCenterAddObserver,我在想从这个类派生一个能不能截获呢?有待测试。
顺带提一下,ida反出来
的arm代码还是很郁闷啊,关键是没办法跟踪调试,CTSMSMessageSend肯定是可以发送的,而且就是2参数,神啊,help me?!
相关文章推荐
- IPhone短信相关部分研究
- 用SQL实现学籍管理系统相关的表操作(转载来的部分已修改)用mysql5.5做的
- Android 串口读取设备相关知识。。总结比较乱,部分转载(未完)
- 国内部分音频语音相关研究企业(实时更新)
- (转载)iPhone开发视频教程 Objective-C部分 (51课时)
- iPhone电话与短信相关代码小结
- 搜索引擎研究---网络蜘蛛程序算法相关资料 Part I (共5部分)
- 做项目被log4j的输出格式化参数搞烦了,索性把API的相关部分大致翻译一下,原文参见 ----转载
- 朋友网的部分代码:研究QQ相关功能的绝佳资料
- Oncomine: 一个肿瘤相关基因研究的数据库--转载
- 搜索引擎研究---网络蜘蛛程序算法相关资料 Part II (共5部分)
- 搜索引擎研究---网络蜘蛛程序算法相关资料 Part III (共5部分)
- C#多线程学习(一) 多线程的相关概念(转载系列)——继续搜索引擎研究
- iPhone电话与短信相关代码小结
- [转载]iphone SprintBoard部分私有API总结
- 搜索引擎研究---网络蜘蛛程序算法相关资料 Part VI (共5部分)
- android 一些相关处理网络图片与音乐(部分转载)
- 搜索引擎研究---网络蜘蛛程序算法相关资料 Part V (共5部分)
- (转载) iPhone开发中的图像处理相关要点
- TinyMail研究—Stream及相关设计模式