Skip to content
This repository has been archived by the owner on Jan 8, 2024. It is now read-only.

Commit

Permalink
support Android DP3
Browse files Browse the repository at this point in the history
  • Loading branch information
RikkaW committed Apr 24, 2020
1 parent 63b470f commit b4fc4af
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 38 deletions.
6 changes: 3 additions & 3 deletions module/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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."
]
Expand Down
115 changes: 95 additions & 20 deletions module/src/main/cpp/jni_native_method.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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++;

Expand All @@ -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,
Expand Down Expand Up @@ -142,15 +148,20 @@ 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++;

for (auto module : *get_modules()) {
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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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);

Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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);

Expand All @@ -415,31 +466,55 @@ 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);

nativeSpecializeAppProcess_post(env, clazz);
}


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,
Expand Down
Loading

0 comments on commit b4fc4af

Please sign in to comment.