2

如您所知,著名的_XPConnectionHasEntitlement已不再适用于 iOS 8,还有其他方法可以通过需要权利的调整来绕过权利吗?我知道这_BSAuditTokenTaskHasEntitlement可能会解决问题,但我无法解决问题。

我正在使用以下代码片段连接到 backboardd 和 assertionsd。

static int (*orig_BSAuditTokenTaskHasEntitlement)(id connection, NSString *entitlement);
static int hooked_BSAuditTokenTaskHasEntitlement(id connection, NSString *entitlement) {
    NSLog(@"Got it.");
    if (xpc_connection_get_pid(connection) == [[UIDevice currentDevice] __qrwaGetPIDForProcess:@"SpringBoard"] && [entitlement isEqualToString:@"com.apple.multitasking.unlimitedassertions"]) {
        return 1;
    } else {
        return orig_BSAuditTokenTaskHasEntitlement(connection, entitlement);
    }
}

%ctor {
          %init;
          MSHookFunction(((int *)MSFindSymbol(NULL, "_BSAuditTokenTaskHasEntitlement")), (int*) hooked_BSAuditTokenTaskHasEntitlement, (int**) &orig_BSAuditTokenTaskHasEntitlement);
}

它的问题是,从未打印过 NSLog 语句。所以我觉得函数的语法有问题_BSAuditTokenTaskHasEntitlement,但不确定。

如果有人指出我正确的方向,我感谢他们的帮助。

4

0 回答 0