Files
Zygisk-Assistant/module/jni/qingyue.cpp
2024-01-17 04:59:39 -03:00

58 lines
1.7 KiB
C++

/* 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 <unistd.h>
#include <fcntl.h>
#include <android/log.h>
#include "zygisk.hpp"
using zygisk::Api;
using zygisk::AppSpecializeArgs;
using zygisk::ServerSpecializeArgs;
class Qingyue : public zygisk::ModuleBase {
public:
void onLoad(Api *api, JNIEnv *env) override {
this->api = api;
this->env = env;
}
void preAppSpecialize(AppSpecializeArgs *args) override {
uint32_t flags = api->getFlags();
if (flags & zygisk::StateFlag::PROCESS_GRANTED_ROOT) {
return;
}
if ((flags & zygisk::PROCESS_ON_DENYLIST) && args->uid > 1000) {
api->setOption(zygisk::Option::FORCE_DENYLIST_UNMOUNT);
}
api->setOption(zygisk::Option::DLCLOSE_MODULE_LIBRARY);
return;
}
void preServerSpecialize(ServerSpecializeArgs *args) override {
api->setOption(zygisk::Option::DLCLOSE_MODULE_LIBRARY);
}
private:
Api *api;
JNIEnv *env;
};
REGISTER_ZYGISK_MODULE(Qingyue)