diff --git a/module/build.gradle b/module/build.gradle index 9c6cc547..56a0172f 100644 --- a/module/build.gradle +++ b/module/build.gradle @@ -5,12 +5,12 @@ import java.security.MessageDigest apply plugin: 'com.android.library' -def apiVersion = 5 +def apiVersion = 6 def moduleProp = [ id : "riru-core", name : "Riru (Riru - Core)", - version : "v20.1", - versionCode: "32", + version : "v21.0", + versionCode: "33", author : "Rikka", description: "Inject zygote process by replace libmemtrack.so, provide interface to other Riru modules." ] diff --git a/module/src/main/cpp/jni_native_method.cpp b/module/src/main/cpp/jni_native_method.cpp index d7d365eb..a46a7892 100644 --- a/module/src/main/cpp/jni_native_method.cpp +++ b/module/src/main/cpp/jni_native_method.cpp @@ -64,7 +64,8 @@ static void nativeForkAndSpecialize_pre( JNIEnv *env, jclass clazz, jint &uid, jint &gid, jintArray &gids, jint &runtime_flags, jobjectArray &rlimits, jint &mount_external, jstring &se_info, jstring &se_name, jintArray &fdsToClose, jintArray &fdsToIgnore, jboolean &is_child_zygote, - jstring &instructionSet, jstring &appDataDir, jboolean &isTopApp, jobjectArray &pkgDataInfoList) { + jstring &instructionSet, jstring &appDataDir, jboolean &isTopApp, jobjectArray &pkgDataInfoList, + jboolean &bindMountAppStorageDirs) { nativeForkAndSpecialize_calls_count++; @@ -78,7 +79,12 @@ static void nativeForkAndSpecialize_pre( if (!module->shouldSkipUid && shouldSkipUid(uid)) continue; - if (module->apiVersion >= 5) { + if (module->apiVersion >= 6) { + ((nativeForkAndSpecialize_pre_v6_t *) module->forkAndSpecializePre)( + env, clazz, &uid, &gid, &gids, &runtime_flags, &rlimits, &mount_external, + &se_info, &se_name, &fdsToClose, &fdsToIgnore, &is_child_zygote, + &instructionSet, &appDataDir, &isTopApp, &pkgDataInfoList, &bindMountAppStorageDirs); + } else if (module->apiVersion == 5) { ((nativeForkAndSpecialize_pre_v5_t *) module->forkAndSpecializePre)( env, clazz, &uid, &gid, &gids, &runtime_flags, &rlimits, &mount_external, &se_info, &se_name, &fdsToClose, &fdsToIgnore, &is_child_zygote, @@ -142,7 +148,7 @@ static void nativeSpecializeAppProcess_pre( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir, - jboolean &isTopApp, jobjectArray &pkgDataInfoList) { + jboolean &isTopApp, jobjectArray &pkgDataInfoList, jboolean &bindMountAppStorageDirs) { nativeSpecializeAppProcess_calls_count++; @@ -150,7 +156,12 @@ static void nativeSpecializeAppProcess_pre( if (!module->specializeAppProcessPre) continue; - if (module->apiVersion >= 5) { + if (module->apiVersion >= 6) { + ((nativeSpecializeAppProcess_pre_v6_t *) module->specializeAppProcessPre)( + env, clazz, &uid, &gid, &gids, &runtimeFlags, &rlimits, &mountExternal, &seInfo, + &niceName, &startChildZygote, &instructionSet, &appDataDir, &isTopApp, + &pkgDataInfoList, &bindMountAppStorageDirs); + } else if (module->apiVersion == 5) { ((nativeSpecializeAppProcess_pre_v5_t *) module->specializeAppProcessPre)( env, clazz, &uid, &gid, &gids, &runtimeFlags, &rlimits, &mountExternal, &seInfo, &niceName, &startChildZygote, &instructionSet, &appDataDir, &isTopApp, @@ -228,10 +239,12 @@ jint nativeForkAndSpecialize_marshmallow( jboolean is_child_zygote = JNI_FALSE; jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_marshmallow_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, @@ -249,10 +262,12 @@ jint nativeForkAndSpecialize_oreo( jboolean is_child_zygote = JNI_FALSE; jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_oreo_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, @@ -270,10 +285,12 @@ jint nativeForkAndSpecialize_p( jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_p_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name, @@ -287,13 +304,37 @@ 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 se_name, jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote, - jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList) { + jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList, + jboolean bindMountAppStorageDirs) { nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_r_t *) _nativeForkAndSpecialize)( + env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name, + fdsToClose, fdsToIgnore, is_child_zygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); + + nativeForkAndSpecialize_post(env, clazz, uid, res); + return res; +} + +jint nativeForkAndSpecialize_r_dp2( + JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, + jobjectArray rlimits, jint mount_external, jstring se_info, jstring se_name, + jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote, + jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList) { + + jboolean bindMountAppStorageDirs = JNI_FALSE; + + nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, + se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); + + jint res = ((nativeForkAndSpecialize_r_dp2_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList); @@ -309,10 +350,12 @@ jint nativeForkAndSpecialize_samsung_p( jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_samsung_p_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, runtime_flags, rlimits, mount_external, se_info, category, @@ -332,10 +375,12 @@ jint nativeForkAndSpecialize_samsung_o( jboolean is_child_zygote = JNI_FALSE; jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_samsung_o_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, category, @@ -355,10 +400,12 @@ jint nativeForkAndSpecialize_samsung_n( jboolean is_child_zygote = JNI_FALSE; jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_samsung_n_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, category, @@ -377,10 +424,12 @@ jint nativeForkAndSpecialize_samsung_m( jboolean is_child_zygote = JNI_FALSE; jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeForkAndSpecialize_pre(env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, se_name, fdsToClose, fdsToIgnore, is_child_zygote, - instructionSet, appDataDir, isTopApp, pkgDataInfoList); + instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); jint res = ((nativeForkAndSpecialize_samsung_m_t *) _nativeForkAndSpecialize)( env, clazz, uid, gid, gids, debug_flags, rlimits, mount_external, se_info, category, @@ -392,19 +441,21 @@ jint nativeForkAndSpecialize_samsung_m( // ----------------------------------------------------------------- -void nativeSpecializeAppProcess( +void nativeSpecializeAppProcess_q( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir) { jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeSpecializeAppProcess_pre( env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, - startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList); + startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); - ((nativeSpecializeAppProcess_t *) _nativeSpecializeAppProcess)( + ((nativeSpecializeAppProcess_q_t *) _nativeSpecializeAppProcess)( env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, startChildZygote, instructionSet, appDataDir); @@ -415,13 +466,35 @@ void nativeSpecializeAppProcess_r( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir, - jboolean isTopApp, jobjectArray pkgDataInfoList) { + jboolean isTopApp, jobjectArray pkgDataInfoList, jboolean bindMountAppStorageDirs) { nativeSpecializeAppProcess_pre( env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, - startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList); + startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); ((nativeSpecializeAppProcess_r_t *) _nativeSpecializeAppProcess)( + env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, + startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); + + nativeSpecializeAppProcess_post(env, clazz); +} + +void nativeSpecializeAppProcess_r_dp2( + JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, + jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, + jboolean startChildZygote, jstring instructionSet, jstring appDataDir, + jboolean isTopApp, jobjectArray pkgDataInfoList) { + + jboolean bindMountAppStorageDirs = JNI_FALSE; + + nativeSpecializeAppProcess_pre( + env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, + startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); + + ((nativeSpecializeAppProcess_r_dp2_t *) _nativeSpecializeAppProcess)( env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList); @@ -429,17 +502,19 @@ void nativeSpecializeAppProcess_r( } -void nativeSpecializeAppProcess_samsung( +void nativeSpecializeAppProcess_samsung_q( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jint space, jint accessInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir) { jboolean isTopApp = JNI_FALSE; jobjectArray pkgDataInfoList = nullptr; + jboolean bindMountAppStorageDirs = JNI_FALSE; nativeSpecializeAppProcess_pre( env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, - startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList); + startChildZygote, instructionSet, appDataDir, isTopApp, pkgDataInfoList, + bindMountAppStorageDirs); ((nativeSpecializeAppProcess_samsung_t *) _nativeSpecializeAppProcess)( env, clazz, uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, space, diff --git a/module/src/main/cpp/jni_native_method.h b/module/src/main/cpp/jni_native_method.h index 8954e909..4784c84b 100644 --- a/module/src/main/cpp/jni_native_method.h +++ b/module/src/main/cpp/jni_native_method.h @@ -45,13 +45,26 @@ jint nativeForkAndSpecialize_p( jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote, jstring instructionSet, jstring appDataDir); -const static char *nativeForkAndSpecialize_r_sig ="(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;)I"; +const static char *nativeForkAndSpecialize_r_sig ="(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;Z)I"; using nativeForkAndSpecialize_r_t = jint( JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring, - jintArray, jintArray, jboolean, jstring, jstring, jboolean, jobjectArray); + jintArray, jintArray, jboolean, jstring, jstring, jboolean, jobjectArray, jboolean); 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 se_name, + jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote, + jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList, + jboolean bindMountAppStorageDirs); + +const static char *nativeForkAndSpecialize_r_dp2_sig ="(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;)I"; + +using nativeForkAndSpecialize_r_dp2_t = jint( + JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring, + jintArray, jintArray, jboolean, jstring, jstring, jboolean, jobjectArray); + +jint nativeForkAndSpecialize_r_dp2( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtime_flags, jobjectArray rlimits, jint mount_external, jstring se_info, jstring se_name, jintArray fdsToClose, jintArray fdsToIgnore, jboolean is_child_zygote, @@ -105,36 +118,48 @@ jint nativeForkAndSpecialize_samsung_m( // ----------------------------------------------------------------- -const static char *nativeSpecializeAppProcess_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V"; +const static char *nativeSpecializeAppProcess_q_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V"; -using nativeSpecializeAppProcess_t = void( +using nativeSpecializeAppProcess_q_t = void( JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring, jboolean, jstring, jstring); -void nativeSpecializeAppProcess( +void nativeSpecializeAppProcess_q( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir); -const static char *nativeSpecializeAppProcess_r_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;)V"; +const static char *nativeSpecializeAppProcess_r_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;Z)V"; using nativeSpecializeAppProcess_r_t = void( JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring, - jboolean, jstring, jstring, jboolean, jobjectArray); + jboolean, jstring, jstring, jboolean, jobjectArray, jboolean); void nativeSpecializeAppProcess_r( + JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, + jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, + jboolean startChildZygote, jstring instructionSet, jstring appDataDir, + jboolean isTopApp, jobjectArray pkgDataInfoList, jboolean bindMountAppStorageDirs); + +const static char *nativeSpecializeAppProcess_r_dp2_sig = "(II[II[[IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;)V"; + +using nativeSpecializeAppProcess_r_dp2_t = void( + JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jstring, + jboolean, jstring, jstring, jboolean, jobjectArray); + +void nativeSpecializeAppProcess_r_dp2( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir, jboolean isTopApp, jobjectArray pkgDataInfoList); -const static char *nativeSpecializeAppProcess_sig_samsung ="(II[II[[IILjava/lang/String;IILjava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V"; +const static char *nativeSpecializeAppProcess_sig_samsung_q ="(II[II[[IILjava/lang/String;IILjava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V"; using nativeSpecializeAppProcess_samsung_t = void( JNIEnv *, jclass, jint, jint, jintArray, jint, jobjectArray, jint, jstring, jint, jint, jstring, jboolean, jstring, jstring); -void nativeSpecializeAppProcess_samsung( +void nativeSpecializeAppProcess_samsung_q( JNIEnv *env, jclass clazz, jint uid, jint gid, jintArray gids, jint runtimeFlags, jobjectArray rlimits, jint mountExternal, jstring seInfo, jint space, jint accessInfo, jstring niceName, jboolean startChildZygote, jstring instructionSet, jstring appDataDir); diff --git a/module/src/main/cpp/main.cpp b/module/src/main/cpp/main.cpp index a8882697..f44a6aa8 100644 --- a/module/src/main/cpp/main.cpp +++ b/module/src/main/cpp/main.cpp @@ -170,6 +170,9 @@ static JNINativeMethod *onRegisterZygote(JNIEnv *env, const char *className, else if (strcmp(nativeForkAndSpecialize_marshmallow_sig, method.signature) == 0) newMethods[i].fnPtr = (void *) nativeForkAndSpecialize_marshmallow; + else if (strcmp(nativeForkAndSpecialize_r_dp2_sig, method.signature) == 0) + newMethods[i].fnPtr = (void *) nativeForkAndSpecialize_r_dp2; + else if (strcmp(nativeForkAndSpecialize_samsung_p_sig, method.signature) == 0) newMethods[i].fnPtr = (void *) nativeForkAndSpecialize_samsung_p; else if (strcmp(nativeForkAndSpecialize_samsung_o_sig, method.signature) == 0) @@ -193,10 +196,13 @@ static JNINativeMethod *onRegisterZygote(JNIEnv *env, const char *className, if (strcmp(nativeSpecializeAppProcess_r_sig, method.signature) == 0) newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_r; - else if (strcmp(nativeSpecializeAppProcess_sig, method.signature) == 0) - newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess; - else if (strcmp(nativeSpecializeAppProcess_sig_samsung, method.signature) == 0) - newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_samsung; + else if (strcmp(nativeSpecializeAppProcess_q_sig, method.signature) == 0) + newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_q; + else if (strcmp(nativeSpecializeAppProcess_sig_samsung_q, method.signature) == 0) + newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_samsung_q; + + else if (strcmp(nativeSpecializeAppProcess_r_dp2_sig, method.signature) == 0) + newMethods[i].fnPtr = (void *) nativeSpecializeAppProcess_r_dp2; else LOGW("found nativeSpecializeAppProcess but signature %s mismatch", method.signature); diff --git a/module/src/main/cpp/module.h b/module/src/main/cpp/module.h index 78dd995f..d314b4cb 100644 --- a/module/src/main/cpp/module.h +++ b/module/src/main/cpp/module.h @@ -26,7 +26,13 @@ using nativeForkAndSpecialize_pre_v3_t = void( using nativeForkAndSpecialize_pre_v5_t = void( JNIEnv *, jclass, jint *, jint *, jintArray *, jint *, jobjectArray *, jint *, jstring *, - jstring *, jintArray *, jintArray *, jboolean *, jstring *, jstring *, jboolean *, jobjectArray *); + jstring *, jintArray *, jintArray *, jboolean *, jstring *, jstring *, jboolean *, + jobjectArray *); + +using nativeForkAndSpecialize_pre_v6_t = void( + JNIEnv *, jclass, jint *, jint *, jintArray *, jint *, jobjectArray *, jint *, jstring *, + jstring *, jintArray *, jintArray *, jboolean *, jstring *, jstring *, jboolean *, + jobjectArray *, jboolean *); using nativeForkAndSpecialize_post_t = int( JNIEnv *, jclass, jint); @@ -51,6 +57,10 @@ using nativeSpecializeAppProcess_pre_v5_t = void( JNIEnv *, jclass, jint *, jint *, jintArray *, jint *, jobjectArray *, jint *, jstring *, jstring *, jboolean *, jstring *, jstring *, jboolean *, jobjectArray *); +using nativeSpecializeAppProcess_pre_v6_t = void( + JNIEnv *, jclass, jint *, jint *, jintArray *, jint *, jobjectArray *, jint *, jstring *, + jstring *, jboolean *, jstring *, jstring *, jboolean *, jobjectArray *, jboolean *); + using nativeSpecializeAppProcess_post_t = int(JNIEnv *, jclass); using shouldSkipUid_t = int(int); diff --git a/template/magisk_module/README.md b/template/magisk_module/README.md index d236e827..a5024859 100644 --- a/template/magisk_module/README.md +++ b/template/magisk_module/README.md @@ -8,9 +8,13 @@ See [https://github.com/RikkaApps/Riru](https://github.com/RikkaApps/Riru) for m ## Changelog +### v21.0 (33) (2020-04-24) + +- Works on Android R DP3 + ### v20.1 (32) (2020-04-21) -- Works Android R DP2 +- Works on Android R DP2 ### v19.8 (30)