您的位置:首页 > 移动开发 > Android开发

android root权限破解分析

2012-02-01 10:21 295 查看
破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件“su”,这是一个二进制文件,仅仅在系统中置入这个“su”文件是不会给手机的软件或硬件造成任何故障。

下面的代码是android系统原版的su中的部分代码,可以看出只允许getuid()为AID_ROOT和AID_SHELL的进程可以使用su进行登陆。

/* Until we have something better, only root and the shell can use su. */

myuid = getuid();

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

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

return 1;

}

在Superuser这个android程序中的su不再有上面的一部分,这样任何进程都可以使用su进行登陆了,有一部分android程序要使用root权限可能的用法类似于(这个也是Superuser中的一部分代码):

Process process = Runtime.getRuntime().exec("su");

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

os.writeBytes("mount -oremount,rw /dev/block/mtdblock3 /system\n");

os.writeBytes("busybox cp /data/data/com.koushikdutta.superuser/su /system/bin/su\n");

os.writeBytes("busybox chown 0:0 /system/bin/su\n");

os.writeBytes("chmod 4755 /system/bin/su\n");

os.writeBytes("exit\n");

os.flush();

而在上面提到的Superuser和android程序中的su源码中都有这部分代码:

if(setgid(gid) || setuid(uid)) {

fprintf(stderr,"su: permission denied\n");

return 1;

}

看上去这里就是进行权限切换的地方了。面普通用户要能使用su,su的权限要是这样:

-rwsr-xr-x. 1 root root 34904 11月 3 2010 /bin/su

这个和电脑版的su上是一样的。

从出上面的分析可以认为破解android的root权限的实质是:在系统中加入一个任何用户都可能用于登陆的su命令。当然这首先要取得root权限才能做到。在z4root这个android下的破解android的root权限的程序中有一个rageagainstthecage,可能就是设法得到root权限的程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: