mirror of
https://github.com/LSPosed/LSPlant.git
synced 2025-05-05 14:06:37 +08:00
Hook if ShouldUseInterpreterEntrypoint
This will not be inlined
This commit is contained in:
parent
78e4dac54a
commit
ab5830a020
@ -15,6 +15,16 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CREATE_HOOK_STUB_ENTRY(
|
||||||
|
"_ZN3art11ClassLinker30ShouldUseInterpreterEntrypointEPNS_9ArtMethodEPKv", bool,
|
||||||
|
ShouldUseInterpreterEntrypoint, (ArtMethod * art_method, const void *quick_code), {
|
||||||
|
if (quick_code != nullptr && IsHooked(art_method)) [[unlikely]] {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return backup(art_method, quick_code);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
CREATE_FUNC_SYMBOL_ENTRY(void, art_quick_to_interpreter_bridge, void *) {}
|
CREATE_FUNC_SYMBOL_ENTRY(void, art_quick_to_interpreter_bridge, void *) {}
|
||||||
|
|
||||||
CREATE_FUNC_SYMBOL_ENTRY(void, art_quick_generic_jni_trampoline, void *) {}
|
CREATE_FUNC_SYMBOL_ENTRY(void, art_quick_generic_jni_trampoline, void *) {}
|
||||||
@ -119,6 +129,12 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
static bool Init(const HookHandler &handler) {
|
static bool Init(const HookHandler &handler) {
|
||||||
|
int sdk_int = GetAndroidApiLevel();
|
||||||
|
|
||||||
|
if (sdk_int >= __ANDROID_API_N__) [[likely]] {
|
||||||
|
!HookSyms(handler, ShouldUseInterpreterEntrypoint);
|
||||||
|
}
|
||||||
|
|
||||||
if (!HookSyms(handler, FixupStaticTrampolinesWithThread, FixupStaticTrampolines,
|
if (!HookSyms(handler, FixupStaticTrampolinesWithThread, FixupStaticTrampolines,
|
||||||
FixupStaticTrampolinesRaw)) {
|
FixupStaticTrampolinesRaw)) {
|
||||||
return false;
|
return false;
|
||||||
@ -131,8 +147,6 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sdk_int = GetAndroidApiLevel();
|
|
||||||
|
|
||||||
if (sdk_int >= __ANDROID_API_R__) {
|
if (sdk_int >= __ANDROID_API_R__) {
|
||||||
if constexpr (GetArch() != Arch::kX86 && GetArch() != Arch::kX86_64) {
|
if constexpr (GetArch() != Arch::kX86 && GetArch() != Arch::kX86_64) {
|
||||||
// fixup static trampoline may have been inlined
|
// fixup static trampoline may have been inlined
|
||||||
|
Loading…
x
Reference in New Issue
Block a user