From fa4f4cecffce0475b81071bc34a6aa35bd2a9261 Mon Sep 17 00:00:00 2001 From: Nullptr Date: Sun, 12 Sep 2021 02:57:03 +0800 Subject: [PATCH] Fix signature bypass --- .../lspatch/appstub/LSPAppComponentFactoryStub.java | 10 +++------- core | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java b/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java index fa9c2bd..7b4a8e1 100644 --- a/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java +++ b/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java @@ -21,7 +21,7 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.zip.ZipFile; -import dalvik.system.PathClassLoader; +import dalvik.system.DelegateLastClassLoader; @SuppressLint("NewApi") public class LSPAppComponentFactoryStub extends AppComponentFactory { @@ -29,7 +29,6 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { private static final String PROXY_APPLICATION = "org.lsposed.lspatch.appstub.LSPApplicationStub"; private ClassLoader appClassLoader = null; - private ClassLoader lspClassLoader = null; private ClassLoader baseClassLoader = null; private AppComponentFactory originalAppComponentFactory = null; @@ -56,7 +55,7 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { } } - appClassLoader = new PathClassLoader(cacheApkPath, aInfo.nativeLibraryDir, baseClassLoader.getParent()); + appClassLoader = new DelegateLastClassLoader(cacheApkPath, aInfo.nativeLibraryDir, baseClassLoader); try { originalAppComponentFactory = (AppComponentFactory) appClassLoader.loadClass(originalAppComponentFactoryClass).newInstance(); @@ -75,9 +74,6 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { @Override public ClassLoader instantiateClassLoader(ClassLoader cl, ApplicationInfo aInfo) { baseClassLoader = cl; - var apkPath = baseClassLoader.getResource("AndroidManifest.xml").getPath(); - apkPath = apkPath.substring(5, apkPath.lastIndexOf('!')); - lspClassLoader = new PathClassLoader(apkPath, null, null); initOriginalAppComponentFactory(aInfo); Log.d(TAG, "baseClassLoader is " + baseClassLoader); Log.d(TAG, "appClassLoader is " + appClassLoader); @@ -86,7 +82,7 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { @Override public Application instantiateApplication(ClassLoader cl, String className) throws IllegalAccessException, InstantiationException, ClassNotFoundException { - lspClassLoader.loadClass(PROXY_APPLICATION).newInstance(); + baseClassLoader.loadClass(PROXY_APPLICATION).newInstance(); Log.i(TAG, "lspd initialized, instantiate original application"); return originalAppComponentFactory.instantiateApplication(cl, className); } diff --git a/core b/core index 415f8e0..d76db3c 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 415f8e03c849cff89c66d258879e079587349418 +Subproject commit d76db3cb82d52c648aed4c8e798eb0385936589c