From eb870b593dbd6565047e832e3f8bc37c9c645cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=9D=97=E5=90=9B?= <86393520+577fkj@users.noreply.github.com> Date: Mon, 3 Oct 2022 20:39:53 +0800 Subject: [PATCH] Fix Android 9 crash (#114) --- .../lsposed/lspatch/loader/LSPApplication.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/patch-loader/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java b/patch-loader/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java index fa9e4e3..d374b38 100644 --- a/patch-loader/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java +++ b/patch-loader/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java @@ -102,9 +102,7 @@ public class LSPApplication { LSPLoader.initModules(appLoadedApk); Log.i(TAG, "Modules initialized"); - switchClassLoader("mBaseClassLoader"); - switchClassLoader("mDefaultClassLoader"); - switchClassLoader("mClassLoader"); + switchAllClassLoader(); doSigBypass(context); } catch (Throwable e) { throw new RuntimeException("Do hook", e); @@ -324,8 +322,13 @@ public class LSPApplication { } } - private static void switchClassLoader(String fieldName) { - var obj = XposedHelpers.getObjectField(appLoadedApk, fieldName); - XposedHelpers.setObjectField(stubLoadedApk, fieldName, obj); + private static void switchAllClassLoader() { + var fields = LoadedApk.class.getDeclaredFields(); + for (Field field : fields) { + if (field.getType() == ClassLoader.class) { + var obj = XposedHelpers.getObjectField(appLoadedApk, field.getName()); + XposedHelpers.setObjectField(stubLoadedApk, field.getName(), obj); + } + } } }