adb root works Runtime.GetRuntime()。exec(“su”);才不是

时间:2017-09-01 08:18:38

标签: android xamarin.android android-source

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

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

adb root
adb shell
device_name:/ # su

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

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

我收到的错误是:

  

Java.IO.IOException:无法运行程序“su”:error = 13,Permission denied

adb root / shell su命令与从应用程序中运行的命令之间是否存在差异?

1 个答案:

答案 0 :(得分:2)

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

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

暂时禁用它
adb root

adb shell setenfoerce 0

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

此外,您的应用可能没有启动' su'所需的DAC权限。作为根。您可以执行以下命令:

adb shell ps

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

请注意,构建自定义userdebug图像与生成标准Android设备不太相似。调试版本旨在允许访问设备的内部,同时仍然模拟一个真正正常运行的设备,并启用其所有默认安全机制。