Separate InitArtHooker and InitHooks (#1965)

This commit is contained in:
Nullptr 2022-05-27 22:53:07 +08:00 committed by GitHub
parent dd8dcfbab1
commit d36d284f39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 5 deletions

View File

@ -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;

View File

@ -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) {

View File

@ -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

View File

@ -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",