引用
1.手机要越狱,没有越狱的话,下面的可以不用看了!
2.IOS 要5.0以上,4.xx的同上
首先,声明下!由于公司移动开发的项目中,需要根据手机的内容进行逻辑处理,也就是要实现手机短信拦截,由于,本人一直搞的是JAVA,对OC 语言还是比较陌生的,这段辛酸路总算熬出个苗头!由于,公司中没有人搞这个,遂只能网爬了,郁闷的发现,网上的代码几乎不能运行,在朋友的帮助下,成功的对手机短信进行了拦截!下面贴下研究的心得,由于IT眼没有OC语言标签,下面贴的OC语言用C++代替!
引用
项目首先,导入CoreTelephony.framework,OK 不需要别的包了,仅此而已!
在AppleDelegate.m中写上如下代码:
//extern id allIncomingMessages;
//extern int incomingMessageCount;
extern NSString* const kCTSMSMessageReceivedNotification;
extern NSString* const kCTSMSMessageReplaceReceivedNotification;
extern NSString* const kCTSIMSupportSIMStatusNotInserted;
extern NSString* const kCTSIMSupportSIMStatusReady;
//typedef struct _CTCall CTCall;
extern NSString *CTCallCopyAddress(void*, CTCall *);
void* CTSMSMessageSend(id server,id msg);
typedef struct __CTSMSMessage CTSMSMessage;
NSString *CTSMSMessageCopyAddress(void *, CTSMSMessage *);
NSString *CTSMSMessageCopyText(void *, CTSMSMessage *);
int CTSMSMessageGetRecordIdentifier(void * msg);
NSString * CTSIMSupportGetSIMStatus();
NSString * CTSIMSupportCopyMobileSubscriberIdentity();
id CTSMSMessageCreate(void* unknow/*always 0*/,NSString* number,NSString* text);
void * CTSMSMessageCreateReply(void* unknow/*always 0*/,void * forwardTo,NSString* text);
id CTTelephonyCenterGetDefault(void);
void CTTelephonyCenterAddObserver(id,id,CFNotificationCallback,NSString*,void*,int);
void CTTelephonyCenterRemoveObserver(id,id,NSString*,void*);
int CTSMSMessageGetUnreadCount(void);
引用
回调函数:
static void callback(CFNotificationCenterRef center,void *observer,CFStringRef name,const void *object, CFDictionaryRef userInfo){
// NSLog(@"%@",name);
NSString *strNotficationName=(NSString*)name;
if ([strNotficationName isEqualToString:@"kCTMessageReceivedNotification"]) {
int a=0;
}
// NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
@synchronized(nil) {
if (!userInfo) return;
if ([[(NSDictionary *)userInfo allKeys]
containsObject:@"kCTMessageIdKey"]) // SMS Message
{
NSDictionary *info = (NSDictionary *)userInfo;
CFNumberRef msgID = (CFNumberRef)[info objectForKey:@"kCTMessageTypeKey"];
int result;
CFNumberGetValue((CFNumberRef)msgID, kCFNumberSInt32Type, &result);
Class CTTelephonyCenter=NSClassFromString(@"CTTelephonyCenter");
Class CTMessageCenter = NSClassFromString(@"CTMessageCenter");
id mc = [CTMessageCenter sharedMessageCenter];
int count=[mc incomingMessageCount];
id mcarr=[mc allIncomingMessages];
// id incMsg =[mc incomingMessageWithId:result];
// if (count==0) {
// return;
// }
id incMsg = [[mc allIncomingMessages] objectAtIndex:0];
int msgType = (int)[incMsg messageType];
if (msgType == 1) //experimentally detected number
{
id phonenumber = [incMsg sender];
NSString *senderNumber = (NSString *)[phonenumber canonicalFormat];
id incMsgPart = [[[[incMsg items] objectAtIndex:0] retain] retain];
NSData *smsData = [[[incMsgPart data] retain] retain];
// NSString *smsText = (NSString*)[[NSString alloc] initWithData:smsData encoding:NSASCIIStringEncoding] ;
NSString *smsText = [NSString stringWithUTF8String:[smsData bytes]];
NSLog(@"senderNumber = %@,text =%@",senderNumber,smsText);
}
}
}
// [pool release];
}
引用
注入监听:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
id ct = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(ct, NULL, callback, NULL, NULL, CFNotificationSuspensionBehaviorDrop);
}
分享到:
相关推荐
3. **权限请求**:尽管设备已越狱,仍需确保用户已授予你的应用接收短信的权限。这可能需要通过越狱环境中的特殊方法完成,因为正常情况下,iOS不会提供这样的API。 4. **测试与调试**:在越狱设备上进行测试是非常...
【iOS 8.1.2 完美越狱工具】 iOS 越狱是指通过特定的软件工具,绕过苹果公司的安全限制,使用户能够访问iOS设备的底层系统,安装未经苹果官方App Store批准的应用程序、插件和主题。这个过程涉及到iOS系统的内核层...
5. **越狱版特性**:由于是越狱版,360手机卫士可以更深入地集成到iOS系统中,利用如`mobilesubstrate_0.9.4001_iphoneos-arm.deb`这样的插件框架,增强其功能和控制权限,提供更全面的安全防护。然而,越狱也可能...
5. **等待完成**:越狱过程中设备会自动重启多次,用户需耐心等待,直至工具显示越狱成功。 6. **安装Cydia**:越狱完成后,设备上会出现Cydia图标,这是一个第三方应用商店,用户可以从中下载各种越狱插件和未授权...
非越狱手机Hook技术是一种在不越狱iOS设备的情况下,改变或扩展应用程序行为的技术。它主要依赖于动态库注入和Method Swizzling等方法,使得开发者能够在运行时修改应用的行为,通常用于测试、调试或者增强应用的...
在本主题中,我们关注的是"iPhone 5"在运行iOS 6.1.2版本时的越狱过程。 iPhone 5越狱for6.1.2涉及到以下几个关键知识点: 1. **iOS系统版本**:iOS 6.1.2是Apple在2013年发布的一个操作系统版本,对于当时的...
使用这样的脚本需要一定的技术背景,包括对iOS系统、越狱机制以及JavaScript的理解,同时也需注意,绕过越狱检测可能会违反软件的使用条款,甚至触犯法律,因此务必谨慎操作。 在探索和学习这个脚本的过程中,你...
总的来说,360手机卫士企业版是iOS设备的一款理想安全工具,它在无需越狱的前提下,提供了全面的手机保护,包括电话拦截、防病毒、隐私保护等多个层面,确保用户的设备安全和个人信息安全。通过有效的描述文件,用户...
由于苹果的安全限制,直接拦截电话在iOS上通常是不可能的,除非使用越狱设备。 3. **短信功能集成**:与短信功能交互则需要用到`MessageUI`框架,它提供了展示、发送和读取短信的接口。同样,苹果的沙箱机制限制了...
标题中的“不越狱 可显示来电归属地”意味着我们讨论的是一个针对iPhone用户的解决方案,无需越狱手机,即可在接到来电时显示来电号码的归属地信息。这对于识别未知来电,防止骚扰电话或者欺诈电话非常有用。越狱...
本资源"专注于非越狱环境下iOS应用逆向研究,从dylib注入,应用重签名到App Hook.zip"涵盖了一系列关键知识点,主要集中在非越狱设备上的iOS应用逆向技术。 首先,我们要了解的是“非越狱环境”。在非越狱的iOS设备...
在iOS平台上,越狱开发是一种特殊形式的软件开发,它允许开发者绕过Apple的官方限制,获取设备的底层权限,从而实现更多的自定义功能和应用。本教程将深入讲解如何手动搭建iPhone越狱开发环境,并以一个名为"Hook...
越狱助手最新版是一款专为iOS设备用户设计的越狱工具,它可以帮助用户轻松地对iPhone、iPad等设备进行越狱操作。越狱是iOS系统中一个术语,指的是通过特定的技术手段绕过苹果官方的软件限制,使得用户可以安装非App ...
第二部分为工具篇,介绍一系列基于Mac和iOS平台的配套工具,并且重点讲解其中的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/...
在非越狱设备上对WeChat.app进行Hook是一种高级的技术实践,主要涉及到iOS应用安全、逆向工程和动态代码插桩。Swift作为一种强大的编程语言,虽然原生并不支持这种操作,但通过一些第三方库和技巧,我们可以实现这个...
对于iOS用户而言,GM浏览器的一个显著优势是其与系统集成良好,能够在不越狱的情况下提供丰富的自定义选项。用户可以根据个人需求调整浏览器的主题、设置广告拦截器,甚至自定义快捷方式,提升浏览体验。此外,GM...
标题中的“iphone360手机卫士”指的是这款专为iOS设备打造的手机安全应用,而描述中提到的“360手机卫士2.3.0,需要的可以下载”,暗示了这是一个特定版本的软件,用户可以根据自己的需求进行下载。 在标签中,...
360手机卫士企业版是一款全面的手机安全解决方案,它不仅能够帮助用户抵御病毒、木马的侵袭,还提供了一系列实用的功能,如骚扰电话拦截、垃圾短信过滤、隐私保护等。其中,“手机归属地”查询功能是一项独特且实用...