NSFileManager не может просматривать ниже определенные каталоги

Я пытаюсь написать какой-то код для проверки или изменения (не злонамеренного или чего-то подобного) других приложений iOS, установленных на пользовательском устройстве. В частности, на устройстве Jailbroken. На поврежденном устройстве я могу просматривать файлы вне изолированной программной среды приложения, и когда я смотрю на "/private/var/mobile/Applications/" с помощью NSFileManager, я вижу список каталогов (названных в виде шестнадцатеричной схемы), Как и ожидалось.

К сожалению, когда я смотрю на каждый каталог, все они возвращаются (помимо самого запущенного приложения) FALSE для isDirectory и NULL для атрибутовOfItemAtPath. Мне нужно иметь доступ к .app внутри каждой из этих папок, но я не могу видеть их ниже, и каждый возвращает неверную информацию.

Ниже приведен код, который я использую:

NSString *path = @"/private/var/mobile/Applications/";
 NSFileManager *manager = [NSFileManager defaultManager];
 NSArray *fileList = [manager contentsOfDirectoryAtPath:path error:nil]; 
 for(NSString *file in fileList) {
 NSString *fullpath = [path stringByAppendingPathComponent:file];
 NSLog(@"fullpath = %@", fullpath);
 BOOL isDir = nil;
 [manager fileExistsAtPath:fullpath isDirectory:(&isDir)];
 if(isDir) {
 NSLog(@"isDir");
 //NSArray *subfiles = [self filesBeneathDirectory:fullpath withExtension:extension];
 } else {
 NSLog(@"!isDir");
 NSDictionary *attributes = [manager attributesOfItemAtPath:fullpath error:nil];
 NSLog(@"attributes = %@",attributes);
 }
 }

Буду признателен за помощь в обнаружении файлов под этими каталогами. Я предположил, что iPhone будет иметь полный корневой доступ (являющийся джейлбрейк-устройством и все).

1 ответ

Из вашего приложения вы можете получить доступ к своей песочнице. Это не будет хорошо, если вы будете обращаться к файлам в других каталогах, есть некоторые очень веские причины, по которым Apple ограничила доступ.

licensed under cc by-sa 3.0 with attribution.