[core] Fix get provider for old manager (#1224)

* [core] Fix get provider for old manager

* Update ParasiticManagerHooker.java
This commit is contained in:
Howard Wu 2021-10-04 17:36:51 +08:00 committed by GitHub
parent f0c4eeeea7
commit 399bf3075e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 5 additions and 7 deletions

View File

@ -129,8 +129,6 @@ public class ParasiticManagerHooker {
XposedBridge.hookAllMethods(XposedHelpers.findClass("android.app.ActivityThread$ApplicationThread", ActivityThread.class.getClassLoader()), "scheduleLaunchActivity", activityHooker);
}
if (Process.myUid() != BuildConfig.MANAGER_INJECTED_UID) return;
XposedBridge.hookAllMethods(ActivityThread.class, "handleReceiver", new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam param) {
@ -147,7 +145,7 @@ public class ParasiticManagerHooker {
private Context originalContext = null;
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
protected void beforeHookedMethod(MethodHookParam param) {
Hookers.logD("before install provider");
Context ctx = null;
ProviderInfo info = null;
@ -160,13 +158,13 @@ public class ParasiticManagerHooker {
} else if (arg instanceof ProviderInfo) info = (ProviderInfo) arg;
}
if (ctx != null && info != null) {
if (!info.applicationInfo.packageName.equals(BuildConfig.MANAGER_INJECTED_PKG_NAME)) return;
if (originalContext == null) {
info.applicationInfo.packageName = BuildConfig.MANAGER_INJECTED_PKG_NAME + ".origin";
var isDefaultManager = info.applicationInfo.packageName.equals(BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME);
info.applicationInfo.packageName = isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME + ".origin" : BuildConfig.MANAGER_INJECTED_PKG_NAME + ".origin";
var originalPkgInfo = ActivityThread.currentActivityThread().getPackageInfoNoCheck(info.applicationInfo, HiddenApiBridge.Resources_getCompatibilityInfo(ctx.getResources()));
XposedHelpers.setObjectField(originalPkgInfo, "mPackageName", BuildConfig.MANAGER_INJECTED_PKG_NAME);
XposedHelpers.setObjectField(originalPkgInfo, "mPackageName", isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME : BuildConfig.MANAGER_INJECTED_PKG_NAME);
originalContext = (Context) XposedHelpers.callStaticMethod(XposedHelpers.findClass("android.app.ContextImpl", null), "createAppContext", ActivityThread.currentActivityThread(), originalPkgInfo);
info.applicationInfo.packageName = BuildConfig.MANAGER_INJECTED_PKG_NAME;
info.applicationInfo.packageName = isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME : BuildConfig.MANAGER_INJECTED_PKG_NAME;
}
param.args[ctxIdx] = originalContext;
} else {