App chúng tôi đang làm việc trên đã bị từ chối vì các thiết bị trong quá trình xem xét đã được phát hiện như jailbroken ^^App với phát hiện Jailbreak từ chối của Apple
Để phát hiện một thiết bị jailbroken, một số thử nghiệm đã được thực hiện:
NSString* bundlePath = [[NSBundle mainBundle] bundlePath];
// scan for itunes metadata
BOOL isDirectory = NO;
NSString* directoryPath = [bundlePath stringByAppendingPathComponent:@"SC_Info/"];
BOOL directoryIsAvailable = [[NSFileManager defaultManager] fileExistsAtPath:directoryPath isDirectory:&isDirectory];
BOOL contentSeemsValid = ([[[NSFileManager defaultManager] contentsOfDirectoryAtPath:directoryPath error:NULL] count] == 2);
if (directoryIsAvailable && contentSeemsValid) {
return YES;
}
contentSeemsValid = [[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/iTunesMetadata.plist", bundlePath]];
if (contentSeemsValid) {
return YES;
}
// scan for cydia app
NSURL* testURL = [NSURL URLWithString:@"cydia://"];
if ([[UIApplication sharedApplication] canOpenURL:testURL]) {
return YES;
}
// scan for paths available
NSArray* paths = @[@"/Applications/Cydia.app", @"/Applications/RockApp.app", @"/Applications/Icy.app", @"/usr/sbin/sshd", @"/usr/bin/sshd", @"/private/var/lib/apt", @"/private/var/lib/cydia", @"/private/var/stash", @"/usr/libexec/sftp-server"];
for (NSString* string in paths) {
if ([[NSFileManager defaultManager] fileExistsAtPath:string]) {
return YES;
}
}
// scan for forking
int forkValue = fork();
if (forkValue >= 0) {
return YES;
}
// try to write in private space
NSString* testString = @"test";
NSError* error = nil;
[testString writeToFile:@"/private/test.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (error == nil) {
return YES;
}
// seems not jailbroken
return NO;
Một (hoặc nhiều) Thử nghiệm này trả về CÓ trên Thiết bị Apple sử dụng để Xem xét, nhưng không có Thiết bị nào trong số các Thiết bị của chúng tôi. Mà nó có thể là ai? Có ai biết thêm chi tiết về các thiết bị mà Apple sử dụng cho Đánh giá không? Bất kỳ gợi ý hoặc các Guesses khác? (Bối cảnh từ App là HealthCare trong bệnh viện, vì vậy chúng tôi cần phải chắc chắn rằng các dữ liệu bệnh nhân đã tiết kiệm)
Best Regards,
Zeek
Những xét nghiệm dường như không phải là rất vững chắc và rằng 'fork()' test trông rất nguy hiểm ... Không phải là có bất cứ điều gì để làm với câu hỏi của bạn ... – trojanfoe
Tại sao bạn không chỉ kháng cáo từ chối, chỉ cần nói rằng bạn phát hiện jailbreak để đảm bảo an toàn dữ liệu. – rckoenes
@rckoenes: Dữ liệu bệnh nhân rất nhạy cảm, vì vậy chúng tôi xóa tất cả dữ liệu và thoát khỏi ứng dụng. – Zeek