From 5da38f60a2ebfff7c0909f64a2c553d0752721eb Mon Sep 17 00:00:00 2001 From: JingMatrix Date: Thu, 21 Nov 2024 09:29:53 +0100 Subject: [PATCH] Avoid parsing libart for multiple times Use GetArt instead of parsing the lib anew. --- magisk-loader/src/main/jni/src/service.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/magisk-loader/src/main/jni/src/service.cpp b/magisk-loader/src/main/jni/src/service.cpp index 45c46271..8307de11 100644 --- a/magisk-loader/src/main/jni/src/service.cpp +++ b/magisk-loader/src/main/jni/src/service.cpp @@ -218,10 +218,11 @@ namespace lspd { return; } + auto &art = lspd::GetArt(); auto binder_class = JNI_FindClass(env, "android/os/Binder"); exec_transact_backup_methodID_ = JNI_GetMethodID(env, binder_class, "execTransact", "(IJJI)Z"); - auto *setTableOverride = SandHook::ElfImg("/libart.so").getSymbAddress( + auto *setTableOverride = art->getSymbAddress( "_ZN3art9JNIEnvExt16SetTableOverrideEPK18JNINativeInterface"); if (!setTableOverride) { LOGE("set table override not found"); @@ -247,6 +248,7 @@ namespace lspd { auto &binder = lspd::GetLibBinder(false); IPCThreadState::Init(binder.get()); lspd::GetLibBinder(true); + lspd::GetArt(true); LOGD("Done InitService"); }