From 30fa70d43ebe70fa4e4238f235ff11dfaeafab4e Mon Sep 17 00:00:00 2001 From: kotori0 Date: Mon, 14 Dec 2020 16:35:21 +0800 Subject: [PATCH] Deoptimize edxp manager classes --- .../riru/edxp/hooker/XposedInstallerHooker.java | 13 ++++++++++++- .../src/main/cpp/external/yahfa/src/HookMain.c | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java index 36c1dfe0..b58de2fa 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java @@ -4,6 +4,7 @@ import android.app.AndroidAppHelper; import android.view.View; import com.elderdrivers.riru.edxp.config.ConfigManager; +import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal; import com.elderdrivers.riru.edxp.util.Utils; import java.io.File; @@ -81,7 +82,8 @@ public class XposedInstallerHooker { } } }); - XposedHelpers.findAndHookMethod("org.meowcat.edxposed.manager.StatusInstallerFragment", classLoader, "getCanonicalFile", File.class, new XC_MethodHook() { + Class clazz = XposedHelpers.findClassIfExists("org.meowcat.edxposed.manager.StatusInstallerFragment", classLoader); + XposedHelpers.findAndHookMethod(clazz, "getCanonicalFile", File.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { File arg = (File)param.args[0]; @@ -90,6 +92,15 @@ public class XposedInstallerHooker { } } }); + + // deopt manager + Object method = EdXpConfigGlobal.getHookProvider().findMethodNative( + clazz, "onCreateView", "(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;"); + if (method != null) { + EdXpConfigGlobal.getHookProvider().deoptMethodNative(method); + } else { + Utils.logE("onCreateView not found"); + } } catch (Throwable t) { Utils.logE("Could not hook Xposed Installer", t); } diff --git a/edxp-core/src/main/cpp/external/yahfa/src/HookMain.c b/edxp-core/src/main/cpp/external/yahfa/src/HookMain.c index 7dc54184..a7d647e8 100644 --- a/edxp-core/src/main/cpp/external/yahfa/src/HookMain.c +++ b/edxp-core/src/main/cpp/external/yahfa/src/HookMain.c @@ -202,7 +202,7 @@ void *getArtMethod(JNIEnv *env, jobject jmethod) { artMethod = (void *) (*env)->FromReflectedMethod(env, jmethod); } - LOGI("ArtMethod: %p", artMethod); + LOGI("HookMain: getArtMethod: %p", artMethod); return artMethod; }