美文网首页iOS应用程序安全
iOS逆向----获取手机安装的所有App列表及路径

iOS逆向----获取手机安装的所有App列表及路径

作者: 捡书 | 来源:发表于2021-11-03 17:32 被阅读0次

    其实就是iOS11之前获取App列表的代码,只不过iOS11及之后的版本在非越狱手机上无法使用这个API获取了,但是越狱手机不受限制,依然可以用

    + (void)installedApplications {
        Class lsawsc = objc_getClass("LSApplicationWorkspace");
        NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];
        NSArray *apps = [workspace performSelector:NSSelectorFromString(@"allInstalledApplications")];
        Class LSApplicationProxy_class = objc_getClass("LSApplicationProxy");
        for (int i = 0; i < apps.count; i++) {
            NSObject *temp = apps[i];
            if ([temp isKindOfClass:LSApplicationProxy_class]) {
                NSString *appBundleId = [temp performSelector:NSSelectorFromString(@"applicationIdentifier")];
                NSString *appName = [temp performSelector:NSSelectorFromString(@"localizedName")];
                NSString * type = [temp performSelector:NSSelectorFromString(@"applicationType")];
                NSString * shortVersionString = [temp performSelector:NSSelectorFromString(@"shortVersionString")];
                NSString * containerURL = [[temp performSelector:NSSelectorFromString(@"containerURL")] path];
                NSString * resourcesDirectoryURL = [[temp performSelector:NSSelectorFromString(@"resourcesDirectoryURL")] path];
                NSString * bundleExecutable = [temp performSelector:NSSelectorFromString(@"bundleExecutable")];
                NSLog(@"应用类型: %@", type);
                NSLog(@"BundleId: %@", appBundleId);
                NSLog(@"Name: %@", appName);
                NSLog(@"Version: %@", shortVersionString);
                NSLog(@"沙盒路径: %@", containerURL);
                NSLog(@"App包路径: %@", resourcesDirectoryURL);
                NSLog(@"TargetName: %@", bundleExecutable);
                NSLog(@"=============================================");
            }
        }
    }
    
    

    获取更详细的信息

    + (void)listApps {
        id space = [NSClassFromString(@"LSApplicationWorkspace") performSelector:@selector(defaultWorkspace)];
        NSArray *plugins = [space performSelector:@selector(installedPlugins)];
        NSMutableSet *list = [[NSMutableSet alloc] init];
        for (id plugin in plugins) {
            id bundle = [plugin performSelector:@selector(containingBundle)];
            if (bundle)
                [list addObject:bundle];
        }
        int a = 1;
        for (id plugin in list) {
            NSLog(@"================= %d =================",a);
            a++;
            NSLog(@"bundleIdentifier =%@", [plugin performSelector:@selector(bundleIdentifier)]);//bundleID
            
            NSLog(@"applicationDSID =%@", [plugin performSelector:@selector(applicationDSID)]);
            NSLog(@"applicationIdentifier =%@", [plugin performSelector:@selector(applicationIdentifier)]);
            NSLog(@"applicationType =%@", [plugin performSelector:@selector(applicationType)]);
            NSLog(@"dynamicDiskUsage =%@", [plugin performSelector:@selector(dynamicDiskUsage)]);
    
            NSLog(@"itemID =%@", [plugin performSelector:@selector(itemID)]);
            NSLog(@"itemName =%@", [plugin performSelector:@selector(itemName)]);
            NSLog(@"minimumSystemVersion =%@", [plugin performSelector:@selector(minimumSystemVersion)]);
            
            NSLog(@"requiredDeviceCapabilities =%@", [plugin performSelector:@selector(requiredDeviceCapabilities)]);
            NSLog(@"sdkVersion =%@", [plugin performSelector:@selector(sdkVersion)]);
            NSLog(@"shortVersionString =%@", [plugin performSelector:@selector(shortVersionString)]);
            
            NSLog(@"sourceAppIdentifier =%@", [plugin performSelector:@selector(sourceAppIdentifier)]);
            NSLog(@"staticDiskUsage =%@", [plugin performSelector:@selector(staticDiskUsage)]);
            NSLog(@"teamID =%@", [plugin performSelector:@selector(teamID)]);
            NSLog(@"vendorName =%@", [plugin performSelector:@selector(vendorName)]);
        }
    }
    
    

    相关文章

      网友评论

        本文标题:iOS逆向----获取手机安装的所有App列表及路径

        本文链接:https://www.haomeiwen.com/subject/zbqdpltx.html