申请会员ID:ssuoi【冒充他人作品申请】
Android获取超级用户权限大家可能都知道,买品牌机或者合约机都会出现一个问题。就是买到的手机里有一大堆捆绑的垃圾软件,于是,网络上出现了ROOT精灵。。。ROOT大师等等的软件,似乎ROOT成了一个热词,那么,什么是ROOT?ROOT就是对Android或者类似的LINUX类型系统的超级用户进行破解,从而让使用者成为超级用户,这样,你就可以管理手机里的所有程序。什么刷机啊。写在系统程序啊。等等。。。
破解ROOT的原理是什么?破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件“su”,这是一个二进制文件,相当于电脑上的exe文件,仅仅在系统中置入这个“su”文件是不会给手机的软件或硬件造成任何故障的。
下面是原版Android的部分代码(反正Android是开源的!大家可以自己找一找):
<SPAN style="FONT-SIZE:18px"><STRONG>/* Until we have something better, only root andthe shell can use su. */
myuid = getuid();
if (myuid != AID_ROOT && myuid !=AID_SHELL) {
fprintf(stderr,"su: uid %d not allowedto su\n", myuid);
return 1;
}</STRONG></SPAN>这条是有关SU命令的代码,从中可以看出if(myuid != AID_ROOT && myuid != AID_SHELL)这条命令只允许getuid()为AID_ROOT和AID_SHELL的进程时可以使用su进行登陆。
那么假设,这一整串代码消失,那么就代表着任何进程就都可以使用SU命令登录了。
但是还有部分机器让进程获取ROOT的代码如下:
Process process= Runtime.getRuntime().exec("su");
DataOutputStreamos = new DataOutputStream(process.getOutputStream());
os.writeBytes("mount-oremount,rw /dev/block/mtdblock3 /system\n");
os.writeBytes("busyboxcp /data/data/com.koushikdutta.superuser/su /system/bin/su\n");
os.writeBytes("busyboxchown 0:0 /system/bin/su\n");
os.writeBytes("chmod4755 /system/bin/su\n");
os.writeBytes("exit\n");
os.flush();
尽管这两串代码不一样但是这两个Android的SU源代码(指原版和部分机器的SU源代码),都有一个共同的代码:
if(setgid(gid)|| setuid(uid)) {
fprintf(stderr,"su:permission denied\n");
return 1;
}
那么看似这里就是权限判断的地方,从出上面的分析可以认为破解android的root权限的主要原理是:在系统中加入一个任何用户都可能用于登陆的su命令。当然这首先要取得root权限才能做。
我希望申请会员
申请ID:ssuoi
申请邮箱:1751025424@qq.com
我希望加入吾爱论坛,希望在这里与更多的朋友们讨论技术,传授经验,谢谢!
内容随便搜索下到处都是,申请内容需要原创啊同学。 不趁2月1日来注册就是悲剧啊...... 还好我赶上了 Hmily 发表于 2015-2-3 17:18
内容随便搜索下到处都是,申请内容需要原创啊同学。
尽管现在一搜到处都是,但我没有抄袭,这是我之前写的,我希望能加入吾爱论坛,谢谢! 游客 112.101.178.x 发表于 2015-2-4 18:17
尽管现在一搜到处都是,但我没有抄袭,这是我之前写的,我希望能加入吾爱论坛,谢谢!
明确下,哪部分是你写的?你发在哪里,别人都从哪拷贝你的版本? Hmily 发表于 2015-2-4 18:34
明确下,哪部分是你写的?你发在哪里,别人都从哪拷贝你的版本?
这个。。。我不明确,这是我很久之前写的,虽然不怎么样。。。。我希望加入吾爱论坛,谢谢! 游客 112.101.178.x 发表于 2015-2-4 20:14
这个。。。我不明确,这是我很久之前写的,虽然不怎么样。。。。我希望加入吾爱论坛,谢谢!
你啊,这么问也是难为你了,抄袭的东西还说谎,一个慌圆另外一个慌是不容易。
页:
[1]