diff --git a/core/src/main/aidl/org/lsposed/lspd/service/ILSPApplicationService.aidl b/core/src/main/aidl/org/lsposed/lspd/service/ILSPApplicationService.aidl index 62bcbe7d..3c8707ee 100644 --- a/core/src/main/aidl/org/lsposed/lspd/service/ILSPApplicationService.aidl +++ b/core/src/main/aidl/org/lsposed/lspd/service/ILSPApplicationService.aidl @@ -3,7 +3,7 @@ package org.lsposed.lspd.service; interface ILSPApplicationService { IBinder requestModuleBinder() = 2; - IBinder requestManagerBinder() = 3; + IBinder requestManagerBinder(String packageName) = 3; boolean isResourcesHookEnabled() = 5; diff --git a/core/src/main/java/org/lsposed/lspd/config/LSPApplicationServiceClient.java b/core/src/main/java/org/lsposed/lspd/config/LSPApplicationServiceClient.java index 4dbd4cc0..56fb64de 100644 --- a/core/src/main/java/org/lsposed/lspd/config/LSPApplicationServiceClient.java +++ b/core/src/main/java/org/lsposed/lspd/config/LSPApplicationServiceClient.java @@ -69,9 +69,9 @@ public class LSPApplicationServiceClient implements ILSPApplicationService { } @Override - public IBinder requestManagerBinder() { + public IBinder requestManagerBinder(String packageName) { try { - return service.requestManagerBinder(); + return service.requestManagerBinder(packageName); } catch (RemoteException | NullPointerException ignored) { } return null; diff --git a/core/src/main/java/org/lsposed/lspd/core/Main.java b/core/src/main/java/org/lsposed/lspd/core/Main.java index 779c51ef..51565b29 100644 --- a/core/src/main/java/org/lsposed/lspd/core/Main.java +++ b/core/src/main/java/org/lsposed/lspd/core/Main.java @@ -28,6 +28,7 @@ import android.content.pm.ApplicationInfo; import android.content.res.CompatibilityInfo; import android.os.Environment; import android.os.IBinder; +import android.os.Process; import org.lsposed.lspd.config.LSPApplicationServiceClient; import org.lsposed.lspd.deopt.PrebuiltMethodsDeopter; @@ -102,7 +103,7 @@ public class Main { XposedInit.startsSystemServer = isSystem; PrebuiltMethodsDeopter.deoptBootMethods(); // do it once for secondary zygote installBootstrapHooks(isSystem, appDataDir); - Utils.logI("Loading modules for " + niceName); + Utils.logI("Loading modules for " + niceName + "/" + Process.myUid()); loadModulesSafely(); } diff --git a/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java b/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java index 29eef036..84ec7468 100644 --- a/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java +++ b/core/src/main/java/org/lsposed/lspd/hooker/LoadedApkGetCLHooker.java @@ -78,7 +78,7 @@ public class LoadedApkGetCLHooker extends XC_MethodHook { lpparam.appInfo = loadedApk.getApplicationInfo(); lpparam.isFirstApplication = this.isFirstApplication; - IBinder binder = serviceClient.requestManagerBinder(); + IBinder binder = loadedApk.getApplicationInfo() != null ? serviceClient.requestManagerBinder(loadedApk.getApplicationInfo().packageName) : null; if (binder != null) { if (InstallerVerifier.verifyInstallerSignature(loadedApk.getApplicationInfo())) { XposedInstallerHooker.hookXposedInstaller(lpparam.classLoader, binder); diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPApplicationService.java b/core/src/main/java/org/lsposed/lspd/service/LSPApplicationService.java index c069f89e..75c04ab8 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPApplicationService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPApplicationService.java @@ -101,9 +101,9 @@ public class LSPApplicationService extends ILSPApplicationService.Stub { } @Override - public IBinder requestManagerBinder() throws RemoteException { + public IBinder requestManagerBinder(String packageName) throws RemoteException { ensureRegistered(); - if (ConfigManager.getInstance().isManager(getCallingUid())) { + if (ConfigManager.getInstance().isManager(getCallingUid()) && ConfigManager.getInstance().isManager(packageName)) { var service = ServiceManager.getManagerService(); if (Utils.isMIUI) { service.new ManagerGuard(handles.get(getCallingPid()));