Update main.cpp

This commit is contained in:
snake-4
2024-03-25 05:12:16 +01:00
parent c630bb1bca
commit 5f30e2bb3e

View File

@@ -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 <cstdlib> #include <cstdlib>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
@@ -23,28 +9,31 @@ using zygisk::Api;
using zygisk::AppSpecializeArgs; using zygisk::AppSpecializeArgs;
using zygisk::ServerSpecializeArgs; using zygisk::ServerSpecializeArgs;
class ZygiskModule : public zygisk::ModuleBase { class ZygiskModule : public zygisk::ModuleBase
{
public: public:
void onLoad(Api *api, JNIEnv *env) override { void onLoad(Api *api, JNIEnv *env) override
{
this->api = api; this->api = api;
this->env = env; 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(); 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) { if (!isRoot && isOnDenylist && args->uid > 1000)
return; {
}
if ((flags & zygisk::PROCESS_ON_DENYLIST) && args->uid > 1000) {
api->setOption(zygisk::Option::FORCE_DENYLIST_UNMOUNT); 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); api->setOption(zygisk::Option::DLCLOSE_MODULE_LIBRARY);
} }