【问题标题】:adb root works Runtime.GetRuntime().Exec("su"); does notadb root 工作 Runtime.GetRuntime().Exec("su");才不是
【发布时间】:2018-02-10 06:23:34
【问题描述】:

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

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

adb root
adb shell
device_name:/ # su

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

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

我收到的错误是:

Java.IO.IOException:无法运行程序“su”:错误=13,权限被拒绝

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

【问题讨论】:

    标签: android xamarin.android android-source


    【解决方案1】:

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

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

    adb root
    
    adb shell setenfoerce 0
    

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

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

    adb shell ps
    

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

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

    【讨论】:

    • 感谢您的回答,您的意思是“adb shell setenforce 0”吗?这对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多