parent
5d28c7ca6d
commit
b5aff15919
|
|
@ -40,7 +40,6 @@ import de.robv.android.xposed.XposedHelpers;
|
||||||
import de.robv.android.xposed.callbacks.XC_LoadPackage;
|
import de.robv.android.xposed.callbacks.XC_LoadPackage;
|
||||||
|
|
||||||
public class LoadedApkGetCLHooker extends XC_MethodHook {
|
public class LoadedApkGetCLHooker extends XC_MethodHook {
|
||||||
|
|
||||||
private final LoadedApk loadedApk;
|
private final LoadedApk loadedApk;
|
||||||
private final String packageName;
|
private final String packageName;
|
||||||
private final String processName;
|
private final String processName;
|
||||||
|
|
@ -64,7 +63,7 @@ public class LoadedApkGetCLHooker extends XC_MethodHook {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Hookers.logD("LoadedApk#getClassLoader starts");
|
Hookers.logD("LoadedApk#getClassLoader starts: isFirst=" + isFirstApplication);
|
||||||
|
|
||||||
Object mAppDir = XposedHelpers.getObjectField(loadedApk, "mAppDir");
|
Object mAppDir = XposedHelpers.getObjectField(loadedApk, "mAppDir");
|
||||||
ClassLoader classLoader = (ClassLoader) param.getResult();
|
ClassLoader classLoader = (ClassLoader) param.getResult();
|
||||||
|
|
@ -76,11 +75,11 @@ public class LoadedApkGetCLHooker extends XC_MethodHook {
|
||||||
|
|
||||||
XC_LoadPackage.LoadPackageParam lpparam = new XC_LoadPackage.LoadPackageParam(
|
XC_LoadPackage.LoadPackageParam lpparam = new XC_LoadPackage.LoadPackageParam(
|
||||||
XposedBridge.sLoadedPackageCallbacks);
|
XposedBridge.sLoadedPackageCallbacks);
|
||||||
lpparam.packageName = this.packageName;
|
lpparam.packageName = packageName;
|
||||||
lpparam.processName = this.processName;
|
lpparam.processName = processName;
|
||||||
lpparam.classLoader = classLoader;
|
lpparam.classLoader = classLoader;
|
||||||
lpparam.appInfo = loadedApk.getApplicationInfo();
|
lpparam.appInfo = loadedApk.getApplicationInfo();
|
||||||
lpparam.isFirstApplication = this.isFirstApplication;
|
lpparam.isFirstApplication = isFirstApplication;
|
||||||
|
|
||||||
IBinder moduleBinder = serviceClient.requestModuleBinder(lpparam.packageName);
|
IBinder moduleBinder = serviceClient.requestModuleBinder(lpparam.packageName);
|
||||||
if (moduleBinder != null) {
|
if (moduleBinder != null) {
|
||||||
|
|
@ -94,6 +93,7 @@ public class LoadedApkGetCLHooker extends XC_MethodHook {
|
||||||
} finally {
|
} finally {
|
||||||
if (unhook != null) {
|
if (unhook != null) {
|
||||||
unhook.unhook();
|
unhook.unhook();
|
||||||
|
unhook = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -604,6 +604,7 @@ public class ConfigManager {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var module = cachedModule.get(modulePackageName);
|
var module = cachedModule.get(modulePackageName);
|
||||||
|
assert module != null;
|
||||||
for (ProcessScope processScope : processesScope) {
|
for (ProcessScope processScope : processesScope) {
|
||||||
cachedScope.computeIfAbsent(processScope,
|
cachedScope.computeIfAbsent(processScope,
|
||||||
ignored -> new LinkedList<>()).add(module);
|
ignored -> new LinkedList<>()).add(module);
|
||||||
|
|
@ -612,6 +613,7 @@ public class ConfigManager {
|
||||||
var appId = processScope.uid % PER_USER_RANGE;
|
var appId = processScope.uid % PER_USER_RANGE;
|
||||||
for (var user : UserService.getUsers()) {
|
for (var user : UserService.getUsers()) {
|
||||||
var moduleUid = user.id * PER_USER_RANGE + appId;
|
var moduleUid = user.id * PER_USER_RANGE + appId;
|
||||||
|
if (moduleUid == processScope.uid) continue; // skip duplicate
|
||||||
var moduleSelf = new ProcessScope(processScope.processName, moduleUid);
|
var moduleSelf = new ProcessScope(processScope.processName, moduleUid);
|
||||||
cachedScope.computeIfAbsent(moduleSelf,
|
cachedScope.computeIfAbsent(moduleSelf,
|
||||||
ignored -> new LinkedList<>()).add(module);
|
ignored -> new LinkedList<>()).add(module);
|
||||||
|
|
@ -637,7 +639,7 @@ public class ConfigManager {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Log.d(TAG, "cached Scope");
|
Log.d(TAG, "cached scope");
|
||||||
cachedScope.forEach((ps, modules) -> {
|
cachedScope.forEach((ps, modules) -> {
|
||||||
Log.d(TAG, ps.processName + "/" + ps.uid);
|
Log.d(TAG, ps.processName + "/" + ps.uid);
|
||||||
modules.forEach(module -> Log.d(TAG, "\t" + module.packageName));
|
modules.forEach(module -> Log.d(TAG, "\t" + module.packageName));
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3d2e1f5fc73ae09ebe889f2c6ddfc49c57dda2c9
|
Subproject commit 20413748f0bac79ca480909cdce48723f600ff90
|
||||||
Loading…
Reference in New Issue