From 6bb66e28190f2be9fff825f96e86a57d48c60071 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Mon, 28 Jul 2025 17:12:17 +0800 Subject: [PATCH] kernel: Updated APK signature support, removed redundant definitions and adjusted indexing Co-authored-by: rsuntk Co-authored-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> --- kernel/Makefile | 18 ++++++++---------- kernel/apk_sign.c | 12 +++++++----- .../java/com/sukisu/ultra/ui/screen/Home.kt | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/kernel/Makefile b/kernel/Makefile index 5b686231..c89a83b3 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -70,12 +70,15 @@ endif ccflags-y += -DKSU_VERSION=$(KSU_VERSION) ccflags-y += -DKSU_VERSION_FULL=\"$(KSU_VERSION_FULL)\" -ifndef KSU_EXPECTED_SIZE -KSU_EXPECTED_SIZE := 0x35c +# Custom Signs +ifdef KSU_EXPECTED_SIZE +ccflags-y += -DEXPECTED_SIZE=$(KSU_EXPECTED_SIZE) +$(info -- Custom KernelSU Manager signature size: $(KSU_EXPECTED_SIZE)) endif -ifndef KSU_EXPECTED_HASH -KSU_EXPECTED_HASH := 947ae944f3de4ed4c21a7e4f7953ecf351bfa2b36239da37a34111ad29993eef +ifdef KSU_EXPECTED_HASH +ccflags-y += -DEXPECTED_HASH=\"$(KSU_EXPECTED_HASH)\" +$(info -- Custom KernelSU Manager signature hash: $(KSU_EXPECTED_HASH)) endif ifdef KSU_MANAGER_PACKAGE @@ -83,9 +86,8 @@ ccflags-y += -DKSU_MANAGER_PACKAGE=\"$(KSU_MANAGER_PACKAGE)\" $(info -- SukiSU Manager package name: $(KSU_MANAGER_PACKAGE)) endif -$(info -- SukiSU Manager signature size: $(KSU_EXPECTED_SIZE)) -$(info -- SukiSU Manager signature hash: $(KSU_EXPECTED_HASH)) $(info -- Supported Unofficial Manager: 5ec1cff (GKI) ShirkNeko udochina (GKI and KPM)) + KERNEL_VERSION := $(VERSION).$(PATCHLEVEL) KERNEL_TYPE := Non-GKI # Check for GKI 2.0 (5.10+ or 6.x+) @@ -107,10 +109,6 @@ else $(info -- KPM is disabled) endif - -ccflags-y += -DEXPECTED_SIZE=$(KSU_EXPECTED_SIZE) -ccflags-y += -DEXPECTED_HASH=\"$(KSU_EXPECTED_HASH)\" - ccflags-y += -Wno-implicit-function-declaration -Wno-strict-prototypes -Wno-int-conversion -Wno-gcc-compat ccflags-y += -Wno-declaration-after-statement -Wno-unused-function diff --git a/kernel/apk_sign.c b/kernel/apk_sign.c index d47cb315..c235dbf0 100644 --- a/kernel/apk_sign.c +++ b/kernel/apk_sign.c @@ -459,7 +459,7 @@ int ksu_get_active_managers(struct manager_list_info *info) if (ksu_manager_uid != KSU_INVALID_UID && count < 2) { info->managers[count].uid = ksu_manager_uid; - info->managers[count].signature_index = 1; + info->managers[count].signature_index = 0; count++; } @@ -490,9 +490,11 @@ static struct apk_sign_key { unsigned size; const char *sha256; } apk_sign_keys[] = { - {EXPECTED_SIZE, EXPECTED_HASH}, {EXPECTED_SIZE_SHIRKNEKO, EXPECTED_HASH_SHIRKNEKO}, // ShirkNeko/SukiSU {EXPECTED_SIZE_OTHER, EXPECTED_HASH_OTHER}, // Dynamic Sign +#ifdef EXPECTED_SIZE + {EXPECTED_SIZE, EXPECTED_HASH}, // Custom +#endif }; static struct sdesc *init_sdesc(struct crypto_shash *alg) @@ -620,7 +622,7 @@ static int verify_signature_block(struct file *fp, u32 *size4, loff_t *pos, u32 for (i = 0; i < ARRAY_SIZE(apk_sign_keys); i++) { sign_key = apk_sign_keys[i]; - if (i == 2) { + if (i == 1) { // Dynamic Sign indexing unsigned long flags; spin_lock_irqsave(&dynamic_sign_lock, flags); if (dynamic_sign.is_set) { @@ -796,8 +798,8 @@ clean: } if (check_multi_manager) { - // 1: ShirkNeko/SukiSU, 2: Dynamic Sign - if (matched_index == 1 || matched_index == 2) { + // 0: ShirkNeko/SukiSU, 1: Dynamic Sign + if (matched_index == 0 || matched_index == 1) { pr_info("Multi-manager APK detected (dynamic_sign enabled): signature_index=%d\n", matched_index); return 1; } diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt index 8e27d5f1..ebee5da2 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt @@ -737,9 +737,9 @@ private fun InfoCard( append(" ") append( when (signatureIndex) { - 1 -> "(${stringResource(R.string.default_signature)})" - 2 -> "(${stringResource(R.string.dynamic_signature)})" - else -> if (signatureIndex >= 0) "(${ + 0 -> "(${stringResource(R.string.default_signature)})" + 1 -> "(${stringResource(R.string.dynamic_signature)})" + else -> if (signatureIndex >= 2) "(${ stringResource( R.string.signature_index, signatureIndex