有名人_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
よくわかりません。
誰かが私に正しい方向を示してくれたら、彼らの助けに感謝します.