From 5f30e2bb3e74aed2bf938a555a90162025c8a05e Mon Sep 17 00:00:00 2001 From: snake-4 <18491360+snake-4@users.noreply.github.com> Date: Mon, 25 Mar 2024 05:12:16 +0100 Subject: [PATCH] Update main.cpp --- module/jni/main.cpp | 39 ++++++++++++++------------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/module/jni/main.cpp b/module/jni/main.cpp index bc0e312..7129831 100644 --- a/module/jni/main.cpp +++ b/module/jni/main.cpp @@ -1,17 +1,3 @@ -/* Copyright 2022-2023 John "topjohnwu" Wu - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - #include #include #include @@ -23,28 +9,31 @@ using zygisk::Api; using zygisk::AppSpecializeArgs; using zygisk::ServerSpecializeArgs; -class ZygiskModule : public zygisk::ModuleBase { +class ZygiskModule : public zygisk::ModuleBase +{ public: - void onLoad(Api *api, JNIEnv *env) override { + void onLoad(Api *api, JNIEnv *env) override + { this->api = api; this->env = env; } - void preAppSpecialize(AppSpecializeArgs *args) override { + void preAppSpecialize(AppSpecializeArgs *args) override + { + api->setOption(zygisk::Option::DLCLOSE_MODULE_LIBRARY); + uint32_t flags = api->getFlags(); + bool isRoot = (flags & zygisk::StateFlag::PROCESS_GRANTED_ROOT) != 0; + bool isOnDenylist = (flags & zygisk::StateFlag::PROCESS_ON_DENYLIST) != 0; - if (flags & zygisk::StateFlag::PROCESS_GRANTED_ROOT) { - return; - } - - if ((flags & zygisk::PROCESS_ON_DENYLIST) && args->uid > 1000) { + if (!isRoot && isOnDenylist && args->uid > 1000) + { api->setOption(zygisk::Option::FORCE_DENYLIST_UNMOUNT); } - api->setOption(zygisk::Option::DLCLOSE_MODULE_LIBRARY); - return; } - void preServerSpecialize(ServerSpecializeArgs *args) override { + void preServerSpecialize(ServerSpecializeArgs *args) + { api->setOption(zygisk::Option::DLCLOSE_MODULE_LIBRARY); }