Android超级用户应用程序如何检测应用程序请求根用户?

Android超级用户应用程序如何检测应用程序请求根用户?,android,security,su,Android,Security,Su,我正在编写一个应用程序,它将使用su在linux内核中执行一些命令。我想知道超级用户是如何发现应用程序请求root权限的?此外,是否有任何已知的方法(通过混淆)可以绕过此检查 换言之: 安卓/(超级用户)如何知道应用程序需要根权限,尽管安卓清单文件中没有明确请求权限 我是从安全的角度问这个问题的。我想知道此操作的详细信息,以确保恶意应用程序无法绕过超级用户。运行此操作时: Process p = Runtime.getRuntime().exec("su"); 您正在尝试执行“su”,只有具有

我正在编写一个应用程序,它将使用
su
在linux内核中执行一些命令。我想知道超级用户是如何发现应用程序请求root权限的?此外,是否有任何已知的方法(通过混淆)可以绕过此检查

换言之: 安卓/(超级用户)如何知道应用程序需要根权限,尽管安卓清单文件中没有明确请求权限

我是从安全的角度问这个问题的。我想知道此操作的详细信息,以确保恶意应用程序无法绕过超级用户。

运行此操作时:

Process p = Runtime.getRuntime().exec("su");
您正在尝试执行“su”,只有具有超级用户权限的应用程序才能执行!因此,每当Android检测到您试图运行“su”时,它就会发现应用程序需要超级用户权限

此外,安卓系统还保留了一些只有安卓系统才能访问的区域。如果你的应用程序试图访问那里的东西,Android会明白超级用户是必要的

例如,假设您正试图修改主机文件或修改某些网络配置,如DHCP。或者您正试图从系统区域访问文件,例如,
/data
Android将检查应用程序是否具有超级用户权限,然后仅授予其访问此类内容的权限

关于恶意软件,每当应用程序需要超级用户访问时,系统将提示用户授予或拒绝超级用户对该应用程序的权限。只有这样,应用程序才能获得root访问权限。因此,由用户决定是否接受或拒绝任何应用程序的root访问。(每次应用程序试图访问需要root访问的内容时,系统都会提示用户,除非您告诉系统记住您对特定应用程序的接受或拒绝选择。)


你可以考虑退房。 其实很简单。香草安卓甚至没有
su
superuser
。当您以root用户身份运行设备时,您将以root用户身份运行shell。然后安装
su
二进制文件和
superuser.apk
。安装后,将shell设置回其正常权限。所有这些仅限root用户的应用现在都可以调用
su
请求root用户访问


运行
su
时,它会调用
superuser.apk
,并显示一条消息,询问您是否要提升权限。
su
二进制和
superuser.apk
通过Android的正常沙箱进行保护。请注意,一旦您授予应用程序根用户权限,它就可以自由地执行任何它想要的操作,包括用自己的版本覆盖su。

超级用户系统有两个部分-su(终端上的su)和Android应用程序(使用su管理应用程序)。查看的源代码,当您通过

Process p = Runtime.getRuntime().exec("su");
它通过android消息管理器发布应用程序请求超级用户访问的意图

sprintf(command, "/system/bin/am broadcast -a '%s' --es socket '%s' --ei caller_uid '%d' --ei allow '%d' --ei version_code '%d' > /dev/null",action, socket_path, ctx->from.uid, allow, VERSION_CODE);  

manager应用程序侦听此意图,并要求用户处理请求(允许/拒绝)。

超级用户应用程序如何/为什么只充当Su权限提供者?是什么让它成为负责人?@Waqas这也许能回答你的问题,只是浏览一下这个网站。我将更新答案中的链接。可能对其他人有帮助。:)是的,我观察到了这种行为。但“超级用户”应用程序如何发现这一点尚不清楚。超级用户有点像监视器,可以检查所有其他正在运行的应用程序的行为吗?@asudhak我认为它更像防火墙。所有su请求都会通过它。
su
只需调用
superuser.apk
。仅此而已。根据您的解释,
su
似乎会广播一条消息,要求Superuser.apk告诉它是否应该允许root访问。所以我想知道,是什么阻止另一个应用程序响应该请求而不是Superuser.apk?(如果可能的话,这将是一个巨大的漏洞,所以我想这不是;只是好奇)还有,有什么保护措施可以防止应用程序以假名请求root?(即恶意.apk以awesome-root-only-app.apk的名义请求root,以欺骗用户授予访问权限)