android - adb root 工作 Runtime.GetRuntime().Exec ("su");才不是

标签 android xamarin.android android-source

我在自定义设备上运行 android 7.1.1,并使用从“userdebug”配置中的源代码编译的 AOSP,该配置提供 root 访问和调试。

我可以使用 Android 设备桥连接到设备。

adb root
adb shell
device_name:/ # su

所有这些命令都工作正常,我可以作为 super 用户进行更改。 我遇到的问题是从应用程序运行相同的“su”命令

Java.Lang.Process suProcess = Runtime.GetRuntime().Exec("su");

我收到的错误是:

Java.IO.IOException: Cannot run program "su": error=13, Permission denied

adb root/shell su 命令与在应用程序内运行的命令之间有区别吗?

最佳答案

看起来 linux DAC 和 SE-Android 都阻止您的应用程序进程访问“su”可执行文件。

检查您的系统是否在强制模式下运行,这意味着 SE-Android 已启用。如果确实如此,您可以通过运行暂时禁用它:

adb root

adb shell setenforce 0

这将禁用 SE-Android,并且不会阻止应用进程执行“su”。

此外,您的应用可能没有 DAC以 root 身份启动“su”所需的权限。您可以执行以下命令:

adb shell ps

获取设备上所有正在运行的进程的列表。找到您的应用程序(通过搜索其包名称),然后检查其组和 uid。很可能两者都不是 root。

请注意,构建自定义 userdebug 镜像与 root 标准 Android 设备不太一样。调试版本旨在允许访问设备的内部结构,同时仍然模拟启用了所有默认安全机制的真实功能设备。

关于android - adb root 工作 Runtime.GetRuntime().Exec ("su");才不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995962/

相关文章:

java - 如何为proguard编写规则?

c# - 如何通过mysql数据库在xamarin android中授权

opengl-es - SGX 530 上的eglSwapBuffers 速度很慢

android - 将一部分Android源代码(TextToSpeech)硬编码到应用中

android - 在 Android 上使用 AWS TVM 时凭证已过期

android - 打开蓝牙,在 onActivityResult 中返回错误的请求代码

c# - 我需要做什么才能使此代码在可移植类库中工作?

android - 构建 AOSP 应用程序并对其进行自定义

Android ListView,每个列表项有一个复选框和多个 TextView

android - Xamarin 表格 : Write a file in Android device's internal storage