iOS 安全论坛 - 专注于研究 iOS 安全

标题: iOS 越狱设备,获取任意App的沙盒路径 [打印本页]

作者: PIGFLY    时间: 2019-7-23 22:56
标题: iOS 越狱设备,获取任意App的沙盒路径
如何获取任意App的沙盒路径?根据 bundle id,或者其他信息。

作者: exchen    时间: 2019-7-23 23:18
LSApplicationWorkspace 和 LSApplicationProxy 里的一系列方法可以获取应用的相关信息。
先遍历所有所有应用列表,然后从应用列表里过滤目录应用,从中获取包括沙盒路径、可执行文件名、bundleID、版本等等。
比如获取微信的沙盒目录(com.tencent.xin) 实例如下:
  1. -(NSString*) getWeChatSandboxPath{

  2.     NSMutableArray *arrayAppInfo = [[NSMutableArray alloc] init];

  3.     //获取应用程序列表
  4.     Class cls = NSClassFromString(@"LSApplicationWorkspace");
  5.     id s = [(id)cls performSelector:NSSelectorFromString(@"defaultWorkspace")];
  6.     NSArray *array = [s performSelector:NSSelectorFromString(@"allApplications")];

  7.     Class LSApplicationProxy_class = NSClassFromString(@"LSApplicationProxy");

  8.     for (LSApplicationProxy_class in array){

  9.         NSString *strBundleID = [LSApplicationProxy_class performSelector:
  10.             @selector(bundleIdentifier)];

  11.         //获取应用的相关信息
  12.         NSString *strVersion =  [LSApplicationProxy_class performSelector:@selector(bundleVersion)];
  13.         NSString *strShortVersion =  [LSApplicationProxy_class performSelector:
  14.             @selector(shortVersionString)];

  15.         NSURL *strContainerURL = [LSApplicationProxy_class performSelector:@selector(containerURL)];
  16.         NSString *strContainerDataPath = [strContainerURL path];

  17.         NSURL *strResourcesDirectoryURL = [LSApplicationProxy_class performSelector:
  18.             @selector(resourcesDirectoryURL)];
  19.         NSString *strContainerBundlePath = [strResourcesDirectoryURL path];

  20.         NSString *strLocalizedName = [LSApplicationProxy_class performSelector:
  21.             @selector(localizedName)];
  22.         NSString *strBundleExecutable = [LSApplicationProxy_class performSelector:
  23.             @selector(bundleExecutable)];

  24.         //NSLog(@"bundleID:%@ localizedName: %@", strBundleID, strLocalizedName);

  25.         if ([strBundleID isEqualToString:@"com.tencent.xin"]) {

  26.             return strContainerDataPath;
  27.         }
  28.     }

  29.     return nil;
  30. }
复制代码



作者: PIGFLY    时间: 2019-7-24 09:07
exchen 发表于 2019-7-23 23:18
LSApplicationWorkspace 和 LSApplicationProxy 里的一系列方法可以获取应用的相关信息。
先遍历所有所有应 ...

那如果还原沙盒路径内的文件如何做,就是恢复到App初安装状态
作者: exchen    时间: 2019-7-24 13:50
你是说清空沙盒吧?删除沙盒目录下的那几个文件,Documents,Library 等,然后再新建就好了。不过注意要设置文件权限为 mobile,如果新建的文件目录是 root,应用可能没有权限写入文件。
细节你可以看九阴真经里写的很清楚。哈哈。
作者: PIGFLY    时间: 2019-7-24 17:12
exchen 发表于 2019-7-24 13:50
你是说清空沙盒吧?删除沙盒目录下的那几个文件,Documents,Library 等,然后再新建就好了。不过注意要设 ...

好的




欢迎光临 iOS 安全论坛 - 专注于研究 iOS 安全 (https://www.ioshacker.net/) Powered by Discuz! X3.4