gpt4 book ai didi

android - 在 native 代码中获取 Android 应用程序的 root 权限

转载 作者:行者123 更新时间:2023-11-29 19:09:10 32 4
gpt4 key购买 nike

为了学习,我最近跳进了 android 开发教程并制作了我自己的应用程序。我想以正确的方式在我的代码中获得 root 权限。所以不是通过调用 /system/xbin/su 而是通过使用类似 seteuid(0) 的东西。不幸的是,seteuid 方法对我不起作用。

我正在真实设备上测试应用程序,我已 root,启用了 Debug模式,我清楚地看到,当使用对 /system/xbin/su 的调用时,我的应用程序请求系统的 root 权限,seteuid 和 seteguid 不会发生这种情况(setuid 和 setguid 也不起作用,但我不希望它们这样做,因为它们只能降低权限)。

请就在哪里寻找正确的代码实现来请求 root 权限提出建议,就像一流的开发人员所做的那样。也许一些本地 api 调用?还是每个人都只是调用 su 来获得所需的访问权限?

最佳答案

Linux 中提升权限的常用方法——即以比登录用户更高的权限运行应用程序——是在可执行文件上设置 SUID 标志(例如,chmod ug+s ... ).这将使进程采用二进制文件所有者(通常是 root)的身份,而不是登录用户的身份。

这在 Android 上很难有效地完成,即使在已获得 root 权限的设备上也是如此。首先,您将无法使用包含具有 SUID 权限的二进制文件的常用 (APK) 机制安装应用程序。其次,Android 应用不是通常意义上的可执行文件——一个可执行文件处理所有应用的启动。

不过,如果您想在命令行上进行实验,应该可以在二进制文件上设置 SUID 标志,至少在某些文件系统位置。

如果您有一个 root 的 Android,那么很可能已经有一些基础设施来控制权限提升。 “su”命令很可能会起作用(因为会有内核模块使其起作用),并且会通过凭据或其他方式提供它来控制哪些应用程序可以使用它。我相信,正如您所建议的,调用“su”是在 root Android 上的应用程序中进行权限提升的常用方法。然而,它充满了困难。有一个文档 https://su.chainfire.eu/这解释了“su”通常如何在已获得 root 权限的 Android 设备中实现,并提供了一些有关如何正确使用它的指导。

关于android - 在 native 代码中获取 Android 应用程序的 root 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46007863/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com