Skip to content

Commit

Permalink
Record hooked method for SandHook
Browse files Browse the repository at this point in the history
garbage cleaning
  • Loading branch information
kotori2 committed Dec 10, 2020
1 parent 1dded69 commit 37d5012
Show file tree
Hide file tree
Showing 6 changed files with 3 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {

Expand Down
Original file line number Diff line number Diff line change
@@ -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.Utils;
Expand All @@ -14,12 +11,8 @@
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 {
Expand Down
2 changes: 0 additions & 2 deletions edxp-core/src/main/cpp/external/yahfa/include/HookMain.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ bool setNativeFlag(void *method, bool isNative);

void *getArtMethod(JNIEnv *env, jobject jmethod);

static void *getResolvedMethodsAddr(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
Expand Down
26 changes: 0 additions & 26 deletions edxp-core/src/main/cpp/external/yahfa/src/HookMain.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -277,28 +276,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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
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;
Expand Down Expand Up @@ -57,6 +58,8 @@ public static synchronized void hookMethod(Member hookMethod, XposedBridge.Addit
return;
}

Yahfa.recordHooked(hookMethod); // in case static method got reset.

try {
if (dexPathInited.compareAndSet(false, true)) {
try {
Expand Down

0 comments on commit 37d5012

Please sign in to comment.