【发布时间】:2011-06-08 05:22:58
【问题描述】:
我正在尝试编写一些代码来检查或更改(不是恶意或类似的)安装在用户设备上的其他 iOS 应用程序。特别是在越狱设备上。在越狱设备上,我可以查看应用程序沙箱之外的文件,当我使用 NSFileManager 查看“/private/var/mobile/Applications/”时,我看到了目录列表(以某种十六进制方案命名) .正如预期的那样。
不幸的是,当我查看每个目录时,所有目录都返回(除了正在运行的应用程序本身)isDirectory 为 FALSE,attributesOfItemAtPath 为 NULL。我需要访问每个文件夹中的 .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 将具有完整的 root 访问权限(作为越狱设备等等)。
【问题讨论】:
-
越狱手机不一定会改变 Apple API 结果。您可能需要访问底层 UNIX 文件系统调用才能获得该访问权限(警告:我从未这样做过,但这对我多年的 unix 和 NeXTSTEP/OS X 编码来说是有意义的)
标签: iphone ios jailbreak nsfilemanager