- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道我是否可以通过系统应用程序获得 root 权限来执行命令。
在这段代码中:
getApplicationInfo().uid
在文档中我可以读到uid 是已分配给此应用程序的内核用户 ID;目前这不是唯一 ID(多个应用程序可以具有相同的 uid)。
但是这个是怎么赋值的呢,
以及分配给系统应用的uid,它是否比普通应用程序有更多的权限来执行命令?
最佳答案
出于所有实际目的,您的应用程序进程永远不会以 uid=0 或 root 身份执行,因为在您编写的一行代码执行之前,它已不可逆转更改为普通用户 ID。
当人们制作“root”应用程序时,他们并没有将应用程序进程本身改回 root - 这是根本不可能的。相反,他们正在做的是执行一个以 root 身份运行的新辅助进程。在 java 级别下,这最终是通过在设置了 setuid 位的文件上调用 exec() 系列函数来完成的。该文件可能是帮助程序本身,或者更常见的是它是一个“root shim”,例如被黑的“su”,它反过来以 root 身份运行指定的帮助程序。这样的帮助程序几乎总是 native 代码,并且可能未在 Android 框架中注册以能够利用 Android 级功能。
系统 应用程序 也不以 root 身份运行。他们拥有第三方应用程序所没有的特殊 Android 级权限,这会导致平台服务以 root 或其他特权用户 ID 的身份运行,以代表他们获得特权。一些 android 权限还可以授予具有特殊访问权限的用户组的成员资格 - 其中一些可用于第三方应用程序(例如 Internet 权限),而另一些则不能。
关于android - ApplicationInfo().uid 是如何工作的,与系统应用程序有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16438602/
我想显示安装在用户设备上的应用程序列表,这些应用程序目前在其 list 文件上具有互联网权限我正在使用以下代码获取所有这些应用程序: PackageManager packageManager =
我有以下代码: 在 list 中: 在代码中: ApplicationInfo ai = getPackageManager().getApplicationInfo( getPac
如果我有一个特定应用程序的 ApplicationInfo 实例,我该如何创建启动该应用程序的 Intent? 我试过了 Intent intent = new Intent(ApplicationI
我尝试在更新之前跟踪系统应用程序并使用: public static boolean isSystemApplication(Context ctx, IContent content) {
我编写了一个 android 服务,用于计算安装在手机上的应用程序列表并获取应用程序名称。 代码大致是这样的: List appListInfo = pm.getInstalledPackages(0
我想知道我是否可以通过系统应用程序获得 root 权限来执行命令。 在这段代码中: getApplicationInfo().uid 在文档中我可以读到uid 是已分配给此应用程序的内核用户 ID;目
我使用以下代码来区分用户安装的应用程序和系统应用程序: final PackageManager pm = getPackageManager(); List packages = pm.getIns
我有几个关于 ApplicationInfo 和 PackageInfo 类的一般性问题。他们在这里: 谁能描述一下 ApplicationInfo 和包信息? 它们如何相互关联? 在哪些情况下使用
我正在尝试获取我的应用程序拥有的权限列表以及设备上安装的应用程序列表。我熟悉android中的ApplicationInfo和PackageInfo,但找不到适用于ios swift的任何内容 最佳答
引用Getting "debuggable" value of androidManifest from code? ,有两种检查构建是否可调试的选项: 1.) BuildConfig.DEBUG 标
对于手机上安装的所有应用程序,我需要访问: 姓名 图标 可以安装应用程序的 google play url 我查看了 ApplicationInfo,但它似乎没有向我提供此信息。我听说过 Packag
根据标题,我正在寻找一种仅显示具有启动器 Intent 的应用程序的解决方案。这是我检索应用列表的代码: public static List getInstalledApplication(Cont
PackageManager pm = this.getPackageManager(); ActivityManager am = (ActivityManager) this.getSystemS
所以,我试图运行我的应用程序,它应该在第一次运行后显示通知。但是,它给了我这样的错误: java.lang.NullPointerException: Attempt to invoke virtua
我正在尝试将我的应用程序从单片 APK 迁移到应用程序包格式。我需要为 exec() 调用设置 LD_LIBRARY_PATH 环境变量,因此我需要本地库的位置。对于原始 APK,我会调用 getAp
我正在尝试将我的应用程序从单片 APK 迁移到应用程序包格式。我需要为 exec() 调用设置 LD_LIBRARY_PATH 环境变量,因此我需要本地库的位置。对于原始 APK,我会调用 getAp
所以,我试图运行我的应用程序,它应该在第一次运行后显示通知。但是,它给了我这样的错误: java.lang.NullPointerException: Attempt to invoke virtua
在使用 Mockito 运行 Espresso 测试时,我目前遇到的问题是 “尝试从字段 'int android.content.pm.ApplicationInfo.targetSdkVersio
我是一名优秀的程序员,十分优秀!