android应用程序root或系统权限

标签 android system root su

我正在尝试构建一个可以访问/data 目录(例如)的 android 应用程序,而无需解析执行 su 后在 shell 上运行的命令的输出。

我的意思是,经过大量研究并查看了一些 root 浏览器的代码后,他们在需要 root 权限时所做的是在执行 su 后解析命令的输出。

我想要做的是:

File file = new File("/data");
File[] files = file.listFiles();// get the list array of file
for (int i = 0; i < files.length; i++) {
    File fileItem = files[i];
    System.out.println("FILE NAME: "+fileItem.getName().toString()) {
}

为了实现这一点,我认为应用程序进程必须从执行开始就以 root 身份运行。

我尝试通过这种方式执行 su 后从 shell 运行应用程序:

$su
#am start -n com.example.test/.ui.Activity

但在查看 ps 命令的输出后,我看到应用程序以用户“u0_a110”而不是 root 身份运行。

我还尝试使用参数 --user 0 和 --user 1000,结果相同...我认为 dalvik 虚拟机会放弃父进程的特权。

我还尝试将应用程序转换为系统应用程序,将其移动到/system/priv-app 并得到相同的结果,(应用程序的运行用户不是根用户,也不是系统用户)

可能与:

android:sharedUserId="android.uid.system"

在 list 中,应用程序至少作为用户系统运行,我尝试以这种方式运行应用程序,并且还放置在/system/priv-app 中,但手机没有完成启动。

我认为该错误是因为该应用需要使用制造商提供的系统 key 进行签名。

是否可以以 root 或至少系统运行某些 android 应用程序?

我知道如果我为 ARM(或手机架构)交叉编译一个 Linux 应用程序并以 root 身份在 shell 中运行该应用程序,该应用程序将具有 root 访问权限,但是,这是唯一的方法吗?我想通过 Android Java 应用程序实现这一目标。

最佳答案

据我所知,java 应用程序无法实现这一点。即使给app分配了system uid并进行了平台认证签名,依然无法获得root权限。 systemuid的思想是访问一些系统级的api,如控制飞行模式、获取帧缓冲区、强制停止包等,但不是以root权限控制文件系统。

关于android应用程序root或系统权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609310/

相关文章:

python - scipy.optimize.fsolve 收敛错误?

c# - List<T> 的 XML 序列化 - XML 根

linux - 创建另一个具有 root 权限的用户帐户

android - 后台模式总是从 INDEX 重新启动后,Android 5.1 上的 CORDOVA/PHONEGAP

android - Android中的实时音频处理

java - 将变量从 Android 客户端发布到 php 服务器时出错

java - 使用智能手机传感器进行驾驶风格检测

创建多个内核线程——不使用 pthread

python - 如何构建一个允许用户将作业提交到队列的系统

linux - linux单个目录下文件太多怎么办?