Avoid parsing libart for multiple times

Use GetArt instead of parsing the lib anew.
This commit is contained in:
JingMatrix 2024-11-21 09:29:53 +01:00
parent 403b5fa516
commit 5da38f60a2
1 changed files with 3 additions and 1 deletions

View File

@ -218,10 +218,11 @@ namespace lspd {
return; return;
} }
auto &art = lspd::GetArt();
auto binder_class = JNI_FindClass(env, "android/os/Binder"); auto binder_class = JNI_FindClass(env, "android/os/Binder");
exec_transact_backup_methodID_ = JNI_GetMethodID(env, binder_class, "execTransact", exec_transact_backup_methodID_ = JNI_GetMethodID(env, binder_class, "execTransact",
"(IJJI)Z"); "(IJJI)Z");
auto *setTableOverride = SandHook::ElfImg("/libart.so").getSymbAddress<void (*)(JNINativeInterface *)>( auto *setTableOverride = art->getSymbAddress<void (*)(JNINativeInterface *)>(
"_ZN3art9JNIEnvExt16SetTableOverrideEPK18JNINativeInterface"); "_ZN3art9JNIEnvExt16SetTableOverrideEPK18JNINativeInterface");
if (!setTableOverride) { if (!setTableOverride) {
LOGE("set table override not found"); LOGE("set table override not found");
@ -247,6 +248,7 @@ namespace lspd {
auto &binder = lspd::GetLibBinder(false); auto &binder = lspd::GetLibBinder(false);
IPCThreadState::Init(binder.get()); IPCThreadState::Init(binder.get());
lspd::GetLibBinder(true); lspd::GetLibBinder(true);
lspd::GetArt(true);
LOGD("Done InitService"); LOGD("Done InitService");
} }