IOS越狱如何拦截短信/短信

Pas*_*cal 12 sms hook jailbreak intercept ios

我目前正在尝试编写一个拦截文本消息的应用程序,并根据该消息的内容做出反应.我试图_receivedMessage:(struct __CKSMSRecord *)message replace:(BOOL)replace在CKSMSService类中挂钩方法,但这似乎根本没有被调用.

有人可以告诉我我必须挂钩的功能/类吗?我需要在文本消息显示并存储到数据库之前拦截它.我在IOS 5.0.1上.

真的很感激任何帮助.

raj*_*agp 10

此代码段应拦截SMS消息 - 您可以将其扩展为其他类型的通知.也适用于iOS 5.0.1.但是不适用于iMessages.与CoreTelephony框架链接(有一堆私有头,你可以在其中进行类转储)

#include <dlfcn.h>

#define CORETELPATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"
id(*CTTelephonyCenterGetDefault)();

void (*CTTelephonyCenterAddObserver) (id,id,CFNotificationCallback,NSString*,void*,int);


static void telephonyEventCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
    NSString *notifyname=(NSString *)name;
    if ([notifyname isEqualToString:@"kCTMessageReceivedNotification"])//received SMS
    {
        NSLog(@" SMS Notification Received :kCTMessageReceivedNotification");
        // Do blocking here. 
    }
}

-(void) registerCallback {

 void *handle = dlopen(CORETELPATH, RTLD_LAZY);
    CTTelephonyCenterGetDefault = dlsym(handle, "CTTelephonyCenterGetDefault");
    CTTelephonyCenterAddObserver = dlsym(handle,"CTTelephonyCenterAddObserver");
    dlclose(handle);
    id ct = CTTelephonyCenterGetDefault();

    CTTelephonyCenterAddObserver(
                                 ct, 
                                 NULL, 
                                 telephonyEventCallback,
                                 NULL,
                                 NULL,
                                 CFNotificationSuspensionBehaviorDeliverImmediately);
}
Run Code Online (Sandbox Code Playgroud)