root方式细节剖析

android系统root的根本原理就是替换su程序。
su程序会设置SUID位,s验证root密码。正确的话su程序可以把用户权限提高root(因为去设置SUID位,运行期是root权限,这样其有权限提升自己的权限)

很早以前的提权方式:
http://blog.claudxiao.net/2011/04/android-adb-setuid/
http://www.oschina.net/question/12_58384?fromerr=FerRWP6j

提权方式一:busybox工具+ratc提权程序(rage aginst the cage)

adbd会检测系统的ro.secure属性,如果该属性为1则将会把自己的用户权限降级成shell用户。一般设备出厂的时候在/default.prop文件中都会设置 ro.secure = 1 这样将会使adbd启动的时候自动降级成shell用户。

1、出厂设置的ro.secure属性为1,则adbd也将运行在shell用户权限下;

2、adb工具创建的进程ratc也运行在shell用户权限下;

3、ratc一直创建子进程(ratc创建的子程序也 将会运行在shell用户权限下),紧接着子程序退出,形成僵尸进程,占用shell用户的进程资源,直到到达shell用户的进程数为 RLIMIT_NPROC的时候(包括adbd、ratc及其子程序),这是ratc将会创建子进程失败。这时候杀掉adbd,adbd进程因为是 Android系统服务,将会被Android系统自动重启,这时候ratc也在竞争产生子程序。在adbd程序执行上面setgid和setuid之 前,ratc已经创建了一个新的子进程,那么shell用户的进程限额已经达到,则adbd进程执行setgid和setuid将会失败。根据代码我们发 现失败之后adbd将会继续执行。这样adbd进程将会运行在root权限下面了。

改系统内核代码:insmod /data/data/xxx/xxx.ko装载内核文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值