`
小月峰
  • 浏览: 21522 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

IOS 5 拦截手机短信(需越狱)

阅读更多
引用

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);
}



4
1
分享到:
评论
5 楼 小月峰 2014-05-12  
caroblue 写道
谢谢分享,我下载你的代码可以运行,但是我自己在xcode5.0 上编译确编译不过,不知道为什么

wespaul 写道
你好,关于短信拦截有几个技术问题想请教下,方便的话请联系qq:252067276,谢谢!

wujita02 写道
您好,能不能合您交流下。我能执行回调。但是在回调的时候,找不到刚进来的信息,信息内容一直是空。代码合您是一样的。我的qq:610896006.或者您留下联系方式,期待和您的交流。


引用

以下是那段时间研究的最新战果,希望能够帮助更多的人!
具体做法,是使用iosOpenDev越狱开发工具,使用hook,监听SpringBorad.h中的didFinishLaunchWithOptions 方法
引用

可见这儿的链接,一起学习,然而,可以解决苹果系统中一条命令dpkg 安装deb文件的话,就可以和其他的应用一起打包成ipa发布至苹果appstore了!
[url=http://www.devdiv.com/iOS_iPhone-ios_-thread-126106-1-1.html]
[url=http://www.devdiv.com/iOS_iPhone-_dpkg_deb_-thread-128169-1-1.html]



4 楼 caroblue 2013-12-18  
谢谢分享,我下载你的代码可以运行,但是我自己在xcode5.0 上编译确编译不过,不知道为什么
3 楼 wespaul 2013-09-13  
你好,关于短信拦截有几个技术问题想请教下,方便的话请联系qq:252067276,谢谢!
2 楼 wujita02 2013-05-31  
您好,能不能合您交流下。我能执行回调。但是在回调的时候,找不到刚进来的信息,信息内容一直是空。代码合您是一样的。我的qq:610896006.或者您留下联系方式,期待和您的交流。
1 楼 wujita02 2013-05-30  
厉害,不能不佩服

相关推荐

    ios 短信接收,越狱

    3. **权限请求**:尽管设备已越狱,仍需确保用户已授予你的应用接收短信的权限。这可能需要通过越狱环境中的特殊方法完成,因为正常情况下,iOS不会提供这样的API。 4. **测试与调试**:在越狱设备上进行测试是非常...

    IOS8.1.2完美越狱工具

    【iOS 8.1.2 完美越狱工具】 iOS 越狱是指通过特定的软件工具,绕过苹果公司的安全限制,使用户能够访问iOS设备的底层系统,安装未经苹果官方App Store批准的应用程序、插件和主题。这个过程涉及到iOS系统的内核层...

    360手机卫士(越狱版)

    5. **越狱版特性**:由于是越狱版,360手机卫士可以更深入地集成到iOS系统中,利用如`mobilesubstrate_0.9.4001_iphoneos-arm.deb`这样的插件框架,增强其功能和控制权限,提供更全面的安全防护。然而,越狱也可能...

    iphone越狱工具

    5. **等待完成**:越狱过程中设备会自动重启多次,用户需耐心等待,直至工具显示越狱成功。 6. **安装Cydia**:越狱完成后,设备上会出现Cydia图标,这是一个第三方应用商店,用户可以从中下载各种越狱插件和未授权...

    非越狱手机hook技术

    非越狱手机Hook技术是一种在不越狱iOS设备的情况下,改变或扩展应用程序行为的技术。它主要依赖于动态库注入和Method Swizzling等方法,使得开发者能够在运行时修改应用的行为,通常用于测试、调试或者增强应用的...

    iphone 5越狱for6.1.2

    在本主题中,我们关注的是"iPhone 5"在运行iOS 6.1.2版本时的越狱过程。 iPhone 5越狱for6.1.2涉及到以下几个关键知识点: 1. **iOS系统版本**:iOS 6.1.2是Apple在2013年发布的一个操作系统版本,对于当时的...

    Frida-Scripts:iOS越狱检测绕过的Frida脚本

    使用这样的脚本需要一定的技术背景,包括对iOS系统、越狱机制以及JavaScript的理解,同时也需注意,绕过越狱检测可能会违反软件的使用条款,甚至触犯法律,因此务必谨慎操作。 在探索和学习这个脚本的过程中,你...

    360手机卫士企业版,与越狱的360效果一样

    总的来说,360手机卫士企业版是iOS设备的一款理想安全工具,它在无需越狱的前提下,提供了全面的手机保护,包括电话拦截、防病毒、隐私保护等多个层面,确保用户的设备安全和个人信息安全。通过有效的描述文件,用户...

    IOS应用源码之【应用】pysl-iPhone电话短信防火墙.rar

    由于苹果的安全限制,直接拦截电话在iOS上通常是不可能的,除非使用越狱设备。 3. **短信功能集成**:与短信功能交互则需要用到`MessageUI`框架,它提供了展示、发送和读取短信的接口。同样,苹果的沙箱机制限制了...

    不越狱 可显示来电归属地

    标题中的“不越狱 可显示来电归属地”意味着我们讨论的是一个针对iPhone用户的解决方案,无需越狱手机,即可在接到来电时显示来电号码的归属地信息。这对于识别未知来电,防止骚扰电话或者欺诈电话非常有用。越狱...

    专注于非越狱环境下iOS应用逆向研究,从dylib注入,应用重签名到App Hook.zip

    本资源"专注于非越狱环境下iOS应用逆向研究,从dylib注入,应用重签名到App Hook.zip"涵盖了一系列关键知识点,主要集中在非越狱设备上的iOS应用逆向技术。 首先,我们要了解的是“非越狱环境”。在非越狱的iOS设备...

    手动搭建iPhone越狱开发Demo

    在iOS平台上,越狱开发是一种特殊形式的软件开发,它允许开发者绕过Apple的官方限制,获取设备的底层权限,从而实现更多的自定义功能和应用。本教程将深入讲解如何手动搭建iPhone越狱开发环境,并以一个名为"Hook...

    越狱助手最新版

    越狱助手最新版是一款专为iOS设备用户设计的越狱工具,它可以帮助用户轻松地对iPhone、iPad等设备进行越狱操作。越狱是iOS系统中一个术语,指的是通过特定的技术手段绕过苹果官方的软件限制,使得用户可以安装非App ...

    iOS应用逆向工程:分析与实战

    第二部分为工具篇,介绍一系列基于Mac和iOS平台的配套工具,并且重点讲解其中的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/...

    swift-在非越狱设备上HookWeChat.app

    在非越狱设备上对WeChat.app进行Hook是一种高级的技术实践,主要涉及到iOS应用安全、逆向工程和动态代码插桩。Swift作为一种强大的编程语言,虽然原生并不支持这种操作,但通过一些第三方库和技巧,我们可以实现这个...

    iOS版浏览器,嗅探功能强大的GM浏览器.txt打包整理.zip

    对于iOS用户而言,GM浏览器的一个显著优势是其与系统集成良好,能够在不越狱的情况下提供丰富的自定义选项。用户可以根据个人需求调整浏览器的主题、设置广告拦截器,甚至自定义快捷方式,提升浏览体验。此外,GM...

    iphone360手机卫士

    标题中的“iphone360手机卫士”指的是这款专为iOS设备打造的手机安全应用,而描述中提到的“360手机卫士2.3.0,需要的可以下载”,暗示了这是一个特定版本的软件,用户可以根据自己的需求进行下载。 在标签中,...

    360手机卫士企业版 有归属地

    360手机卫士企业版是一款全面的手机安全解决方案,它不仅能够帮助用户抵御病毒、木马的侵袭,还提供了一系列实用的功能,如骚扰电话拦截、垃圾短信过滤、隐私保护等。其中,“手机归属地”查询功能是一项独特且实用...

Global site tag (gtag.js) - Google Analytics