From 2d9783e3d4e8d64e25fc68c5db3214155da247c6 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Fri, 13 Jun 2025 14:39:16 +0800 Subject: [PATCH] manager: Add the ability to get the hook type --- manager/app/src/main/cpp/jni.cc | 5 +++++ manager/app/src/main/cpp/ksu.cc | 6 ++++++ manager/app/src/main/cpp/ksu.h | 4 +++- manager/app/src/main/java/com/sukisu/ultra/Natives.kt | 1 + .../app/src/main/java/com/sukisu/ultra/ui/screen/Home.kt | 8 +++++++- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/manager/app/src/main/cpp/jni.cc b/manager/app/src/main/cpp/jni.cc index 8cddea69..725a5827 100644 --- a/manager/app/src/main/cpp/jni.cc +++ b/manager/app/src/main/cpp/jni.cc @@ -310,4 +310,9 @@ Java_com_sukisu_ultra_Natives_setSuEnabled(JNIEnv *env, jobject thiz, jboolean e extern "C" JNIEXPORT jboolean JNICALL Java_com_sukisu_ultra_Natives_isKPMEnabled(JNIEnv *env, jobject) { return is_KPM_enable(); +} + +extern "C" JNIEXPORT jboolean JNICALL +Java_com_sukisu_ultra_Natives_getHookType(JNIEnv *env, jobject) { + return get_hook_type(); } \ No newline at end of file diff --git a/manager/app/src/main/cpp/ksu.cc b/manager/app/src/main/cpp/ksu.cc index 5dab0a76..3d2a5bc4 100644 --- a/manager/app/src/main/cpp/ksu.cc +++ b/manager/app/src/main/cpp/ksu.cc @@ -30,6 +30,7 @@ #define CMD_IS_SU_ENABLED 14 #define CMD_ENABLE_SU 15 #define CMD_ENABLE_KPM 100 +#define CMD_HOOK_TYPE 101 static bool ksuctl(int cmd, void* arg1, void* arg2) { int32_t result = 0; @@ -102,4 +103,9 @@ bool is_su_enabled() { bool is_KPM_enable() { bool enabled = false; return ksuctl(CMD_ENABLE_KPM, &enabled, nullptr), enabled; +} + +bool get_hook_type() { + bool enabled = false; + return ksuctl(CMD_HOOK_TYPE, &enabled, nullptr), enabled; } \ No newline at end of file diff --git a/manager/app/src/main/cpp/ksu.h b/manager/app/src/main/cpp/ksu.h index 7514a0a6..7a9dfddc 100644 --- a/manager/app/src/main/cpp/ksu.h +++ b/manager/app/src/main/cpp/ksu.h @@ -85,4 +85,6 @@ bool is_su_enabled(); bool is_KPM_enable(); -#endif //KERNELSU_KSU_H +bool get_hook_type(); + +#endif //KERNELSU_KSU_H \ No newline at end of file diff --git a/manager/app/src/main/java/com/sukisu/ultra/Natives.kt b/manager/app/src/main/java/com/sukisu/ultra/Natives.kt index 00a637ff..5ac9deb0 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/Natives.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/Natives.kt @@ -69,6 +69,7 @@ object Natives { external fun isSuEnabled(): Boolean external fun setSuEnabled(enabled: Boolean): Boolean external fun isKPMEnabled(): Boolean + external fun getHookType(): Boolean private const val NON_ROOT_DEFAULT_PROFILE_KEY = "$" private const val NOBODY_UID = 9999 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 72ce3b53..de7ef071 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 @@ -731,7 +731,13 @@ private fun InfoCard( val isSUS_SU = systemInfo.suSFSFeatures == "CONFIG_KSU_SUSFS_SUS_SU" val infoText = buildString { append(systemInfo.suSFSVersion) - append(if (isSUS_SU) " (${systemInfo.suSFSVariant})" else " (${stringResource(R.string.manual_hook)})") + append(if (isSUS_SU && !Natives.getHookType()) " (${systemInfo.suSFSVariant})" else { + if (Natives.getHookType()) { + " (${stringResource(R.string.manual_hook)})" + } else { + "Unknown" + } + }) if (isSUS_SU) { if (systemInfo.susSUMode.isNotEmpty()) { append(" ${stringResource(R.string.sus_su_mode)} ${systemInfo.susSUMode}")