diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/art/ClassLinker.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/art/ClassLinker.java index b51097f3..ef91cddf 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/art/ClassLinker.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/art/ClassLinker.java @@ -10,11 +10,6 @@ public class ClassLinker implements KeepAll { public static native void setEntryPointsToInterpreter(Member method); - public static void onPreFixupStaticTrampolines(Class clazz) { - // remove modified native flags to let FixupStaticTrampolines fill in right entrypoints - PendingHooks.removeNativeFlags(clazz); - } - public static void onPostFixupStaticTrampolines(Class clazz) { // native flags will be re-set in hooking logic PendingHooks.hookPendingMethod(clazz); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java index 59740cb1..636a4241 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseHookProvider.java @@ -39,11 +39,6 @@ public abstract class BaseHookProvider implements HookProvider { return false; } - @Override - public void setNativeFlag(Member hookMethod, boolean isNative) { - Yahfa.setNativeFlag(hookMethod, isNative); - } - @Override public boolean methodHooked(Member target) { return Yahfa.isHooked(target); diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Yahfa.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Yahfa.java index 5d48d8a5..3d5c4aa5 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Yahfa.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/Yahfa.java @@ -14,8 +14,6 @@ public class Yahfa { public static native void setMethodNonCompilable(Member member); - public static native boolean setNativeFlag(Member member, boolean isNative); - public static native void recordHooked(Member member); public static native boolean isHooked(Member member); diff --git a/edxp-core/src/main/cpp/external/yahfa/include/HookMain.h b/edxp-core/src/main/cpp/external/yahfa/include/HookMain.h index 16794ff0..fc96b8ed 100644 --- a/edxp-core/src/main/cpp/external/yahfa/include/HookMain.h +++ b/edxp-core/src/main/cpp/external/yahfa/include/HookMain.h @@ -23,8 +23,6 @@ void Java_lab_galaxy_yahfa_HookMain_ensureMethodCached(JNIEnv *env, jclass clazz void setNonCompilable(void *method); -bool setNativeFlag(void *method, bool isNative); - void *getArtMethod(JNIEnv *env, jobject jmethod); // TODO: move to common utils instead of in YAHFA's code diff --git a/edxp-core/src/main/cpp/main/include/art/runtime/class_linker.h b/edxp-core/src/main/cpp/main/include/art/runtime/class_linker.h index 502b50f5..6bcdbc90 100644 --- a/edxp-core/src/main/cpp/main/include/art/runtime/class_linker.h +++ b/edxp-core/src/main/cpp/main/include/art/runtime/class_linker.h @@ -40,9 +40,6 @@ namespace art { const char *desc = clazz.GetDescriptor(&storage); bool should_intercept = edxp::IsClassPending(desc) || std::string(desc).rfind("LEdHooker_") == 0; - if (UNLIKELY(should_intercept)) { - edxp::Context::GetInstance()->CallOnPreFixupStaticTrampolines(clazz_ptr); - } FixupStaticTrampolinesBackup(thiz, clazz_ptr); if (UNLIKELY(should_intercept)) { edxp::Context::GetInstance()->CallOnPostFixupStaticTrampolines(clazz_ptr); diff --git a/edxp-core/src/main/cpp/main/src/edxp_context.cpp b/edxp-core/src/main/cpp/main/src/edxp_context.cpp index b0baf3b7..12f15b2a 100644 --- a/edxp-core/src/main/cpp/main/src/edxp_context.cpp +++ b/edxp-core/src/main/cpp/main/src/edxp_context.cpp @@ -50,10 +50,6 @@ namespace edxp { } } - void Context::CallOnPreFixupStaticTrampolines(void *class_ptr) { - CallPostFixupStaticTrampolinesCallback(class_ptr, pre_fixup_static_mid_); - } - void Context::CallOnPostFixupStaticTrampolines(void *class_ptr) { CallPostFixupStaticTrampolinesCallback(class_ptr, post_fixup_static_mid_); } @@ -116,9 +112,6 @@ namespace edxp { env->GetJavaVM(&vm_); class_linker_class_ = (jclass) env->NewGlobalRef( FindClassFromLoader(env, kClassLinkerClassName)); - pre_fixup_static_mid_ = JNI_GetStaticMethodID(env, class_linker_class_, - "onPreFixupStaticTrampolines", - "(Ljava/lang/Class;)V"); post_fixup_static_mid_ = JNI_GetStaticMethodID(env, class_linker_class_, "onPostFixupStaticTrampolines", "(Ljava/lang/Class;)V"); diff --git a/edxp-core/src/main/cpp/main/src/edxp_context.h b/edxp-core/src/main/cpp/main/src/edxp_context.h index 248270bd..a5a175c0 100644 --- a/edxp-core/src/main/cpp/main/src/edxp_context.h +++ b/edxp-core/src/main/cpp/main/src/edxp_context.h @@ -32,8 +32,6 @@ namespace edxp { inline auto GetCurrentClassLoader() const { return inject_class_loader_; } - void CallOnPreFixupStaticTrampolines(void *class_ptr); - void CallOnPostFixupStaticTrampolines(void *class_ptr); void PrepareJavaEnv(JNIEnv *env); @@ -90,7 +88,6 @@ namespace edxp { jstring nice_name_ = nullptr; JavaVM *vm_ = nullptr; jclass class_linker_class_ = nullptr; - jmethodID pre_fixup_static_mid_ = nullptr; jmethodID post_fixup_static_mid_ = nullptr; bool skip_ = false; std::vector> dexes; diff --git a/edxp-core/src/main/cpp/main/src/jni/edxp_yahfa.cpp b/edxp-core/src/main/cpp/main/src/jni/edxp_yahfa.cpp index 31bc7447..47a01a68 100644 --- a/edxp-core/src/main/cpp/main/src/jni/edxp_yahfa.cpp +++ b/edxp-core/src/main/cpp/main/src/jni/edxp_yahfa.cpp @@ -38,19 +38,6 @@ namespace edxp { setNonCompilable(art_method); } - static jboolean Yahfa_setNativeFlag(JNI_START, jobject member, jboolean is_native) { - if (!member) { - LOGE("setNativeFlagNative: member is null"); - return JNI_FALSE; - } - void *art_method = getArtMethod(env, member); - if (!art_method) { - LOGE("setNativeFlagNative: art_method is null"); - return JNI_FALSE; - } - return (jboolean) setNativeFlag(art_method, is_native); - } - static void Yahfa_recordHooked(JNI_START, jobject member) { edxp::recordHooked(getArtMethod(env, member)); } @@ -72,7 +59,6 @@ namespace edxp { NATIVE_METHOD(Yahfa, backupAndHookNative, "(Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)Z"), NATIVE_METHOD(Yahfa, setMethodNonCompilable, "(Ljava/lang/reflect/Member;)V"), - NATIVE_METHOD(Yahfa, setNativeFlag, "(Ljava/lang/reflect/Member;Z)Z"), NATIVE_METHOD(Yahfa, recordHooked, "(Ljava/lang/reflect/Member;)V"), NATIVE_METHOD(Yahfa, isHooked, "(Ljava/lang/reflect/Member;)Z"), NATIVE_METHOD(Yahfa, makeInitializedClassesVisiblyInitialized, "(JZ)V"), diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java index 3f8d58f3..929a9de8 100644 --- a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java @@ -26,8 +26,6 @@ public interface HookProvider { boolean removeFinalFlagNative(Class clazz); - void setNativeFlag(Member hookMethod, boolean isNative); - boolean methodHooked(Member target); } diff --git a/xposed-bridge/src/main/java/de/robv/android/xposed/PendingHooks.java b/xposed-bridge/src/main/java/de/robv/android/xposed/PendingHooks.java index ae3f9457..20999bf7 100644 --- a/xposed-bridge/src/main/java/de/robv/android/xposed/PendingHooks.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/PendingHooks.java @@ -25,21 +25,12 @@ public final class PendingHooks { } } - public synchronized static void removeNativeFlags(Class clazz) { - for (Member member : sPendingHookMethods.keySet()) { - if (member.getDeclaringClass().equals(clazz) && sNonNativeMethods.contains(member)) { - EdXpConfigGlobal.getHookProvider().setNativeFlag(member, false); - } - } - } - public synchronized static void recordPendingMethod(Member hookMethod, XposedBridge.AdditionalHookInfo additionalInfo) { if (!Modifier.isNative(hookMethod.getModifiers())) { // record non-native methods for later native flag temporary removing sNonNativeMethods.add(hookMethod); } - EdXpConfigGlobal.getHookProvider().setNativeFlag(hookMethod, true); sPendingHookMethods.put(hookMethod, additionalInfo); recordPendingMethodNative("L" + hookMethod.getDeclaringClass().getName().replace(".", "/") + ";");