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

View File

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

View File

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