mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-23 00:17:42 +00:00
Properly version zygisk APIs
This commit is contained in:
parent
685a2d2101
commit
e35925d520
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include <jni.h>
|
#include <jni.h>
|
||||||
|
|
||||||
#define ZYGISK_API_VERSION 4
|
#define ZYGISK_API_VERSION 5
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ class ForkAndSpec(JNIHook):
|
|||||||
return 'nativeForkAndSpecialize'
|
return 'nativeForkAndSpecialize'
|
||||||
|
|
||||||
def init_args(self):
|
def init_args(self):
|
||||||
return 'AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);'
|
return 'AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);'
|
||||||
|
|
||||||
def body(self):
|
def body(self):
|
||||||
decl = ''
|
decl = ''
|
||||||
|
@ -4,7 +4,7 @@ namespace {
|
|||||||
|
|
||||||
void *nativeForkAndSpecialize_orig = nullptr;
|
void *nativeForkAndSpecialize_orig = nullptr;
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_l(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_l(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeForkAndSpecialize_pre();
|
ctx.nativeForkAndSpecialize_pre();
|
||||||
reinterpret_cast<decltype(&nativeForkAndSpecialize_l)>(nativeForkAndSpecialize_orig)(
|
reinterpret_cast<decltype(&nativeForkAndSpecialize_l)>(nativeForkAndSpecialize_orig)(
|
||||||
@ -14,7 +14,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_o(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_o(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeForkAndSpecialize_pre();
|
ctx.nativeForkAndSpecialize_pre();
|
||||||
@ -25,7 +25,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_p(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_p(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
@ -37,7 +37,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_q_alt(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_q_alt(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
args.is_top_app = &is_top_app;
|
args.is_top_app = &is_top_app;
|
||||||
@ -50,7 +50,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_r(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_r(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
args.is_top_app = &is_top_app;
|
args.is_top_app = &is_top_app;
|
||||||
@ -67,7 +67,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_u(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_u(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
args.is_top_app = &is_top_app;
|
args.is_top_app = &is_top_app;
|
||||||
@ -85,7 +85,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_m(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _0, jint _1, jstring nice_name, jintArray fds_to_close, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_m(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _0, jint _1, jstring nice_name, jintArray fds_to_close, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeForkAndSpecialize_pre();
|
ctx.nativeForkAndSpecialize_pre();
|
||||||
reinterpret_cast<decltype(&nativeForkAndSpecialize_samsung_m)>(nativeForkAndSpecialize_orig)(
|
reinterpret_cast<decltype(&nativeForkAndSpecialize_samsung_m)>(nativeForkAndSpecialize_orig)(
|
||||||
@ -95,7 +95,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_n(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _2, jint _3, jstring nice_name, jintArray fds_to_close, jstring instruction_set, jstring app_data_dir, jint _4) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_n(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _2, jint _3, jstring nice_name, jintArray fds_to_close, jstring instruction_set, jstring app_data_dir, jint _4) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeForkAndSpecialize_pre();
|
ctx.nativeForkAndSpecialize_pre();
|
||||||
reinterpret_cast<decltype(&nativeForkAndSpecialize_samsung_n)>(nativeForkAndSpecialize_orig)(
|
reinterpret_cast<decltype(&nativeForkAndSpecialize_samsung_n)>(nativeForkAndSpecialize_orig)(
|
||||||
@ -105,7 +105,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_o(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _5, jint _6, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_o(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _5, jint _6, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeForkAndSpecialize_pre();
|
ctx.nativeForkAndSpecialize_pre();
|
||||||
@ -116,7 +116,7 @@ void *nativeForkAndSpecialize_orig = nullptr;
|
|||||||
return ctx.pid;
|
return ctx.pid;
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_p(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _7, jint _8, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] jint nativeForkAndSpecialize_samsung_p(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _7, jint _8, jstring nice_name, jintArray fds_to_close, jintArray fds_to_ignore, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.fds_to_ignore = &fds_to_ignore;
|
args.fds_to_ignore = &fds_to_ignore;
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
@ -182,7 +182,7 @@ std::array nativeForkAndSpecialize_methods = {
|
|||||||
|
|
||||||
void *nativeSpecializeAppProcess_orig = nullptr;
|
void *nativeSpecializeAppProcess_orig = nullptr;
|
||||||
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_q(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_q(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeSpecializeAppProcess_pre();
|
ctx.nativeSpecializeAppProcess_pre();
|
||||||
@ -192,7 +192,7 @@ void *nativeSpecializeAppProcess_orig = nullptr;
|
|||||||
ctx.nativeSpecializeAppProcess_post();
|
ctx.nativeSpecializeAppProcess_post();
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_q_alt(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app) {
|
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_q_alt(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
args.is_top_app = &is_top_app;
|
args.is_top_app = &is_top_app;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
@ -203,7 +203,7 @@ void *nativeSpecializeAppProcess_orig = nullptr;
|
|||||||
ctx.nativeSpecializeAppProcess_post();
|
ctx.nativeSpecializeAppProcess_post();
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_r(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs) {
|
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_r(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
args.is_top_app = &is_top_app;
|
args.is_top_app = &is_top_app;
|
||||||
args.pkg_data_info_list = &pkg_data_info_list;
|
args.pkg_data_info_list = &pkg_data_info_list;
|
||||||
@ -218,7 +218,7 @@ void *nativeSpecializeAppProcess_orig = nullptr;
|
|||||||
ctx.nativeSpecializeAppProcess_post();
|
ctx.nativeSpecializeAppProcess_post();
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_u(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides) {
|
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_u(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir, jboolean is_top_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
args.is_top_app = &is_top_app;
|
args.is_top_app = &is_top_app;
|
||||||
args.pkg_data_info_list = &pkg_data_info_list;
|
args.pkg_data_info_list = &pkg_data_info_list;
|
||||||
@ -234,7 +234,7 @@ void *nativeSpecializeAppProcess_orig = nullptr;
|
|||||||
ctx.nativeSpecializeAppProcess_post();
|
ctx.nativeSpecializeAppProcess_post();
|
||||||
}
|
}
|
||||||
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_samsung_q(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _9, jint _10, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
[[clang::no_stack_protector]] void nativeSpecializeAppProcess_samsung_q(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _9, jint _10, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir) {
|
||||||
AppSpecializeArgs_v3 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
|
||||||
args.is_child_zygote = &is_child_zygote;
|
args.is_child_zygote = &is_child_zygote;
|
||||||
ZygiskContext ctx(env, &args);
|
ZygiskContext ctx(env, &args);
|
||||||
ctx.nativeSpecializeAppProcess_pre();
|
ctx.nativeSpecializeAppProcess_pre();
|
||||||
|
@ -126,15 +126,16 @@ case 2: { \
|
|||||||
} \
|
} \
|
||||||
case 3: \
|
case 3: \
|
||||||
case 4: \
|
case 4: \
|
||||||
|
case 5: \
|
||||||
mod.v1->method(mod.v1->impl, args);\
|
mod.v1->method(mod.v1->impl, args);\
|
||||||
break; \
|
break; \
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZygiskModule::preAppSpecialize(AppSpecializeArgs_v3 *args) const {
|
void ZygiskModule::preAppSpecialize(AppSpecializeArgs_v5 *args) const {
|
||||||
call_app(preAppSpecialize)
|
call_app(preAppSpecialize)
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZygiskModule::postAppSpecialize(const AppSpecializeArgs_v3 *args) const {
|
void ZygiskModule::postAppSpecialize(const AppSpecializeArgs_v5 *args) const {
|
||||||
call_app(postAppSpecialize)
|
call_app(postAppSpecialize)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,16 +13,19 @@ struct AppSpecializeArgs_v1;
|
|||||||
using AppSpecializeArgs_v2 = AppSpecializeArgs_v1;
|
using AppSpecializeArgs_v2 = AppSpecializeArgs_v1;
|
||||||
struct AppSpecializeArgs_v3;
|
struct AppSpecializeArgs_v3;
|
||||||
using AppSpecializeArgs_v4 = AppSpecializeArgs_v3;
|
using AppSpecializeArgs_v4 = AppSpecializeArgs_v3;
|
||||||
|
struct AppSpecializeArgs_v5;
|
||||||
|
|
||||||
struct module_abi_v1;
|
struct module_abi_v1;
|
||||||
using module_abi_v2 = module_abi_v1;
|
using module_abi_v2 = module_abi_v1;
|
||||||
using module_abi_v3 = module_abi_v1;
|
using module_abi_v3 = module_abi_v1;
|
||||||
using module_abi_v4 = module_abi_v1;
|
using module_abi_v4 = module_abi_v1;
|
||||||
|
using module_abi_v5 = module_abi_v1;
|
||||||
|
|
||||||
struct api_abi_v1;
|
struct api_abi_v1;
|
||||||
struct api_abi_v2;
|
struct api_abi_v2;
|
||||||
using api_abi_v3 = api_abi_v2;
|
using api_abi_v3 = api_abi_v2;
|
||||||
struct api_abi_v4;
|
struct api_abi_v4;
|
||||||
|
using api_abi_v5 = api_abi_v4;
|
||||||
|
|
||||||
union ApiTable;
|
union ApiTable;
|
||||||
|
|
||||||
@ -45,7 +48,6 @@ struct AppSpecializeArgs_v3 {
|
|||||||
jobjectArray *whitelisted_data_info_list = nullptr;
|
jobjectArray *whitelisted_data_info_list = nullptr;
|
||||||
jboolean *mount_data_dirs = nullptr;
|
jboolean *mount_data_dirs = nullptr;
|
||||||
jboolean *mount_storage_dirs = nullptr;
|
jboolean *mount_storage_dirs = nullptr;
|
||||||
jboolean *mount_sysprop_overrides = nullptr;
|
|
||||||
|
|
||||||
AppSpecializeArgs_v3(
|
AppSpecializeArgs_v3(
|
||||||
jint &uid, jint &gid, jintArray &gids, jint &runtime_flags,
|
jint &uid, jint &gid, jintArray &gids, jint &runtime_flags,
|
||||||
@ -56,6 +58,17 @@ struct AppSpecializeArgs_v3 {
|
|||||||
instruction_set(instruction_set), app_data_dir(app_data_dir) {}
|
instruction_set(instruction_set), app_data_dir(app_data_dir) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct AppSpecializeArgs_v5 : public AppSpecializeArgs_v3 {
|
||||||
|
jboolean *mount_sysprop_overrides = nullptr;
|
||||||
|
|
||||||
|
AppSpecializeArgs_v5(
|
||||||
|
jint &uid, jint &gid, jintArray &gids, jint &runtime_flags,
|
||||||
|
jobjectArray &rlimits, jint &mount_external, jstring &se_info, jstring &nice_name,
|
||||||
|
jstring &instruction_set, jstring &app_data_dir) : AppSpecializeArgs_v3(
|
||||||
|
uid, gid, gids, runtime_flags, rlimits, mount_external,
|
||||||
|
se_info, nice_name, instruction_set, app_data_dir) {}
|
||||||
|
};
|
||||||
|
|
||||||
struct AppSpecializeArgs_v1 {
|
struct AppSpecializeArgs_v1 {
|
||||||
jint &uid;
|
jint &uid;
|
||||||
jint &gid;
|
jint &gid;
|
||||||
@ -74,14 +87,14 @@ struct AppSpecializeArgs_v1 {
|
|||||||
jboolean *const mount_data_dirs;
|
jboolean *const mount_data_dirs;
|
||||||
jboolean *const mount_storage_dirs;
|
jboolean *const mount_storage_dirs;
|
||||||
|
|
||||||
AppSpecializeArgs_v1(const AppSpecializeArgs_v3 *v3) :
|
AppSpecializeArgs_v1(const AppSpecializeArgs_v5 *a) :
|
||||||
uid(v3->uid), gid(v3->gid), gids(v3->gids), runtime_flags(v3->runtime_flags),
|
uid(a->uid), gid(a->gid), gids(a->gids), runtime_flags(a->runtime_flags),
|
||||||
mount_external(v3->mount_external), se_info(v3->se_info), nice_name(v3->nice_name),
|
mount_external(a->mount_external), se_info(a->se_info), nice_name(a->nice_name),
|
||||||
instruction_set(v3->instruction_set), app_data_dir(v3->app_data_dir),
|
instruction_set(a->instruction_set), app_data_dir(a->app_data_dir),
|
||||||
is_child_zygote(v3->is_child_zygote), is_top_app(v3->is_top_app),
|
is_child_zygote(a->is_child_zygote), is_top_app(a->is_top_app),
|
||||||
pkg_data_info_list(v3->pkg_data_info_list),
|
pkg_data_info_list(a->pkg_data_info_list),
|
||||||
whitelisted_data_info_list(v3->whitelisted_data_info_list),
|
whitelisted_data_info_list(a->whitelisted_data_info_list),
|
||||||
mount_data_dirs(v3->mount_data_dirs), mount_storage_dirs(v3->mount_storage_dirs) {}
|
mount_data_dirs(a->mount_data_dirs), mount_storage_dirs(a->mount_storage_dirs) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ServerSpecializeArgs_v1 {
|
struct ServerSpecializeArgs_v1 {
|
||||||
@ -164,8 +177,8 @@ struct ZygiskModule {
|
|||||||
entry.fn(&api, env);
|
entry.fn(&api, env);
|
||||||
}
|
}
|
||||||
|
|
||||||
void preAppSpecialize(AppSpecializeArgs_v3 *args) const;
|
void preAppSpecialize(AppSpecializeArgs_v5 *args) const;
|
||||||
void postAppSpecialize(const AppSpecializeArgs_v3 *args) const;
|
void postAppSpecialize(const AppSpecializeArgs_v5 *args) const;
|
||||||
void preServerSpecialize(ServerSpecializeArgs_v1 *args) const;
|
void preServerSpecialize(ServerSpecializeArgs_v1 *args) const;
|
||||||
void postServerSpecialize(const ServerSpecializeArgs_v1 *args) const;
|
void postServerSpecialize(const ServerSpecializeArgs_v1 *args) const;
|
||||||
|
|
||||||
@ -222,7 +235,7 @@ struct ZygiskContext {
|
|||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
union {
|
union {
|
||||||
void *ptr;
|
void *ptr;
|
||||||
AppSpecializeArgs_v3 *app;
|
AppSpecializeArgs_v5 *app;
|
||||||
ServerSpecializeArgs_v1 *server;
|
ServerSpecializeArgs_v1 *server;
|
||||||
} args;
|
} args;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user