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

#iphone #ios #jailbreak #nsfilemanager

#iPhone #iOS #джейлбрейк #nsfilemanager

Вопрос:

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

К сожалению, когда я просматриваю каждый каталог, все они возвращают (кроме самого запущенного приложения) FALSE для isDirectory и NULL для attributesOfItemAtPath. Мне нужно иметь доступ к .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:(amp;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 будет иметь полный root-доступ (будучи взломанным устройством и все такое).

Комментарии:

1. джейлбрейк телефона не обязательно изменит результаты Apple API. возможно, вам потребуется получить доступ к базовым вызовам файловой системы UNIX, чтобы получить этот доступ (предостережение: я никогда этого не делал, но это имеет смысл для меня из-за многолетнего программирования в unix и NeXTSTEP / OS X)

Ответ №1:

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