@@ -6,7 +6,7 @@ static JniHookDefinitions *get_defs();
66
77struct 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