diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java index 1f0862dd..f2a47671 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/InlinedMethodCallers.java @@ -26,7 +26,22 @@ public class InlinedMethodCallers { */ private static final String[][] BOOT_IMAGE = { // callers of Application#attach(Context) - {"android.app.Instrumentation", "newApplication", "(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"} + {"android.app.Instrumentation", "newApplication", "(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;"}, + + // for MIUI resources hooking + {"android.content.res.MiuiResources", "init", "(Ljava/lang/String;)V"}, + {"android.content.res.MiuiResources", "updateMiuiImpl", "()V"}, + {"android.content.res.MiuiResources", "setImpl", "(Landroid/content/res/ResourcesImpl;)V"}, + {"android.content.res.MiuiResources", "loadOverlayValue", "(Landroid/util/TypedValue;I)V"}, + {"android.content.res.MiuiResources", "getThemeString", "(I)Ljava/lang/CharSequence;"}, + {"android.content.res.MiuiResources", "", "(Ljava/lang/ClassLoader;)V"}, + {"android.content.res.MiuiResources", "", "()V"}, + {"android.content.res.MiuiResources", "", "(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V"}, + {"android.miui.ResourcesManager", "initMiuiResource", "(Landroid/content/res/Resources;Ljava/lang/String;)V"}, + {"android.app.LoadedApk", "getResources", "()Landroid/content/res/Resources;"}, + {"android.content.res.Resources", "getSystem", "()Landroid/content/res/Resources;"}, + {"android.app.ApplicationPackageManager", "getResourcesForApplication", "(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;"}, + {"android.app.ContextImpl", "setResources", "(Landroid/content/res/Resources;)V"}, }; private static final String[][] SYSTEM_SERVER = {}; diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java index a90b1908..4fe9a165 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/deopt/PrebuiltMethodsDeopter.java @@ -19,8 +19,12 @@ public class PrebuiltMethodsDeopter { } for (String[] caller : callers) { try { + Class clazz = XposedHelpers.findClassIfExists(caller[0], cl); + if (clazz == null) { + continue; + } Object method = EdXpConfigGlobal.getHookProvider().findMethodNative( - XposedHelpers.findClass(caller[0], cl), caller[1], caller[2]); + clazz, caller[1], caller[2]); if (method != null) { EdXpConfigGlobal.getHookProvider().deoptMethodNative(method); } diff --git a/edxp-core/jni/main/native_hook/native_hook.cpp b/edxp-core/jni/main/native_hook/native_hook.cpp index 1cfc3e6b..5e302138 100644 --- a/edxp-core/jni/main/native_hook/native_hook.cpp +++ b/edxp-core/jni/main/native_hook/native_hook.cpp @@ -59,6 +59,13 @@ static bool onIsInSamePackageCalled(void *thiz, void *that) { || strstr(thatDesc, "com/elderdrivers/riru/") != nullptr) { return true; } + // for MIUI resources hooking + if (strstr(thisDesc, "android/content/res/MiuiTypedArray") != nullptr + || strstr(thatDesc, "android/content/res/MiuiTypedArray") != nullptr + || strstr(thisDesc, "android/content/res/XResources$XTypedArray") != nullptr + || strstr(thatDesc, "android/content/res/XResources$XTypedArray") != nullptr) { + return true; + } return (*isInSamePackageBackup)(thiz, that); } diff --git a/hiddenapi-stubs/libs/framework-stub.jar b/hiddenapi-stubs/libs/framework-stub.jar index c0fba72e..a4791d8e 100644 Binary files a/hiddenapi-stubs/libs/framework-stub.jar and b/hiddenapi-stubs/libs/framework-stub.jar differ