《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

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

 找回密码
 立即注册
查看: 9554|回复: 4

iOS 越狱设备,获取任意App的沙盒路径

[复制链接]

7

主题

56

帖子

287

积分

中级会员

Rank: 3Rank: 3

积分
287
发表于 2019-7-23 22:56:52 | 显示全部楼层 |阅读模式
如何获取任意App的沙盒路径?根据 bundle id,或者其他信息。
回复

使用道具 举报

119

主题

582

帖子

2626

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2626
发表于 2019-7-23 23:18:22 | 显示全部楼层
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. }
复制代码


回复

使用道具 举报

7

主题

56

帖子

287

积分

中级会员

Rank: 3Rank: 3

积分
287
 楼主| 发表于 2019-7-24 09:07:50 | 显示全部楼层
exchen 发表于 2019-7-23 23:18
LSApplicationWorkspace 和 LSApplicationProxy 里的一系列方法可以获取应用的相关信息。
先遍历所有所有应 ...

那如果还原沙盒路径内的文件如何做,就是恢复到App初安装状态
回复

使用道具 举报

119

主题

582

帖子

2626

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2626
发表于 2019-7-24 13:50:23 | 显示全部楼层
你是说清空沙盒吧?删除沙盒目录下的那几个文件,Documents,Library 等,然后再新建就好了。不过注意要设置文件权限为 mobile,如果新建的文件目录是 root,应用可能没有权限写入文件。
细节你可以看九阴真经里写的很清楚。哈哈。
回复

使用道具 举报

7

主题

56

帖子

287

积分

中级会员

Rank: 3Rank: 3

积分
287
 楼主| 发表于 2019-7-24 17:12:39 | 显示全部楼层
exchen 发表于 2019-7-24 13:50
你是说清空沙盒吧?删除沙盒目录下的那几个文件,Documents,Library 等,然后再新建就好了。不过注意要设 ...

好的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2024-9-17 07:06 , Processed in 0.019236 second(s), 19 queries .

iOS安全论坛

© 2017-2020 iOS Hacker Inc. 京ICP备17074153号-2

快速回复 返回顶部 返回列表