From c942393f2120b4c68cf43fcda770317240f81946 Mon Sep 17 00:00:00 2001 From: liankong Date: Mon, 7 Apr 2025 15:09:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E5=B9=B6=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=8A=8Akpmmgr=E5=AE=89=E8=A3=85=E5=88=B0/data/adb/ksu/bin?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=96=B9=E4=BE=BF=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/sukisu/ultra/UltraShellHelper.java | 30 +++++++++++++++++++ .../io/sukisu/ultra/UltraToolInstall.java | 15 ++++++++++ .../shirkneko/zako/sukisu/ui/MainActivity.kt | 6 +++- .../shirkneko/zako/sukisu/ui/util/KsuCli.kt | 2 +- 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 manager/app/src/main/java/io/sukisu/ultra/UltraShellHelper.java create mode 100644 manager/app/src/main/java/io/sukisu/ultra/UltraToolInstall.java diff --git a/manager/app/src/main/java/io/sukisu/ultra/UltraShellHelper.java b/manager/app/src/main/java/io/sukisu/ultra/UltraShellHelper.java new file mode 100644 index 00000000..e6d1d172 --- /dev/null +++ b/manager/app/src/main/java/io/sukisu/ultra/UltraShellHelper.java @@ -0,0 +1,30 @@ +package io.sukisu.ultra; + +import com.topjohnwu.superuser.Shell; + +import java.util.ArrayList; + +import shirkneko.zako.sukisu.ui.util.KsuCli; + +public class UltraShellHelper { + public static String runCmd(String cmds) { + StringBuilder sb = new StringBuilder(); + for(String str : KsuCli.INSTANCE.getGLOBAL_MNT_SHELL() + .newJob() + .add(cmds) + .to(new ArrayList<>(), null) + .exec() + .getOut()) { + sb.append(str).append("\n"); + } + return sb.toString(); + } + + public static boolean isPathExists(String path) { + return !runCmd("file " + path).contains("No such file or directory"); + } + + public static void CopyFileTo(String path, String target) { + runCmd("cp -f " + path + " " + target); + } +} diff --git a/manager/app/src/main/java/io/sukisu/ultra/UltraToolInstall.java b/manager/app/src/main/java/io/sukisu/ultra/UltraToolInstall.java new file mode 100644 index 00000000..d3829e2a --- /dev/null +++ b/manager/app/src/main/java/io/sukisu/ultra/UltraToolInstall.java @@ -0,0 +1,15 @@ +package io.sukisu.ultra; + +import static shirkneko.zako.sukisu.ui.util.KsuCliKt.getKpmmgrPath; +import shirkneko.zako.sukisu.ui.util.KsuCli; + +public class UltraToolInstall { + private static final String OUTSIDE_KPMMGR_PATH = "/data/adb/ksu/bin/kpmmgr"; + public static void tryToInstall() { + String kpmmgrPath = getKpmmgrPath(); + if (!UltraShellHelper.isPathExists(OUTSIDE_KPMMGR_PATH)) { + UltraShellHelper.CopyFileTo(kpmmgrPath, OUTSIDE_KPMMGR_PATH); + UltraShellHelper.runCmd("chmod a+rx " + OUTSIDE_KPMMGR_PATH); + } + } +} diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt index 0e194929..3e34f2d5 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/MainActivity.kt @@ -41,6 +41,7 @@ import com.ramcosta.composedestinations.animations.NavHostAnimatedDestinationSty import com.ramcosta.composedestinations.generated.NavGraphs import com.ramcosta.composedestinations.utils.isRouteOnBackStackAsState import com.ramcosta.composedestinations.utils.rememberDestinationsNavigator +import io.sukisu.ultra.UltraToolInstall import shirkneko.zako.sukisu.Natives import shirkneko.zako.sukisu.ksuApp import shirkneko.zako.sukisu.ui.screen.BottomBarDestination @@ -72,7 +73,10 @@ class MainActivity : ComponentActivity() { val isManager = Natives.becomeManager(ksuApp.packageName) - if (isManager) install() + if (isManager) { + install() + UltraToolInstall.tryToInstall() + } setContent { KernelSUTheme { diff --git a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/util/KsuCli.kt b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/util/KsuCli.kt index 178531d6..97f671b4 100644 --- a/manager/app/src/main/java/shirkneko/zako/sukisu/ui/util/KsuCli.kt +++ b/manager/app/src/main/java/shirkneko/zako/sukisu/ui/util/KsuCli.kt @@ -481,7 +481,7 @@ fun susfsSUS_SU_Mode(): String { return result } -private fun getKpmmgrPath(): String { +fun getKpmmgrPath(): String { return ksuApp.applicationInfo.nativeLibraryDir + File.separator + "libkpmmgr.so" } From 78eda275d69481b2bb483fee1f6d1cb894b2ec60 Mon Sep 17 00:00:00 2001 From: liankong Date: Mon, 7 Apr 2025 15:35:21 +0800 Subject: [PATCH 2/3] Update README --- docs/README.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index a24cef89..13a326c9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# SukiSU +# SukiSU Ultra **简体中文** | [English](README-en.md) @@ -6,9 +6,9 @@ **实验性!使用风险自负!** - > > 这是非官方分支,保留所有权利 [@tiann](https://github.com/tiann) +> 但是,我们将会在未来成为一个单独维护的KSU分支 > @@ -47,6 +47,12 @@ curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU-Ultra/main/kernel/ - 部分手动集成KPROBES的非 GKI 2.0 设备不需要手动 VFS 钩子 `new_hook.patch` 补丁 +## KPM支持 + +- 我们基于KernelPatch去掉了和KSU重复的功能,保留了KPM支持 +- 我们将会引入更多的兼容APatch的函数来确保KPM功能的完整性 +开源地址: https://github.com/ShirkNeko/SukiSU_KernelPatch_patch + ## 更多链接 基于 SukiSU 和 susfs 编译的项目 - [GKI](https://github.com/ShirkNeko/GKI_KernelSU_SUSFS) @@ -76,6 +82,7 @@ curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU-Ultra/main/kernel/ 3. [App Profile](https://kernelsu.org/guide/app-profile.html):将 root 权限锁在笼子里 4. 恢复对非 GKI 2.0 内核的支持 5. 更多自定义功能 +6. 对KPM内核模块的支持 ## 许可证 @@ -90,8 +97,6 @@ curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU-Ultra/main/kernel/ - [yspbwx2010](https://github.com/yspbwx2010) 非常感谢 - - 如何以上名单没有你的名称,我会及时更新,再次感谢大家的支持 ## 贡献 @@ -104,3 +109,4 @@ curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU-Ultra/main/kernel/ - [Magisk](https://github.com/topjohnwu/Magisk):强大的 root 工具 - [genuine](https://github.com/brevent/genuine/):APK v2 签名验证 - [Diamorphine](https://github.com/m0nad/Diamorphine):一些 rootkit 技能 +- [KernelPatch](https://github.com/bmax121/KernelPatch): KernelPatch是APatch实现内核模块的关键部分 From a39e2ce15ad5d954d00578a7473b9ea9a3407ae7 Mon Sep 17 00:00:00 2001 From: liankong Date: Mon, 7 Apr 2025 15:36:46 +0800 Subject: [PATCH 3/3] Update README --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index 13a326c9..c532b419 100644 --- a/docs/README.md +++ b/docs/README.md @@ -51,6 +51,7 @@ curl -LSs "https://raw.githubusercontent.com/ShirkNeko/SukiSU-Ultra/main/kernel/ - 我们基于KernelPatch去掉了和KSU重复的功能,保留了KPM支持 - 我们将会引入更多的兼容APatch的函数来确保KPM功能的完整性 + 开源地址: https://github.com/ShirkNeko/SukiSU_KernelPatch_patch ## 更多链接