我想为那些阻止来自电话号码的消息的越狱设备(在iOS 7中)编写一个调整。首先,我在this link中使用了creker的第二个答案来编写修改。这是我的代码:
#import <substrate.h>
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <libkern/OSAtomic.h>
#import "CTMessage.h"
#import "CTMessageCenter.h"
id(*_processReceivedMessage_orig)(id, SEL, CTMessage*) = NULL;
id _processReceivedMessage_hooked(id self, SEL _cmd, CTMessage* msg);
%hook IMDService
-(void)loadServiceBundle:(NSBundle*)bundle
{
if ([[bundle bundleIdentifier] isEqualToString:@"com.apple.SMSPlugin"] && [bundle isLoaded]) // not sure if the bundle identifier is correct!
{
MSHookMessageEx(objc_getClass("SMSServiceSession"),
@selector(_processReceivedMessage:),
(IMP)_processReceivedMessage_hooked,
(IMP*)&_processReceivedMessage_orig);
}
}
%end
id _processReceivedMessage_hooked(id self, SEL _cmd, CTMessage* msg)
{
NSObject<CTMessageAddress>* phonenumber = [msg sender];
NSString *senderNumber = (NSString*) [phonenumber canonicalFormat]; // sender number
if ([senderNumber isEqualToString:@"+012345678910"])
[[CTMessageCenter sharedMessageCenter] acknowledgeIncomingMessageWithId:[msg messageId]];
else
return _processReceivedMessage_orig(self, _cmd, msg);
}还有我的卷宗:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Filter</key>
<dict>
<key>Bundles</key>
<array>
<string>com.apple.imagent</string>
</array>
</dict>
</dict>
</plist>主要的问题是loadServiceBundle永远不会上钩,我的函数也不会被调用!如果我在iPhone上安装了微调,当手机收到短信并发出消息警报时,不会发生任何事情。我自己认为问题是我在为iOS 7写作,但问题是iOS 6。如果问题是这样的,你能告诉我该怎么做吗?
我遇到的另一个问题是loadServiceBundle方法。正如您在编写的代码中所看到的,我不知道应该筛选哪个包标识符。如果我选择了正确的包标识符,请告诉我。
如果我的代码中还有其他问题,我很乐意告诉我。
发布于 2014-04-10 19:26:42
com.apple.imservice.sms。我已经张贴短信服务目录路径(/System/Library/Messages/PlugIns/SMS.imservice/)。在这里,您可以找到Info.plist,它包含插件- com.apple.imservice.sms的包id。IMDService -(void)loadServiceBundle,没有争论。然后,您可以使用[[self bundle] bundleIdentifier]获得包id。此外,不要忘记在挂起loadServiceBundle或甚至检查包id之前调用_processReceivedMessage:的原始实现。最初的实现实际上是加载插件,所以调用它应该是您做的第一件事。https://stackoverflow.com/questions/22989967
复制相似问题