如何从字符串中挂接 obj-c 选择器(通过调整)?
How to hook obj-c selector from string(by tweak)?
我们可以得到 ios 已安装的包 ID 列表,如下所示:
Class lsawsc = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];
NSArray *arr = [workspace performSelector:NSSelectorFromString(@"allInstalledApplications")];
for (NSString * tmp in arr)
{
NSLog(@"%@", tmp);
}
arr(NSArray) 是 bundle id 列表。而且我想在调整中通过钩子隐藏一些包 ID。但是不知道hook selector的代码怎么写...请帮忙,谢谢!
您可以只用过滤后的应用填充一个新数组并使用它:
NSArray *installedApps = /* result of allInstalledApplications invocation */;
NSMutableArray *filteredApps = [NSMutableArray new];
for (NSString *app in installedApps) {
if (/* filter/hook allows app */) {
[filteredApps addObject:app];
}
}
// Use filteredApps
注意:LSApplicationWorkspace 是私有的API,因此使用它会阻止在 Apple App Store 中发布。
我们可以得到 ios 已安装的包 ID 列表,如下所示:
Class lsawsc = objc_getClass("LSApplicationWorkspace");
NSObject* workspace = [lsawsc performSelector:NSSelectorFromString(@"defaultWorkspace")];
NSArray *arr = [workspace performSelector:NSSelectorFromString(@"allInstalledApplications")];
for (NSString * tmp in arr)
{
NSLog(@"%@", tmp);
}
arr(NSArray) 是 bundle id 列表。而且我想在调整中通过钩子隐藏一些包 ID。但是不知道hook selector的代码怎么写...请帮忙,谢谢!
您可以只用过滤后的应用填充一个新数组并使用它:
NSArray *installedApps = /* result of allInstalledApplications invocation */;
NSMutableArray *filteredApps = [NSMutableArray new];
for (NSString *app in installedApps) {
if (/* filter/hook allows app */) {
[filteredApps addObject:app];
}
}
// Use filteredApps
注意:LSApplicationWorkspace 是私有的API,因此使用它会阻止在 Apple App Store 中发布。