【问题标题】:Giving an Android app root permission授予 Android 应用 root 权限
【发布时间】:2012-03-23 10:49:49
【问题描述】:

使用 Android SDK 附带的 adb.exe,我可以获得对 Android 设备的 root 访问权限。 出于测试目的,我也想授予 Android 应用 root 权限。 我知道该应用程序正在一个名为 app_68 的特定帐户下运行。 是否有 adb shell 命令将 app_68 添加到“根组”?

提前感谢您的 cmets/解决方案。

【问题讨论】:

  • 我相信唯一的方法是使用命令行,例如:Runtime.getRuntime().exec("su"); 这会将应用程序的 UID 更改为 0,因此它具有 root 权限。 (当然必须已经安装了正确的二进制文件)。如果您在应用程序中使用 root,This 将有很大帮助。
  • 我试图执行"Runtime.getRuntime().exec("su");"从测试 Android 应用程序中收到错误消息“su: uid 10069 not allowed to su”。我猜该应用程序无法自行更改为在 su 帐户下运行。
  • 您必须安装 SuperUser 和 BusyBox。如果您已经完成了这两项操作,那么您可能不小心拒绝了您在 SuperUser 中的测试应用
  • @Jakar:如果不安装 SuperUser 和 BusyBox 是否可以做到这一点会很有趣。
  • 应用程序没有root权限,因为应用程序不能以root身份执行。各种定制的更改可能有一个系统来以 root 身份运行帮助任务或可执行文件,并且这些可能具有您可以定位的授权方案,但它们是这些扩展所独有的 - 它们不是“android”的一部分。

标签: android permissions


【解决方案1】:

需要超级用户 (su) 二进制文件以 root 用户身份运行您的应用程序。 要以 root 身份运行,请执行以下操作:

Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());

os.writeBytes("yourCommand\n");

os.writeBytes("exit\n");

os.flush();
os.close();
try { p.waitFor(); } catch (InterruptedException e) {}

如果您收到su: uid xxxx not allowed 之类的信息,则需要使用 SuperSU 更新您的子二进制文件。

如果您想要完整详细且有效的源代码,另请参阅https://stackoverflow.com/a/26654728/4479004。只需查看以下代码:

更新:要获得结果(输出到标准输出),请使用:

【讨论】:

    猜你喜欢
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多