关闭

root方式细节剖析

标签: androidroot
291人阅读 评论(0) 收藏 举报
分类:

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

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:68065次
    • 积分:1918
    • 等级:
    • 排名:千里之外
    • 原创:130篇
    • 转载:2篇
    • 译文:0篇
    • 评论:21条
    学习交流
    个人网址:tangsilian.cn

    github:https://github.com/tangsilian
    最新评论