diff --git a/loader/src/injector/entry.cpp b/loader/src/injector/entry.cpp index ac82b84..47fbe43 100644 --- a/loader/src/injector/entry.cpp +++ b/loader/src/injector/entry.cpp @@ -5,7 +5,6 @@ using namespace std; void *self_handle = nullptr; -vector preloaded_modules; [[gnu::destructor]] [[maybe_unused]] static void zygisk_cleanup_wait() { @@ -16,18 +15,9 @@ static void zygisk_cleanup_wait() { } } -void preload_modules() { - LOGI("Preload modules"); - preloaded_modules = zygiskd::ReadModules(); - for (auto& module : preloaded_modules) { - LOGD(" Preloaded `%s`", module.name.data()); - } -} - extern "C" __used void entry(void *handle) { - LOGD("Load injector successful"); + LOGD("Load injector successfully"); self_handle = handle; - preload_modules(); hook_functions(); } diff --git a/loader/src/injector/hook.cpp b/loader/src/injector/hook.cpp index f5b7e55..d3ed83a 100644 --- a/loader/src/injector/hook.cpp +++ b/loader/src/injector/hook.cpp @@ -536,17 +536,16 @@ void HookContext::fork_post() { } void HookContext::run_modules_pre() { - size_t size = preloaded_modules.size(); + auto ms = zygiskd::ReadModules(); + auto size = ms.size(); modules.reserve(size); for (size_t i = 0; i < size; i++) { - auto& module = preloaded_modules[i]; - if (void* handle = DlopenMem(module.memfd, RTLD_NOW); + auto& m = ms[i]; + if (void* handle = DlopenMem(m.memfd, RTLD_NOW); void* entry = handle ? dlsym(handle, "zygisk_module_entry") : nullptr) { modules.emplace_back(i, handle, entry); } } - // memfds will be closed by RTTI - preloaded_modules.clear(); for (auto &m : modules) { m.onLoad(env); diff --git a/loader/src/injector/zygisk.hpp b/loader/src/injector/zygisk.hpp index 37c0a2a..de3673c 100644 --- a/loader/src/injector/zygisk.hpp +++ b/loader/src/injector/zygisk.hpp @@ -4,9 +4,6 @@ #include #include -#include "daemon.h" - extern void *self_handle; -extern std::vector preloaded_modules; void hook_functions();