diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/yahfa/HandleBindAppHooker.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/yahfa/HandleBindAppHooker.java index 1105fe72..2174fff8 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/yahfa/HandleBindAppHooker.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/_hooker/yahfa/HandleBindAppHooker.java @@ -2,8 +2,6 @@ package com.elderdrivers.riru.edxp._hooker.yahfa; import com.elderdrivers.riru.common.KeepMembers; import com.elderdrivers.riru.edxp._hooker.impl.HandleBindApp; -import com.elderdrivers.riru.edxp.core.Yahfa; -import com.elderdrivers.riru.edxp.util.Hookers; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.annotation.ApiSensitive; 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 2a660d6f..59740cb1 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 @@ -1,12 +1,10 @@ package com.elderdrivers.riru.edxp.config; import com.elderdrivers.riru.edxp.core.Yahfa; -import com.elderdrivers.riru.edxp.core.yahfa.HookMain; import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.hook.HookProvider; import java.lang.reflect.Member; -import java.lang.reflect.Method; public abstract class BaseHookProvider implements HookProvider { diff --git a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/yahfa/HookMain.java b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/yahfa/HookMain.java index 352bea2a..da7915ef 100644 --- a/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/yahfa/HookMain.java +++ b/edxp-common/src/main/java/com/elderdrivers/riru/edxp/core/yahfa/HookMain.java @@ -1,8 +1,5 @@ package com.elderdrivers.riru.edxp.core.yahfa; -import android.os.Build; - -import com.elderdrivers.riru.edxp.art.ClassLinker; import com.elderdrivers.riru.edxp.art.Heap; import com.elderdrivers.riru.edxp.core.Yahfa; import com.elderdrivers.riru.edxp.util.ClassUtils; @@ -15,12 +12,8 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; -import java.util.List; import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; -import de.robv.android.xposed.PendingHooks; -import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; public class HookMain { 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 81f93f77..71b95240 100644 --- a/edxp-core/src/main/cpp/external/yahfa/include/HookMain.h +++ b/edxp-core/src/main/cpp/external/yahfa/include/HookMain.h @@ -27,8 +27,6 @@ bool setNativeFlag(void *method, bool isNative); void *getArtMethod(JNIEnv *env, jobject jmethod); -static void *getResolvedMethodsAddr(JNIEnv *, jobject); - // TODO: move to common utils instead of in YAHFA's code void *getEntryPoint(void* method); 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 831d96f0..b59db555 100644 --- a/edxp-core/src/main/cpp/external/yahfa/src/HookMain.c +++ b/edxp-core/src/main/cpp/external/yahfa/src/HookMain.c @@ -16,7 +16,6 @@ static int OFFSET_access_flags_in_ArtMethod; static uint32_t kAccNative = 0x0100; static uint32_t kAccCompileDontBother = 0x01000000; static uint32_t kAccFastInterpreterToInterpreterInvoke = 0x40000000; -static uint32_t kAccPreCompiled = 0x00200000; static jfieldID fieldArtMethod = NULL; @@ -287,28 +286,3 @@ jboolean Java_lab_galaxy_yahfa_HookMain_backupAndHookNative(JNIEnv *env, jclass return JNI_FALSE; } } - -static void *getResolvedMethodsAddr(JNIEnv *env, jobject hook) { - // get backup class - jclass methodClass = (*env)->FindClass(env, "java/lang/reflect/Method"); - jmethodID getClassMid = (*env)->GetMethodID(env, methodClass, "getDeclaringClass", - "()Ljava/lang/Class;"); - jclass backupClass = (*env)->CallObjectMethod(env, hook, getClassMid); - // get dexCache of backup class - jclass classClass = (*env)->FindClass(env, "java/lang/Class"); - jfieldID dexCacheFid = (*env)->GetFieldID(env, classClass, "dexCache", "Ljava/lang/Object;"); - jobject dexCacheObj = (*env)->GetObjectField(env, backupClass, dexCacheFid); - // get resolvedMethods address - jclass dexCacheClass = (*env)->GetObjectClass(env, dexCacheObj); - if (SDKVersion >= __ANDROID_API_N__) { - jfieldID resolvedMethodsFid = (*env)->GetFieldID(env, dexCacheClass, "resolvedMethods", - "J"); - return (void *) (*env)->GetLongField(env, dexCacheObj, resolvedMethodsFid); - } else if (SDKVersion >= __ANDROID_API_L__) { - LOGE("this should has been done in java world: %d", SDKVersion); - return 0; - } else { - LOGE("not compatible with SDK %d", SDKVersion); - return 0; - } -} diff --git a/edxp-sandhook/src/main/java/com/swift/sandhook/xposedcompat/methodgen/SandHookXposedBridge.java b/edxp-sandhook/src/main/java/com/swift/sandhook/xposedcompat/methodgen/SandHookXposedBridge.java index c157598d..45fcda7d 100644 --- a/edxp-sandhook/src/main/java/com/swift/sandhook/xposedcompat/methodgen/SandHookXposedBridge.java +++ b/edxp-sandhook/src/main/java/com/swift/sandhook/xposedcompat/methodgen/SandHookXposedBridge.java @@ -6,6 +6,7 @@ import android.os.Trace; import android.util.Log; import com.elderdrivers.riru.edxp.config.ConfigManager; +import com.elderdrivers.riru.edxp.core.Yahfa; import com.elderdrivers.riru.edxp.util.ClassLoaderUtils; import com.elderdrivers.riru.edxp.util.FileUtils; import com.swift.sandhook.SandHook; @@ -57,6 +58,8 @@ public final class SandHookXposedBridge { return; } + Yahfa.recordHooked(hookMethod); // in case static method got reset. + try { if (dexPathInited.compareAndSet(false, true)) { try {