diff --git a/app/src/main/java/me/hexile/odexpatcher/core/SELinux.kt b/app/src/main/java/me/hexile/odexpatcher/core/SELinux.kt index 7af2fc7..4b48d65 100644 --- a/app/src/main/java/me/hexile/odexpatcher/core/SELinux.kt +++ b/app/src/main/java/me/hexile/odexpatcher/core/SELinux.kt @@ -19,9 +19,6 @@ package me.hexile.odexpatcher.core import android.annotation.SuppressLint object SELinux { - val isEnabled = isSELinuxEnabled() - val isEnforced = isSELinuxEnforced() - @SuppressLint("PrivateApi") private fun invoke(methodName: String): Any? { val c = Class.forName("android.os.SELinux") @@ -29,11 +26,11 @@ object SELinux { return method.invoke(c) } - fun isSELinuxEnabled(): Boolean { + fun isEnabled(): Boolean { return invoke("isSELinuxEnabled") as Boolean } - fun isSELinuxEnforced(): Boolean { + fun isEnforced(): Boolean { return invoke("isSELinuxEnforced") as Boolean } diff --git a/app/src/main/java/me/hexile/odexpatcher/ui/fragments/HomeFragment.kt b/app/src/main/java/me/hexile/odexpatcher/ui/fragments/HomeFragment.kt index 92ca9a1..b8b4cdc 100644 --- a/app/src/main/java/me/hexile/odexpatcher/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/me/hexile/odexpatcher/ui/fragments/HomeFragment.kt @@ -333,16 +333,11 @@ class HomeFragment : BaseFragment() { } // Fix permissions - // This is a temp fix because Shell.sh runs as root and idk what to do instead - // (https://github.com/topjohnwu/libsu/issues/42) val appUid = (App.context.packageManager.getApplicationInfo(App.context.packageName, 0).uid % 100000) Shell.su("chown $appUid:$appUid ${App.context.getFileInFilesDir("*")}").exec() Shell.su("chmod 600 ${App.context.getFileInFilesDir("*")}").exec() - - // TODO: Change context instead of setting SELinux to Permissive - // Disable SELinux - if (SELinux.isEnabled && SELinux.isEnforced) { - Shell.su("setenforce 0").exec() + if (SELinux.isEnabled()) { + Shell.su("chcon u:object_r:app_data_file:s0:c512,c768 ${App.context.getFileInFilesDir("*")}").exec() } // Patch files @@ -352,10 +347,6 @@ class HomeFragment : BaseFragment() { targetClasses ) } catch (e: Exception) { - // TODO: Change context instead of setting SELinux to Permissive - if (SELinux.isEnabled && SELinux.isEnforced) { - Shell.su("setenforce 1").exec() - } e.printStackTrace() viewModel.addLog("[E] ERROR: ${e.message}") viewModel.state.postValue(true) @@ -377,12 +368,6 @@ class HomeFragment : BaseFragment() { viewModel.addLog(" Done!", false) } - // TODO: Change context instead of setting SELinux to Permissive - // Enable SELinux - if (SELinux.isEnabled && SELinux.isEnforced) { - Shell.su("setenforce 1").exec() - } - // Create folder if non-existent if (!File(Art.getOatFolder(targetApk)).isDirectory && isSdkGreaterThan(Build.VERSION_CODES.M)) { // https://cs.android.com/android/platform/superproject/+/master:frameworks/native/cmds/installd/InstalldNativeService.cpp;l=2591