[core] Don't hardcode injected AID in native code (#1152)

* Update build.gradle.kts

* Update Android.mk

* Update main.cpp
This commit is contained in:
Wang Han 2021-09-21 18:53:31 +08:00 committed by GitHub
parent bf89c754dc
commit 2b4bdf1bbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

View File

@ -43,6 +43,9 @@ val moduleMinRiruApiVersion = 25
val moduleMinRiruVersionName = "25.0.1" val moduleMinRiruVersionName = "25.0.1"
val moduleMaxRiruApiVersion = 25 val moduleMaxRiruApiVersion = 25
val injectedPackageName = "com.android.shell"
val injectedPackageUid = 2000
val defaultManagerPackageName: String by rootProject.extra val defaultManagerPackageName: String by rootProject.extra
val apiCode: Int by rootProject.extra val apiCode: Int by rootProject.extra
@ -97,6 +100,7 @@ android {
ndkBuild { ndkBuild {
arguments += "RIRU_MODULE_API_VERSION=$moduleMaxRiruApiVersion" arguments += "RIRU_MODULE_API_VERSION=$moduleMaxRiruApiVersion"
arguments += "MODULE_NAME=$riruModuleId" arguments += "MODULE_NAME=$riruModuleId"
arguments += "INJECTED_AID=$injectedPackageUid"
arguments += "-j${Runtime.getRuntime().availableProcessors()}" arguments += "-j${Runtime.getRuntime().availableProcessors()}"
} }
} }
@ -107,8 +111,8 @@ android {
"DEFAULT_MANAGER_PACKAGE_NAME", "DEFAULT_MANAGER_PACKAGE_NAME",
""""$defaultManagerPackageName"""" """"$defaultManagerPackageName""""
) )
buildConfigField("String", "MANAGER_INJECTED_PKG_NAME", """"com.android.shell"""") buildConfigField("String", "MANAGER_INJECTED_PKG_NAME", """"$injectedPackageName"""")
buildConfigField("int", "MANAGER_INJECTED_UID", """2000""") buildConfigField("int", "MANAGER_INJECTED_UID", """$injectedPackageUid""")
} }
lint { lint {

View File

@ -11,5 +11,6 @@ LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_STATIC_LIBRARIES := cxx yahfa riru dobby dex_builder LOCAL_STATIC_LIBRARIES := cxx yahfa riru dobby dex_builder
LOCAL_CFLAGS := -DRIRU_MODULE -DRIRU_MODULE_API_VERSION=${RIRU_MODULE_API_VERSION} LOCAL_CFLAGS := -DRIRU_MODULE -DRIRU_MODULE_API_VERSION=${RIRU_MODULE_API_VERSION}
LOCAL_CFLAGS += -DMODULE_NAME=${MODULE_NAME} LOCAL_CFLAGS += -DMODULE_NAME=${MODULE_NAME}
LOCAL_CFLAGS += -DINJECTED_AID=${INJECTED_AID}
LOCAL_LDLIBS := -llog LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY) include $(BUILD_SHARED_LIBRARY)

View File

@ -31,7 +31,7 @@
namespace lspd { namespace lspd {
int *allowUnload = nullptr; int *allowUnload = nullptr;
static constexpr uid_t kAidShell = 2000; static constexpr uid_t kAidInjected = INJECTED_AID;
static constexpr uid_t kAidInet = 3003; static constexpr uid_t kAidInet = 3003;
namespace { namespace {
@ -59,7 +59,7 @@ namespace lspd {
jobjectArray *, jobjectArray *,
jboolean *, jboolean *,
jboolean *) { jboolean *) {
if (*_uid == kAidShell) { if (*_uid == kAidInjected) {
int array_size = *gids ? env->GetArrayLength(*gids) : 0; int array_size = *gids ? env->GetArrayLength(*gids) : 0;
auto region = std::make_unique<jint[]>(array_size + 1); auto region = std::make_unique<jint[]>(array_size + 1);
auto *new_gids = env->NewIntArray(array_size + 1); auto *new_gids = env->NewIntArray(array_size + 1);
@ -102,7 +102,7 @@ namespace lspd {
jobjectArray *, jobjectArray *,
jboolean *, jboolean *,
jboolean *) { jboolean *) {
if (*_uid == kAidShell) { if (*_uid == kAidInjected) {
int array_size = *gids ? env->GetArrayLength(*gids) : 0; int array_size = *gids ? env->GetArrayLength(*gids) : 0;
auto region = std::make_unique<jint[]>(array_size + 1); auto region = std::make_unique<jint[]>(array_size + 1);
auto *new_gids = env->NewIntArray(array_size + 1); auto *new_gids = env->NewIntArray(array_size + 1);