2015-07-07 4 views
0

В моем приложении мне нужно иногда проверять, является ли работающее устройство джейлбрейком или нет. Это наиболее полный метод я нашел:Метод проверки джейлбрейка, яблоко одобрит это?

BOOL Jail=NO; 
if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"] || 
    [[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/MobileSubstrate.dylib"] || 
    [[NSFileManager defaultManager] fileExistsAtPath:@"/bin/bash"] || 
    [[NSFileManager defaultManager] fileExistsAtPath:@"/usr/sbin/sshd"] || 
    [[NSFileManager defaultManager] fileExistsAtPath:@"/etc/apt"] || 
    [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] || 
    [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://package/com.example.package"]]) { 
    Jail= YES; 
} 

FILE *f = NULL ; 
if ((f = fopen("/bin/bash", "r")) || 
    (f = fopen("/Applications/Cydia.app", "r")) || 
    (f = fopen("/Library/MobileSubstrate/MobileSubstrate.dylib", "r")) || 
    (f = fopen("/usr/sbin/sshd", "r")) || 
    (f = fopen("/etc/apt", "r"))) { 
    fclose(f); 
    Jail= YES; 
} 
fclose(f); 

NSError *error; 
NSString *stringToBeWritten = @"This is a test."; 
[stringToBeWritten writeToFile:@"/private/jailbreak.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error]; 
[[NSFileManager defaultManager] removeItemAtPath:@"/private/jailbreak.txt" error:nil]; 
if(error == nil) 
{ 
    Jail= YES; 
} 

Что я не нашел, это четкий ответ на вопрос: «Apple, одобрит этот код» , В руководящих принципах я могу читать:

"Apps that read or write data outside its designated container area will be rejected". 

Однако ясно, что я пытаюсь писать или читать только, чтобы проверить, если устройство взломанный ... Так что есть кто-то, что успешно представили этот код яблоко?

+0

возможно дубликат [Как обнаружить, что приложение IOS работает на взломанный телефон?] (Http://stackoverflow.com/questions/413242/how -do-i-detect-that-an-ios-app-is-running-on-a-jailbroken-phone) – thelaws

+0

Прочитать комментарий к этому ответу: http://stackoverflow.com/a/26712383/329801 – thelaws

+0

thank's Я не читал этого ... Во всяком случае, это всего лишь комментарий, только одного человека, и я не знаю, действительно ли этот пользователь действительно отправил код, или если он только предположил, что код будет принят – user31929

ответ

0

Может быть.

Многие разработчики были отклонены для включения проверки джейлбрейка, а многие нет. Если вы отправляете с помощью джейлбрейка, вы должны NOT ожидать одобрения (хотя на этот раз вы можете пройти через процесс обзора).

2

Это код переданного приложения

BOOL bash = NO; 

FILE *f = fopen("/bin/bash", "r"); 
if (f != NULL) 
{ 
    bash = YES; 
} 
fclose(f); 

return bash; 

Таким образом, я считаю, что ваш код будет принят слишком

 Смежные вопросы

  • Нет связанных вопросов^_^