From 0754fc89209a7163166938b959cface40a002a99 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Sun, 10 Aug 2025 17:17:28 +0800 Subject: [PATCH] manager: Update susfs binary version - Add switches and descriptions for new AVC log spoofing in basic settings --- manager/app/src/main/assets/ksu_susfs_1.5.9 | Bin 21360 -> 22128 bytes .../com/sukisu/ultra/ui/screen/SuSFSConfig.kt | 80 +++++++++++++++++- .../com/sukisu/ultra/ui/util/SuSFSManager.kt | 34 +++++++- .../ultra/ui/util/SuSFSModuleScripts.kt | 11 +++ .../src/main/res/values-zh-rCN/strings.xml | 12 +++ manager/app/src/main/res/values/strings.xml | 12 +++ 6 files changed, 146 insertions(+), 3 deletions(-) diff --git a/manager/app/src/main/assets/ksu_susfs_1.5.9 b/manager/app/src/main/assets/ksu_susfs_1.5.9 index 1a2ad5ad11b57e9840e38df7b4f0fe680e71c8ad..d72c0a9a68e501780fdae703c57426ab02f146ee 100644 GIT binary patch delta 6930 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 delta 6195 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 } @@ -311,6 +312,7 @@ fun SuSFSConfigScreen( enableHideBl = SuSFSManager.getEnableHideBl(context) enableCleanupResidue = SuSFSManager.getEnableCleanupResidue(context) umountForZygoteIsoService = SuSFSManager.getUmountForZygoteIsoService(context) + enableAvcLogSpoofing = SuSFSManager.getEnableAvcLogSpoofing(context) loadSlotInfo() } @@ -481,6 +483,7 @@ fun SuSFSConfigScreen( enableHideBl = SuSFSManager.getEnableHideBl(context) enableCleanupResidue = SuSFSManager.getEnableCleanupResidue(context) umountForZygoteIsoService = SuSFSManager.getUmountForZygoteIsoService(context) + enableAvcLogSpoofing = SuSFSManager.getEnableAvcLogSpoofing(context) } isLoading = false showRestoreConfirmDialog = false @@ -946,6 +949,7 @@ fun SuSFSConfigScreen( SuSFSManager.saveExecuteInPostFsData(context, executeInPostFsData) SuSFSManager.saveEnableHideBl(context, enableHideBl) SuSFSManager.saveEnableCleanupResidue(context, enableCleanupResidue) + SuSFSManager.saveEnableAvcLogSpoofing(context, enableAvcLogSpoofing) } isLoading = false } @@ -1237,6 +1241,17 @@ fun SuSFSConfigScreen( SuSFSManager.configureAutoStart(context, true) } } + }, + enableAvcLogSpoofing = enableAvcLogSpoofing, + onEnableAvcLogSpoofingChange = { enabled -> + coroutineScope.launch { + isLoading = true + val success = SuSFSManager.setEnableAvcLogSpoofing(context, enabled) + if (success) { + enableAvcLogSpoofing = enabled + } + isLoading = false + } } ) } @@ -1456,10 +1471,13 @@ private fun BasicSettingsContent( enableHideBl: Boolean, onEnableHideBlChange: (Boolean) -> Unit, enableCleanupResidue: Boolean, - onEnableCleanupResidueChange: (Boolean) -> Unit + onEnableCleanupResidueChange: (Boolean) -> Unit, + enableAvcLogSpoofing: Boolean, + onEnableAvcLogSpoofingChange: (Boolean) -> Unit ) { var scriptLocationExpanded by remember { mutableStateOf(false) } val isAbDevice = isAbDevice() + val isSusVersion159 = isSusVersion159() Column( modifier = Modifier @@ -1769,6 +1787,66 @@ private fun BasicSettingsContent( } } + // AVC日志欺骗开关(仅在1.5.9+版本显示) + if (isSusVersion159) { + Card( + modifier = Modifier.fillMaxWidth(), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surface + ), + shape = RoundedCornerShape(12.dp) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(12.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Column( + modifier = Modifier.weight(1f) + ) { + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + imageVector = Icons.Default.VisibilityOff, + contentDescription = null, + tint = MaterialTheme.colorScheme.primary, + modifier = Modifier.size(18.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + text = stringResource(R.string.avc_log_spoofing), + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Medium, + color = MaterialTheme.colorScheme.onSurface + ) + } + Spacer(modifier = Modifier.height(6.dp)) + Text( + text = stringResource(R.string.avc_log_spoofing_description), + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant, + lineHeight = 14.sp + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = stringResource(R.string.avc_log_spoofing_warning), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.secondary, + lineHeight = 12.sp + ) + } + Switch( + checked = enableAvcLogSpoofing, + onCheckedChange = onEnableAvcLogSpoofingChange, + enabled = !isLoading + ) + } + } + } + // 槽位信息按钮 if (isAbDevice) { Card( diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSManager.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSManager.kt index 5eca099c..1dbd267d 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSManager.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSManager.kt @@ -49,6 +49,7 @@ object SuSFSManager { private const val KEY_ENABLE_CLEANUP_RESIDUE = "enable_cleanup_residue" private const val KEY_ENABLE_HIDE_BL = "enable_hide_bl" private const val KEY_UMOUNT_FOR_ZYGOTE_ISO_SERVICE = "umount_for_zygote_iso_service" + private const val KEY_ENABLE_AVC_LOG_SPOOFING = "enable_avc_log_spoofing" // 常量 @@ -156,7 +157,8 @@ object SuSFSManager { val support158: Boolean, val enableHideBl: Boolean, val enableCleanupResidue: Boolean, - val umountForZygoteIsoService: Boolean + val umountForZygoteIsoService: Boolean, + val enableAvcLogSpoofing: Boolean ) { /** * 检查是否有需要自启动的配置 @@ -232,7 +234,7 @@ object SuSFSManager { } /** - * 检查是否支持循环路径功能(1.5.9+) + * 检查是否支持循环路径和AVC日志欺骗等功能(1.5.9+) */ fun isSusVersion159(): Boolean { return try { @@ -266,6 +268,7 @@ object SuSFSManager { enableHideBl = getEnableHideBl(context), enableCleanupResidue = getEnableCleanupResidue(context), umountForZygoteIsoService = getUmountForZygoteIsoService(context), + enableAvcLogSpoofing = getEnableAvcLogSpoofing(context) ) } @@ -335,6 +338,13 @@ object SuSFSManager { fun getUmountForZygoteIsoService(context: Context): Boolean = getPrefs(context).getBoolean(KEY_UMOUNT_FOR_ZYGOTE_ISO_SERVICE, false) + // AVC日志欺骗配置 + fun saveEnableAvcLogSpoofing(context: Context, enabled: Boolean) = + getPrefs(context).edit { putBoolean(KEY_ENABLE_AVC_LOG_SPOOFING, enabled) } + + fun getEnableAvcLogSpoofing(context: Context): Boolean = + getPrefs(context).getBoolean(KEY_ENABLE_AVC_LOG_SPOOFING, false) + // 路径和配置管理 fun saveSusPaths(context: Context, paths: Set) = @@ -502,6 +512,7 @@ object SuSFSManager { KEY_ENABLE_HIDE_BL to getEnableHideBl(context), KEY_ENABLE_CLEANUP_RESIDUE to getEnableCleanupResidue(context), KEY_UMOUNT_FOR_ZYGOTE_ISO_SERVICE to getUmountForZygoteIsoService(context), + KEY_ENABLE_AVC_LOG_SPOOFING to getEnableAvcLogSpoofing(context), ) } @@ -858,6 +869,25 @@ object SuSFSManager { return success } + // AVC日志欺骗开关 + suspend fun setEnableAvcLogSpoofing(context: Context, enabled: Boolean): Boolean { + if (!isSusVersion159()) { + return false + } + + val success = executeSusfsCommand(context, "enable_avc_log_spoofing ${if (enabled) 1 else 0}") + if (success) { + saveEnableAvcLogSpoofing(context, enabled) + if (isAutoStartEnabled(context)) updateMagiskModule(context) + showToast(context, if (enabled) + context.getString(R.string.avc_log_spoofing_enabled) + else + context.getString(R.string.avc_log_spoofing_disabled) + ) + } + return success + } + // SUS挂载隐藏控制 suspend fun setHideSusMountsForAllProcs(context: Context, hideForAll: Boolean): Boolean { if (!isSusVersion158()) { diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSModuleScripts.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSModuleScripts.kt index 5d511084..1cf9cf82 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSModuleScripts.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/util/SuSFSModuleScripts.kt @@ -117,6 +117,14 @@ object ScriptGenerator { appendLine() } + private fun StringBuilder.generateAvcLogSpoofingSection(enableAvcLogSpoofing: Boolean) { + appendLine("# 设置AVC日志欺骗状态") + val avcLogValue = if (enableAvcLogSpoofing) 1 else 0 + appendLine("\"${'$'}SUSFS_BIN\" enable_avc_log_spoofing $avcLogValue") + appendLine("echo \"$(get_current_time): AVC日志欺骗功能设置为: ${if (enableAvcLogSpoofing) "启用" else "禁用"}\" >> \"${'$'}LOG_FILE\"") + appendLine() + } + private fun StringBuilder.generateSusPathsSection(susPaths: Set) { if (susPaths.isNotEmpty()) { appendLine("# 添加SUS路径") @@ -386,6 +394,9 @@ object ScriptGenerator { generateUmountZygoteIsoServiceSection(config.umountForZygoteIsoService, config.support158) + // 添加AVC日志欺骗设置 + generateAvcLogSpoofingSection(config.enableAvcLogSpoofing) + appendLine("echo \"$(get_current_time): Post-FS-Data脚本执行完成\" >> \"${'$'}LOG_FILE\"") } } diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml index b711ac43..82780348 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -606,6 +606,18 @@ SUS循环路径 循环路径配置 循环路径会在每次非root用户应用或隔离服务启动时重新标记为SUS_PATH。这有助于解决添加的路径可能因inode状态重置或内核中inode重新创建而失效的问题 + AVC 日志欺骗 + AVC 日志欺骗已启用 + AVC 日志欺骗已禁用 + +禁用: 禁用在内核 AVC 日志中欺骗 \'su\' 的 sus tcontext。\n +启用: 启用在内核 AVC 日志中将 \'su\' 的 sus tcontext 欺骗为 \'kernel\' + + +重要提示:\n +- 内核中默认设置为 \'0\'\n +- 启用此功能有时会使开发人员在调试权限或 SELinux 问题时难以识别原因,因此建议用户在调试时禁用此功能。 + 已验证 模块签名已验证 diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index bdcf051e..84dd9fdb 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -609,6 +609,18 @@ SUS Loop Path Loop Path Configuration Loop paths are re-flagged as SUS_PATH on each non-root user app or isolated service startup. This helps address issues where added paths may have their inode status reset or inode re-created in the kernel. + AVC Log Spoofing + AVC log spoofing has been enabled + AVC log spoofing has been disabled + +disabled : Disable spoofing the sus tcontext of \'su\' shown in avc log in kernel.\n +enabled : Enable spoofing the sus tcontext of \'su\' with \'kernel\' shown in avc log in kernel + + +Important Note:\n +- It is set to \'0\' by default in kernel\n +- Enabling this will sometimes make developers hard to identify the cause when they are debugging with some permission or SELinux issue, so users are advised to disable this when doing so. + Validated Module signature verified