`
伊莉莎黑
  • 浏览: 13212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Android程序获取Root权限的一点问题

阅读更多
前几天在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下的文件及目录


0
0
分享到:
评论
4 楼 伊莉莎黑 2012-05-01  
ihopethatwell 写道
没有吧,用的模拟器测试的

那不行,设备必须能获取到root权限才可以的
3 楼 ihopethatwell 2012-04-27  
没有吧,用的模拟器测试的
2 楼 伊莉莎黑 2012-04-26  
ihopethatwell 写道
这里无法打出了/data/data下的文件及目录 ,用sh 命令也不行

你的设备root了么?
1 楼 ihopethatwell 2012-03-20  
这里无法打出了/data/data下的文件及目录 ,用sh 命令也不行

相关推荐

    android获取root权限

    其次,获取 root 权限可以让用户安装一些需要root权限的应用程序,例如一些游戏和工具等等。 那么,谁需要获取 root 权限呢?第一类人群是黑客或喜欢对系统进行hacking的人,因为他们需要更多的控制权和自由度。第...

    android apk获取root权限方法总结

    Android APK 获取 Root 权限是一个复杂的技术难题,许多开发者和用户都遇到过这个问题。那么,如何使 Android APK 获取 Root 权限呢?今天,我们将总结一些常见的方法来获取 Root 权限。 方法一:添加一般权限 在 ...

    Android应用程序请求root权限代码

    - **如何检测设备是否已被root**:可以通过检查某些root标志文件(如`/system/app/Superuser.apk`)是否存在来判断设备是否已获取root权限。 - **root权限的风险**:虽然root权限可以带来更多的自由度和功能,但同时...

    android 获取root权限工具

    对于开发者来说,获取root权限能够更深入地调试和优化应用程序,而对于普通用户,root权限则意味着更大的自由度和定制化能力。本工具专注于帮助Android用户简单有效地获取root权限。 首先,让我们了解一下什么是USB...

    android手机获取root权限详细教程资料.pdf

    Android手机获取root权限是许多高级用户为了更深度定制和优化设备所采取的步骤。Root权限类似于Linux系统中的超级管理员账户,允许用户访问和修改手机的底层文件,包括系统核心和设置。这种权限通常由手机制造商限制...

    android手机获取root权限教程

    ### Android手机获取Root权限教程详解 #### Root权限概念与重要性 **Root权限**,对于Android设备来说,意味着用户能够获得对其操作系统最高级别的控制权。这一权限赋予了用户修改或替换设备操作系统的能力,几乎...

    Android修改源码让APP获取root权限可以执行su命令的git diff记录

    修改源码让APP获取root权限可以执行su命令的git diff记录

    Android应用源码获取root权限静默安装.rar

    Android应用源码获取root权限静默安装是一个获取root权限后,不弹出系统安装界面,直接进行安装的的源码。代码只有一个MainActivity,看起来相对比较容易,代码中重要部分都已加入详细的注释,方便大家阅读。不过...

    android获取手机root权限比较方便的方法.pdf

    Android 获取手机 Root 权限的简便方法 Android 操作系统是一款流行的移动操作系统,具有开放式的架构设计,因此允许用户获取 Root 权限,以获得更高的权限来访问系统资源。但是,获取 Root 权限却是一件复杂的...

    APK获取root权限工具

    "APK获取root权限工具"就是为了解决这个问题而存在的。 首先,我们要理解什么是root权限。在Linux(包括Android系统)中,root权限相当于最高管理员权限,拥有者可以访问和修改系统的任何部分,包括核心文件和系统...

    android root权限包

    在Android操作系统中,"root权限"是一个至关...因此,用户在决定获取root权限之前应充分了解其风险,并确保自己有足够的知识来处理可能出现的问题。对于不熟悉这一领域的新手,建议寻求专业指导或使用可靠的root工具。

    su文件用于获取root权限

    然而,获取root权限也有一些风险,包括可能破坏设备保修、降低设备安全性以及可能导致不稳定或冲突的问题。因此,除非确实需要进行高级操作,否则不建议普通用户轻易尝试获取root权限。 总的来说,`su` 文件是...

    android手机获取root权限详细教程.pdf

    Android手机获取root权限是许多高级用户为了实现更多自定义功能和优化系统性能的选择。Root权限类似于Linux和UNIX系统中的超级管理员账户,具有对设备的完全控制权,能够访问和修改系统内的任何文件,包括那些制造商...

    Android上获得系统root权限的方法

    Android 系统中获得 root 权限是指用户获取 Android 操作系统的最高权限,掌握着设备的所有控制权。获取 root 权限可以让用户拥有更高的自由度,实现更多的自定义功能和设置。但是,获取 root 权限也存在一定的风险...

    安卓应用程序永久获取Root权限的方法

    压缩包内有apk,demo源码,以及NDK 安装文档,主要是教你如何在已经root过得手机上只通过一次获取root权限,以后就再也不会弹出root授权框,主要思想是绕过superuser.apk的权限检查

    root+magisk+所有手机获取root权限通用教程

    【标题】"root+magisk+所有手机获取root权限通用教程"揭示了本文将要讨论的核心内容:如何使用Magisk工具为任何类型的智能手机获取root权限。root权限是Android系统中的高级访问权限,允许用户对系统进行更深入的...

    获取root:anroid 获取root权限

    在Android系统中,"获取root权限"是指获得设备的最高管理员权限,这允许用户对操作系统进行深度修改,包括但不限于删除预装应用、优化系统性能、安装自定义内核以及访问通常受限制的系统文件。然而,这也伴随着安全...

    一键获取ROOT权限 Gingerbreak 1.1

    Gingerbreak是一款可以在2.2和3.0系统中一键获取ROOT权限的实用工具。 使用它你需要注意以下几点: - 启用USB调试; - 确保设备中有可用的SD卡; - 注意程序需安装到设备中(不能安装到SD卡中); - 成功获取ROOT...

Global site tag (gtag.js) - Google Analytics