Skip to content

Commit a858557

Browse files
aviraxptopjohnwu
authored andcommitted
Update jni hook signatures for A17 QPR2
1 parent 290200b commit a858557

2 files changed

Lines changed: 110 additions & 11 deletions

File tree

native/src/core/zygisk/gen_jni_hooks.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,9 @@ def init_args(self):
176176
# b qpr2
177177
use_fifo_ui = Argument("use_fifo_ui", jboolean, False)
178178

179+
# c qpr2
180+
cgroup_uid = Argument("cgroup_uid", jint, False)
181+
179182
# server
180183
permitted_capabilities = Argument("permitted_capabilities", jlong)
181184
effective_capabilities = Argument("effective_capabilities", jlong)
@@ -330,6 +333,33 @@ def init_args(self):
330333
],
331334
)
332335

336+
fas_c = ForkApp(
337+
"c",
338+
[
339+
uid,
340+
cgroup_uid,
341+
gid,
342+
gids,
343+
runtime_flags,
344+
rlimits,
345+
mount_external,
346+
se_info,
347+
nice_name,
348+
fds_to_close,
349+
fds_to_ignore,
350+
is_child_zygote,
351+
instruction_set,
352+
app_data_dir,
353+
is_top_app,
354+
use_fifo_ui,
355+
pkg_data_info_list,
356+
whitelisted_data_info_list,
357+
mount_data_dirs,
358+
mount_storage_dirs,
359+
mount_sysprop_overrides,
360+
],
361+
)
362+
333363
fas_samsung_m = ForkApp(
334364
"samsung_m",
335365
[
@@ -517,6 +547,30 @@ def init_args(self):
517547
],
518548
)
519549

