记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

android root 分析

2013-11-20 16:31

    关于介绍android root的文章网上已经有很多,@安卓安全小分队 主要对这些内容进行整理、分析,方便大家研究。对于手机为什么要进行root,主要是由于系统的很多操作必须有root权限才能执行。如:要删掉系统自带的一些应用、开启某些限制的功能、使用一些手机管理软件等。

    对于root进行分析,首先需要了解Linux对权限的控制。在Linux系统中文件或目录的访问权限分为读,写和可执行三种,并且有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者,所有者能允许同组用户有权访问文件,还能将文件的访问权限赋予系统中的其他用户。

一般情况下,只有授予了读、写、执行权限的用户才能对其进行相应的操作,但系统中存在一个超级用户root,对应的uidgid都是0,它具有系统的最高权限,可以不需要授权对任何文件、进程、资源等进行操作。对于android手机的实现root,实际上就是要获取到这个权限,这样我们就能够对手机进行随意的修改,当然这样也会带来很大的风险。

下面看一下如何获取到root权限。手机root一般是通过手机的一些漏洞,将su这个可执行程序放到/system/bin/system/xbin下面。至于使用漏洞方法,例如不断fork进程使uid溢出,或者使用busybox权限设置不对等,当然这些方法现在都不能使用了,会有人不断的研究新方法进行root,关于这部分就不详细的分析了,需要针对具体手机去网上搜索相应的root方法。

如果想要自己编译su这个可执行程序,就要注意默认版本的su这个可执行程序并不能提供APProot获取权限,主要是代码做了限制,如下:

int main(int argc, char **argv)

{

    struct passwd *pw;

    int uid, gid, myuid;

 

   

    myuid = getuid();

    if (myuid != AID_ROOT && myuid != AID_SHELL) {

        fprintf(stderr,"su: uid %d not allowed to su\n", myuid);

        return 1;

    }

…………

其中针对用户ID的检查需要注释掉,否则只有shell用户可以获取root权限。

-rwsr-sr-x root     root       105764 2012-09-11 14:39 su

还有一个需要注意的地方就是su这个进程的权限应该使用chmod设置为6777,前面这个6代表了赋予setuidsetgid的权限,这样任何进程执行了su命令后,就会将该进程变为root用户和root组,这样就拥有了root权限。

   

    execlp("/system/bin/sh", "sh", NULL);

这句代码是在su进程main函数最后执行的,对于shell用户来说比较好理解,运行su后又回到了一个shell的环境。如果对于一个进程来说,我们需要将命令写进该进程的标准输入stdin中,即可使用root权限进行执行。

现在已经有了获取到root权限的方法,对于adb登陆的shell用户来说,只要执行su命令就可以切换到root用户,使用起来比较方便。下面看一下应用程序是如何使用root权限的,APP首先会使用runtime环境执行su这个命令,而对于APP启动到这一步之后,进程就在等待命令执行,这就需要将命令发送到这个有root权限的进程中进行执行。下面是在网上摘抄的一段实现代码:

try {  

   // Preform su to get root privledges  

   p = Runtime.getRuntime().exec("su");   

 

   // Attempt to write a file to a root-only  

   DataOutputStream os = new DataOutputStream(p.getOutputStream());  

   os.writeBytes("echo \"Do I have root?\" >/system/sd/temporary.txt\n");  

 

   // Close the terminal  

   os.writeBytes("exit\n");  

   os.flush();

}

该段代码即实现了执行su进程,获取root权限,然后获取DataOutputStream,最后将命令写入,即可以root权限执行,值得注意的是,在执行这些命令的同时,app所在进程的权限未发生变化。


 青春就应该这样绽放  游戏测试:三国时期谁是你最好的兄弟!!  你不得不信的星座秘密
知识来源: blog.sina.com.cn/s/blog_be6dacae0101a5a0.html

阅读:138605 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“android root 分析”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词