设备引脚控制器类需要哪些权利/权限?

时间:2013-03-07 10:19:38

标签: iphone ios objective-c jailbreak

我的iphone应用程序已越狱,我不在乎应用程序商店是否拒绝了我的应用程序。

我希望在我的程序中使用私有API DevicePINController

我最近发现名为DevicePINController的私有API,但它无法正常工作。应用程序运行,除了它的方法之外什么也不做。它的BOOL方法总是返回false。设置方法不做任何事情。

有谁知道设备引脚控制器需要哪些权利?

修改:CODE

    id away = [[objc_getClass("DevicePINController") alloc]init];

    NSLog( [away simplePIN] ? @"YES":@"NO" );
    NSLog( [away _isBlocked] ? @"YES":@"NO" );
    NSLog( [away _attemptValidationWithPIN:@"1234"] ? @"YES":@"NO" );

    NSLog(@"%d",[away _unblockTime] );
    NSLog(@"%@",[away blockedStateKey] );
    NSLog(@"%@",[away blockTimeIntervalKey] );
    NSLog(@"%@",[away failedAttemptsKey] );
    NSLog(@"%d",[away pinLength] );
    NSLog(@"%@",[away stringsBundle] );

    NSLog(@"%@",[away stringsTable]);

每个方法调用都会返回错误的答案。有些只返回null。布尔总是回归NO。

1 个答案:

答案 0 :(得分:1)

所以,第一个问题是你有一个nil对象。在Objective-C中,向nil对象发送消息将不起作用。如果该方法应该返回BOOL,则默认值BOOLNO,因此如果离开为零,您将获得一堆NO。

要回答您的后续问题(在您测试之后确实有nil值)... 执行需要确保您的应用打开图书馆DevicePINController已定义。否则,它将不知道该类是什么,并且将无法实例化它。因此,objc_getClass会返回nil对象。

对于该课程,它在 Preferences.framework 中定义,位于

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/PrivateFrameworks/Preferences.framework

(显然,请调整您的安装目录和/或SDK版本)

您可以通过转到目标设置将其添加到Xcode中的项目中 - > 构建阶段 - > 将二进制文件链接到库并添加它。您当然必须导航到上面的目录,因为它是一个私有框架,并且不会显示在初始弹出列表中。

或者,您可以使用代码动态加载库:

#import <objc/runtime.h>
#include <dlfcn.h>

void* libHandle = dlopen("/System/Library/PrivateFrameworks/Preferences.framework/Preferences", RTLD_LAZY);

id away = [[objc_getClass("DevicePINController") alloc] init];
if (away == nil) {
    NSLog(@"object is nil");
} else {
    if ([away respondsToSelector: @selector(simplePIN)]) {
        NSLog(@"object responds to selector!");
    }
}

close(libHandle);

我在iOS 6.1(越狱)上进行了测试,但它确实有效。

顺便说一下,请将您的个人识别码更改为1234以外的其他人。我的行李箱上有相同的组合;)