550+
spec_c = SpecializeApp(
551+
"c",
552+
[
553+
uid,
554+
cgroup_uid,
555+
gid,
556+
gids,
557+
runtime_flags,
558+
rlimits,
559+
mount_external,
560+
se_info,
561+
nice_name,
562+
is_child_zygote,
563+
instruction_set,
564+
app_data_dir,
565+
is_top_app,
566+
pkg_data_info_list,
567+
whitelisted_data_info_list,
568+
mount_data_dirs,
569+
mount_storage_dirs,
570+
mount_sysprop_overrides,
571+
],
572+
)
573+
520574
spec_xr_u = SpecializeApp(
521575
"xr_u",
522576
[
@@ -648,6 +702,7 @@ def gen_jni_def(field: str, methods: list[JNIHook]):
648702
fas_r,
649703
fas_u,
650704
fas_b,
705+
fas_c,
651706
fas_samsung_m,
652707
fas_samsung_n,
653708
fas_samsung_o,
@@ -660,7 +715,7 @@ def gen_jni_def(field: str, methods: list[JNIHook]):
660715
f.write(
661716
gen_jni_def(
662717
"specialize_app_methods",
663-
[spec_q, spec_q_alt, spec_r, spec_u, spec_xr_u, spec_samsung_q, spec_nubia_u],
718+
[spec_q, spec_q_alt, spec_r, spec_u, spec_c, spec_xr_u, spec_samsung_q, spec_nubia_u],
664719
)
665720
)
666721

native/src/core/zygisk/jni_hooks.hpp

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ static JniHookDefinitions *get_defs();
66

77
struct JniHookDefinitions {
88

9-
std::array<JNINativeMethod, 12> fork_app_methods = {{
9+
std::array<JNINativeMethod, 13> fork_app_methods = {{
1010
// nativeForkAndSpecialize_l
1111
{
1212
"nativeForkAndSpecialize",
@@ -141,6 +141,29 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
141141
return ctx.pid;
142142
}
143143
},
144+
// nativeForkAndSpecialize_c
145+
{
146+
"nativeForkAndSpecialize",
147+
"(III[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;[Ljava/lang/String;ZZZ)I",
148+
(void *) +[] [[clang::no_stack_protector]] (JNIEnv *env, jclass clazz, jint uid, jint cgroup_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, jboolean use_fifo_ui, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides) static -> jint {
149+
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
150+
args.fds_to_ignore = &fds_to_ignore;
151+
args.is_child_zygote = &is_child_zygote;
152+
args.is_top_app = &is_top_app;
153+
args.pkg_data_info_list = &pkg_data_info_list;
154+
args.whitelisted_data_info_list = &whitelisted_data_info_list;
155+
args.mount_data_dirs = &mount_data_dirs;
156+
args.mount_storage_dirs = &mount_storage_dirs;
157+
args.mount_sysprop_overrides = &mount_sysprop_overrides;
158+
ZygiskContext ctx(env, &args);
159+
ctx.nativeForkAndSpecialize_pre();
160+
reinterpret_cast<jint(*)(JNIEnv *env, jclass clazz, jint uid, jint cgroup_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, jboolean use_fifo_ui, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides)>(get_defs()->fork_app_methods[7].fnPtr)(
161+
env, clazz, uid, cgroup_uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, fds_to_close, fds_to_ignore, is_child_zygote, instruction_set, app_data_dir, is_top_app, use_fifo_ui, pkg_data_info_list, whitelisted_data_info_list, mount_data_dirs, mount_storage_dirs, mount_sysprop_overrides
162+
);
163+
ctx.nativeForkAndSpecialize_post();
164+
return ctx.pid;
165+
}
166+
},
144167
// nativeForkAndSpecialize_samsung_m
145168
{
146169
"nativeForkAndSpecialize",
@@ -149,7 +172,7 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
149172
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
150173
ZygiskContext ctx(env, &args);
151174
ctx.nativeForkAndSpecialize_pre();
152-
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[7].fnPtr)(
175+
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[8].fnPtr)(
153176
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, _0, _1, nice_name, fds_to_close, instruction_set, app_data_dir
154177
);
155178
ctx.nativeForkAndSpecialize_post();
@@ -164,7 +187,7 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
164187
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
165188
ZygiskContext ctx(env, &args);
166189
ctx.nativeForkAndSpecialize_pre();
167-
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[8].fnPtr)(
190+
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[9].fnPtr)(
168191
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, _2, _3, nice_name, fds_to_close, instruction_set, app_data_dir, _4
169192
);
170193
ctx.nativeForkAndSpecialize_post();
@@ -180,7 +203,7 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
180203
args.fds_to_ignore = &fds_to_ignore;
181204
ZygiskContext ctx(env, &args);
182205
ctx.nativeForkAndSpecialize_pre();
183-
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[9].fnPtr)(
206+
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[10].fnPtr)(
184207
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, _5, _6, nice_name, fds_to_close, fds_to_ignore, instruction_set, app_data_dir
185208
);
186209
ctx.nativeForkAndSpecialize_post();
@@ -197,7 +220,7 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
197220
args.is_child_zygote = &is_child_zygote;
198221
ZygiskContext ctx(env, &args);
199222
ctx.nativeForkAndSpecialize_pre();
200-
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[10].fnPtr)(
223+
reinterpret_cast<jint(*)(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)>(get_defs()->fork_app_methods[11].fnPtr)(
201224
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, _7, _8, nice_name, fds_to_close, fds_to_ignore, is_child_zygote, instruction_set, app_data_dir
202225
);
203226
ctx.nativeForkAndSpecialize_post();
@@ -220,7 +243,7 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
220243
args.mount_sysprop_overrides = &mount_sysprop_overrides;
221244
ZygiskContext ctx(env, &args);
222245
ctx.nativeForkAndSpecialize_pre();
223-
reinterpret_cast<jint(*)(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, jboolean use_fifo_ui, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides, jstring _9)>(get_defs()->fork_app_methods[11].fnPtr)(
246+
reinterpret_cast<jint(*)(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, jboolean use_fifo_ui, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs, jboolean mount_sysprop_overrides, jstring _9)>(get_defs()->fork_app_methods[12].fnPtr)(
224247
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, fds_to_close, fds_to_ignore, is_child_zygote, instruction_set, app_data_dir, is_top_app, use_fifo_ui, pkg_data_info_list, whitelisted_data_info_list, mount_data_dirs, mount_storage_dirs, mount_sysprop_overrides, _9
225248
);
226249
ctx.nativeForkAndSpecialize_post();
@@ -229,7 +252,7 @@ std::array<JNINativeMethod, 12> fork_app_methods = {{
229252
},
230253
}};
231254

232-
std::array<JNINativeMethod, 7> specialize_app_methods = {{
255+
std::array<JNINativeMethod, 8> specialize_app_methods = {{
233256
// nativeSpecializeAppProcess_q
234257
{
235258
"nativeSpecializeAppProcess",
@@ -302,6 +325,27 @@ std::array<JNINativeMethod, 7> specialize_app_methods = {{
302325
ctx.nativeSpecializeAppProcess_post();
303326
}
304327
},
328+
// nativeSpecializeAppProcess_c
329+
{
330+
"nativeSpecializeAppProcess",
331+
"(III[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;[Ljava/lang/String;ZZZ)V",
332+
(void *) +[] [[clang::no_stack_protector]] (JNIEnv *env, jclass clazz, jint uid, jint cgroup_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) static -> void {
333+
AppSpecializeArgs_v5 args(uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, instruction_set, app_data_dir);
334+
args.is_child_zygote = &is_child_zygote;
335+
args.is_top_app = &is_top_app;
336+
args.pkg_data_info_list = &pkg_data_info_list;
337+
args.whitelisted_data_info_list = &whitelisted_data_info_list;
338+
args.mount_data_dirs = &mount_data_dirs;
339+
args.mount_storage_dirs = &mount_storage_dirs;
340+
args.mount_sysprop_overrides = &mount_sysprop_overrides;
341+
ZygiskContext ctx(env, &args);
342+
ctx.nativeSpecializeAppProcess_pre();
343+
reinterpret_cast<void(*)(JNIEnv *env, jclass clazz, jint uid, jint cgroup_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)>(get_defs()->specialize_app_methods[4].fnPtr)(
344+
env, clazz, uid, cgroup_uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, is_child_zygote, instruction_set, app_data_dir, is_top_app, pkg_data_info_list, whitelisted_data_info_list, mount_data_dirs, mount_storage_dirs, mount_sysprop_overrides
345+
);
346+
ctx.nativeSpecializeAppProcess_post();
347+
}
348+
},
305349
// nativeSpecializeAppProcess_xr_u
306350
{
307351
"nativeSpecializeAppProcess",
@@ -316,7 +360,7 @@ std::array<JNINativeMethod, 7> specialize_app_methods = {{
316360
args.mount_storage_dirs = &mount_storage_dirs;
317361
ZygiskContext ctx(env, &args);
318362
ctx.nativeSpecializeAppProcess_pre();
319-
reinterpret_cast<void(*)(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, jboolean is_perception_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs)>(get_defs()->specialize_app_methods[4].fnPtr)(
363+
reinterpret_cast<void(*)(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, jboolean is_perception_app, jobjectArray pkg_data_info_list, jobjectArray whitelisted_data_info_list, jboolean mount_data_dirs, jboolean mount_storage_dirs)>(get_defs()->specialize_app_methods[5].fnPtr)(
320364
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, is_child_zygote, instruction_set, app_data_dir, is_top_app, is_perception_app, pkg_data_info_list, whitelisted_data_info_list, mount_data_dirs, mount_storage_dirs
321365
);
322366
ctx.nativeSpecializeAppProcess_post();
@@ -331,7 +375,7 @@ std::array<JNINativeMethod, 7> specialize_app_methods = {{
331375
args.is_child_zygote = &is_child_zygote;
332376
ZygiskContext ctx(env, &args);
333377
ctx.nativeSpecializeAppProcess_pre();
334-
reinterpret_cast<void(*)(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _10, jint _11, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir)>(get_defs()->specialize_app_methods[5].fnPtr)(
378+
reinterpret_cast<void(*)(JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jint _10, jint _11, jstring nice_name, jboolean is_child_zygote, jstring instruction_set, jstring app_data_dir)>(get_defs()->specialize_app_methods[6].fnPtr)(
335379
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, _10, _11, nice_name, is_child_zygote, instruction_set, app_data_dir
336380
);
337381
ctx.nativeSpecializeAppProcess_post();
@@ -352,7 +396,7 @@ std::array<JNINativeMethod, 7> specialize_app_methods = {{
352396
args.mount_sysprop_overrides = &mount_sysprop_overrides;
353397
ZygiskContext ctx(env, &args);
354398
ctx.nativeSpecializeAppProcess_pre();
355-
reinterpret_cast<void(*)(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, jstring _12)>(get_defs()->specialize_app_methods[6].fnPtr)(
399+
reinterpret_cast<void(*)(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, jstring _12)>(get_defs()->specialize_app_methods[7].fnPtr)(
356400
env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, nice_name, is_child_zygote, instruction_set, app_data_dir, is_top_app, pkg_data_info_list, whitelisted_data_info_list, mount_data_dirs, mount_storage_dirs, mount_sysprop_overrides, _12
357401
);
358402
ctx.nativeSpecializeAppProcess_post();

0 commit comments

Comments
 (0)