From c5e1a544bf8704990b6f81d9d111f5cad2e7d1f1 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Wed, 11 Oct 2023 11:10:18 +0800 Subject: [PATCH] Update ApplicationInfo if it was system_server cached (#2805) --- .../java/org/lsposed/lspd/service/ConfigManager.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java index 470b45b7..3786df43 100644 --- a/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/daemon/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -87,6 +87,8 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; +import hidden.HiddenApiBridge; + public class ConfigManager { private static ConfigManager instance = null; @@ -231,6 +233,11 @@ public class ConfigManager { var apkFile = new File(module.apkPath); var pkg = new PackageParser().parsePackage(apkFile, 0, false); module.applicationInfo = pkg.applicationInfo; + module.applicationInfo.sourceDir = module.apkPath; + module.applicationInfo.dataDir = statPath; + module.applicationInfo.deviceProtectedDataDir = statPath; + HiddenApiBridge.ApplicationInfo_credentialProtectedDataDir(module.applicationInfo, statPath); + module.applicationInfo.processName = module.packageName; } catch (PackageParser.PackageParserException e) { Log.w(TAG, "failed to parse " + module.apkPath, e); } @@ -579,8 +586,8 @@ public class ConfigManager { if (oldModule.appId != -1) { Log.d(TAG, m.packageName + " did not change, skip caching it"); } else { - // cache from system server, keep it and set only the appId - oldModule.appId = pkgInfo.applicationInfo.uid; + // cache from system server, update application info + oldModule.applicationInfo = pkgInfo.applicationInfo; } return false; }