diff --git a/core/src/main/jni/include/context.h b/core/src/main/jni/include/context.h index a05bdc4a..823da438 100644 --- a/core/src/main/jni/include/context.h +++ b/core/src/main/jni/include/context.h @@ -115,7 +115,9 @@ namespace lspd { } } - virtual void InitHooks(JNIEnv *env, const lsplant::InitInfo &initInfo); + virtual void InitArtHooker(JNIEnv *env, const lsplant::InitInfo &initInfo); + + virtual void InitHooks(JNIEnv *env); virtual void LoadDex(JNIEnv *env, PreloadedDex &&dex) = 0; diff --git a/core/src/main/jni/src/context.cpp b/core/src/main/jni/src/context.cpp index f932adc2..c045bb28 100644 --- a/core/src/main/jni/src/context.cpp +++ b/core/src/main/jni/src/context.cpp @@ -47,11 +47,14 @@ namespace lspd { if (*this) munmap(addr_, size_); } - void Context::InitHooks(JNIEnv *env, const lsplant::InitInfo &initInfo) { + void Context::InitArtHooker(JNIEnv *env, const lsplant::InitInfo &initInfo) { if (!lsplant::Init(env, initInfo)) { LOGE("Failed to init lsplant"); return; } + } + + void Context::InitHooks(JNIEnv *env) { auto path_list = JNI_GetObjectFieldOf(env, inject_class_loader_, "pathList", "Ldalvik/system/DexPathList;"); if (!path_list) { diff --git a/gradle.properties b/gradle.properties index e5540122..546d341e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,5 +18,5 @@ android.nonTransitiveRClass=true android.enableR8.fullMode=true android.useAndroidX=true -agpVersion=7.2.0 +agpVersion=7.2.1 navVersion=2.5.0-alpha04 diff --git a/magisk-loader/src/main/jni/src/magisk_loader.cpp b/magisk-loader/src/main/jni/src/magisk_loader.cpp index ec81a8a3..ee5796e1 100644 --- a/magisk-loader/src/main/jni/src/magisk_loader.cpp +++ b/magisk-loader/src/main/jni/src/magisk_loader.cpp @@ -134,7 +134,8 @@ namespace lspd { return GetArt()->getSymbPrefixFirstAddress(symbol); }, }; - InitHooks(env, initInfo); + InitArtHooker(env, initInfo); + InitHooks(env); SetupEntryClass(env); FindAndCall(env, "forkCommon", "(ZLjava/lang/String;Landroid/os/IBinder;)V", @@ -213,7 +214,8 @@ namespace lspd { ConfigBridge::GetInstance()->obfuscation_map(std::move(obfs_map)); LoadDex(env, PreloadedDex(dex_fd, size)); close(dex_fd); - InitHooks(env, initInfo); + InitArtHooker(env, initInfo); + InitHooks(env); SetupEntryClass(env); LOGD("Done prepare"); FindAndCall(env, "forkCommon",