parent
2c3eee62c0
commit
2404d0bc50
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue