前几天在group上看到有人问这么个问题:
Hi guys,
I'm working on a G1 rooted. I have to implement program that execute "Root
explorer".
I have write this code :
Process p;
try {
p = Runtime.getRuntime().exec("su");
// OK
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes("echo \"HELLO!!!!!!!!\" >/system/test.txt\n");
os.writeBytes("exit\n");
os.flush();
//////////////////////////////////////
// ERROR
File dir = new File("/data");
String [] list = dir.list();
Log.v("TEST]", String.valueOf(list.length));
////////////////////////////////////////////////////
try {
p.waitFor();
int exit = p.exitValue();
if (exit != 255) {
Log.v("TEST]", "ok");
}
else {
Log.v("TEST]", "Error");
}
} catch (Exception e) {
Log.v("TEST]",e.getMessage());
}
} catch (Exception e) {
Log.v("TEST]",e.getMessage());
}
I use Superuser.apk for execute "su" command. My program write file test.txt
in /system but statement Log.v("TEST]", String.valueOf(list.length)); return
value 0.
Please, can anyone help me?
Thanks,
Francesco
这段代码的执行结果是/system/test.txt这个文件的确被创建并写入了HELLO!!!!!那个字符串,但是却无法ls /data这个目录(这两个操作都需要root权限才可以的)
其实答案很简单:以root权限运行的只是那个叫p的进程,而Android程序本身并不是以root身份在运行
p = Runtime.getRuntime().exec("su");
这就不难理解为什么通过命令行可以执行root权限才执行的操作,而在Android程序中却不可以。
下面这段代码很好的说明了在那个叫p的进程里面的确可以执行root权限才能执行的操作
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
DataInputStream is = new DataInputStream(p.getInputStream());
os.writeBytes("cd /data/data \n");
os.writeBytes("ls \n");
os.writeBytes("exit \n");
os.flush();
p.waitFor();
byte[] buffer = new byte[is.available()];
is.read(buffer);
String s = new String(buffer);
Log.v("TEST", s);
这段代码的执行结果是打出了/data/data下的文件及目录
分享到:
相关推荐
android 获取ROOT权限工具, 手机可以删除ROM自带的无用程序,使用需要ROOT才能运行的软件
修改源码让APP获取root权限可以执行su命令的git diff记录
Android应用源码获取root权限静默安装是一个获取root权限后,不弹出系统安装界面,直接进行安装的的源码。代码只有一个MainActivity,看起来相对比较容易,代码中重要部分都已加入详细的注释,方便大家阅读。不过...
不过应用程序运行命令获取ROOT权限,设备必须已破解(获得ROOT权限),代码中主要对流进行操作,有对文件读写不清楚的都可以看看。(源码采用GBK编码)。之前也介绍过一个静默卸载的项目...
压缩包内有apk,demo源码,以及NDK 安装文档,主要是教你如何在已经root过得手机上只通过一次获取root权限,以后就再也不会弹出root授权框,主要思想是绕过superuser.apk的权限检查
Magisk:Android 获取 Root 权限的工具。它可以快速、无痛地获得 Android 的超级用户权限,支持 Android 5.0 以上的设备。 介绍 Magisk是一套用于定制Android的开源软件,支持高于Android 5.0的设备。 一些突出特点...
一个应用程序的进程就是一个安全的沙盒。它不能干扰 其它应用程序,除非显式地声明了“permissions”,以便它能 够获取基本沙盒所不具备的额外的能力。它请求的这些权限 “permissions”可以被各种各样的操作处理,...
本文实例讲述了Android手机获取root权限并实现关机重启功能的方法,是Android程序设计中非常常见的重要功能。现分享给大家,供大家在Android程序开发中参考之用。 具体功能代码如下: /* * 执行命令 * @param ...
本发明提供一种安卓应用程序永久获取Root 权限的方法,将需要用到Root 权限的操作进行编 写,并编译成一可执行程序文件,将该文件包含在 应用程序中,应用程序通过一次su 程序授权,将 文件拷贝到/system/bin 的目录...
GingerBreak是一款非常有用的一键获取ROOT权限的小工具,这款软件能够在Android 2.2和Android 3.0系统中正常使用! 使用须知: - 你必须要在你的Android设备上启用USB调试; - 你需要你的Android设备中有一个可用的...
根据作者的介绍,v2.36能够获取任意Android版本的ROOT权限(Android 2.3.7除外)。 请一定要确认你的电脑中已经安装了USB驱动了! 还有需要拔出外置SD卡! 如果红字部分你都做到了还不能够成功ROOT的话,请...
Android获取root权限,源代码,可以加到程序中使用.
根据作者的介绍,v1.9.1能够获取任意Android版本的ROOT权限(Android 2.3.4除外)。 请一定要确认你的电脑中已经安装了USB驱动了! 还有需要拔出外置SD卡! 如果红字部分你都做到了还不能够成功ROOT的话,请尝试...
但是对于用户来说,当然希望能拥有Root权限以将手机修改成自己的一种特色,因为有Root权限则可以任意修改手机的所有文件跟程序,让手机更加个性化。 代码如下:Process process = null; try{ process = Runtime....
然后装了一堆开机自动启动,而用户这辈子也用不到也卸载不了垃圾软件(相信使用安卓的同学们都懂我的意思),而苹果所说的越狱,也就是获取ROOT权限。 为什么需要获取ROOT权限? 苹果用户获取ROOT权限,是为了可以...
本单元实现了一个伪的Shell,可以用于在Android程序中执行Shell命令,如果需要Root权限,则在执行前,调用AskForRoot方法来获取用户的Root授权,如果不再需要在Root账号下执行命令,则调用ExitRoot方法来退出Root...
echo ┃ (正在获取临时 Root 权限) ┃ echo ┃ ┃ echo ┃ ┃ echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ adb shell rm -r /data/local/tmp adb shell mkdir /data/...