自从安卓诞生以来,root这个词便一直围绕至今。大多数用户为了更好的体验安卓纷纷加入root大军,为了照顾这些热爱root的用户,便涌现出了各种各样的root软件。
大多数人都认为这些一键root都是xg111net太平洋在线手机版利用了android的漏洞来破解的,其实不然。
破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件“su”,这是一个二进制文件,相当于电脑上的exe文件,仅仅在系统中置入这个“su”文件是不会给手机的软件或硬件造成任何故障。
下面的代码是android系统原版的su中的部分代码,可以看出只允许getuid()为AID_ROOT和AID_SHELL的进程可以使用su进行登陆。
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL) {
fprintf(stderr,"su: uid %d not allowed to sun", 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 /systemn");
os.writeBytes("busybox cp /data/data/com.koushikdutta.superuser/su /system/bin/sun");
os.writeBytes("busybox chown 0:0 /system/bin/sun");
os.writeBytes("chmod 4755 /system/bin/sun");
os.writeBytes("exitn");
os.flush();
这样我们就可以看出其实Android系统的破解的根本原理就是替换掉系统中的su程序,因为系统中的默认su程序需要验证实际用户权限(只有root和 shell用户才有权运行系统默认的su程序,其他用户运行都会返回错误)。而破解后的su将不检查实际用户权限,这样普通的用户也将可以运行su程序,也可以通过su程序将自己的权限提升。
所以一般情况下root过手机都会有一个SuperUser应用程序来让用户管理允许谁获得root权限,也算是给系统加了一层保险吧!
但是有一个问题就是这些一键root软件并不是100%成功的,总会有一些手机无法root的。
在安卓灵魂人物安迪鲁宾离职之后,业界纷纷猜想未来的android是否会走向封闭。随着android系统的越来越完善,root还会像这样简单吗?
假若不能root,又该如何掌控自己的手机呢。
最近发现一款rom助手软件,大家都知道root一般都是在进入系统之后进行的。这种方法现在并不是100%成功的,更何况在将来。而这款软件可以在rom中直接root,就是你xg111net企业邮局的系统还没装入前就可以将它直接root。这样就避免了root失败。
所以,就算将来无法一键root。也可以利用Rom来root。