一、 概述
本文介绍了android中获取root权限的方法以及原理,让大家对android玩家中常说的“越狱”有一个更深层次的认识。

二、 Root的介绍
1.       Root 的目的
可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等。
2.       Root的原理介绍
谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别的管理权限。我们root手机的过程也就是获得手机最高使用权限的过程。同时为了防止不良软件也取得root用户的权限,当我们在root的过程中,还会给系统装一个程序,用来作为运行提示,由用户来决定,是否给予最高权限。这个程序的名字叫做Superuser.apk。当某些程序执行su指令想取得系统最高权限的时候,Superuser就会自动启动,拦截该动作并作出询问,当用户认为该程序可以安全使用的时候,那么我们就选择允许,否则,可以禁止该程序继续取得最高权限。Root的过程其实就是把su文件放到/system/bin/
Superuser.apk 放到system/app下面,还需要设置/system/bin/su可以让任意用户可运行,有set uid和set
gid的权限。即要在android机器上运行命令:adb shell chmod 4755
/system/bin/su。而通常,厂商是不会允许我们随便这么去做的,我们就需要利用操作系统的各种漏洞,来完成这个过程。
特别说明:我们烧机中的Eng版本并没有Root权限
3.       Root的方法
从Root的原理我们了解到,root过程分三步:
a.       adb push su /system/bin
b.       adb push SuperUser.apk /system/app
c.       adb shell chmod 4755 /system/bin/su
若系统是eng版的,做到以上三步,那么我们Root就大功告成,但实际是不行的。为什么呢?原因有三:
1、user版的/system路径是只读权限,不能简单写入
2、 chmod需要Root权才能运行(死循环了)
3、有些系统在启动时会自动将su的4755权限设成755,甚至直接删除su
那么针对这种情况,我们怎么办呢?非常简单:烧一个eng版本的boot.img就行了
可以用展讯的烧录工具,或者用fastboot模式从sd卡烧一个boot.img文件即可
至此,我们Root就成功了,可以用R.E(Root Explorer)在根目录创建和删除文件。

三、 深入理解Root机制
其流程是:
1.       Su 被用户调用
2.       Su 创建了一个socket监听
3.       Su 向Superuser发送了一个广播,说是有一个程序要请求root
4.       Su 等待socket 数据接收。有超时处理。
5.       Superuser 界面收到广播后,弹出一个对话框,询问用户
6.       Superuser 向传来的数据中的socket写回用户应答结果。
7.       Su 根据socket得到的结果处理应该不应该继续执行
8.       完成提权管理
superuser.apk这个程序是root成功后,专门用来管理root权限使用的,防止被恶意程序滥用。

转载:https://blog.csdn.net/pan0755/article/details/76927015

Android 获取ROOT权限原理解析的更多相关文章

  1. Android 上SuperUser获取ROOT权限原理解析

    Android 上SuperUser获取ROOT权限原理解析 一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. ...

  2. Android获取ROOT权限

    获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了. // 获取ROOT权限 public void get_root(){ if (is_ ...

  3. Android获取ROOT权限的通用方法

    背景 自从Android问世以后,给手机获取ROOT权限变成了玩机爱好者老生常谈的话题.拥有手机,却不能拥有操作手机的最高权限,这对于手机爱好者而言,这怎么可以忍?所以无论Android升到什么什么版 ...

  4. Android获取Root权限之后的静默安装实现代码示例分析

    转:http://blog.csdn.net/jiankeufo/article/details/43795015 Adroid开发中,我们有时会遇到一些特殊功能的实现,有些功能并没有太高技术难度,但 ...

  5. Android 获取 root权限

    在进行android 开发的时候,经常用真机进行调试,有时候需要把手机中的sqlite数据复制出来.这时候就需要获取手机的root权限.通过 adb shell 命令可以获取权限. 1. 运行cmd ...

  6. 转:Android 获取Root权限

    来自:http://blog.csdn.net/twoicewoo/article/details/7228940 import java.io.DataOutputStream; import an ...

  7. android中获取root权限的方法以及原理(转)

    一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...

  8. [Android Pro] Android fastboot刷机和获取Root权限

    参考文章: https://developers.google.com/android/nexus/images 转载自:    http://www.inexus.co/article-1280-1 ...

  9. 获取root权限及破解原理分析

    2012-03-18 17:58:45|  分类: android |字号 订阅 如今Android系统的root破解基本上成为大家的必备技能!网上也有非常多中一键破解的软件,使root破解越来越ea ...

随机推荐

  1. 关于raid5的一系列问题

    前几天我的一个同事在对计划采购的存储进行测试,期间聊到了raid5的话题,我和他的意见产生了分歧.他的说法是raid5不能挂太多盘是因为如果挂太多盘写惩罚会非常严重导致性能下降.而我的观点则是对于ra ...

  2. Java虚拟机汇编代码

    0:将一个常量加载到操作数栈 3:数值从操作数栈存储到局部变量表 4:将int类型的常量加载到操作数栈 5:数值从操作数栈存储到局部变量表 6:将一个局部变量加载到操作栈 7:将一个局部变量加载到操作 ...

  3. 红帽yum源安装报错initscripts-9.49.41-1.el7.x86_64 conflicts redhat-release < 7.5-0.11" ?

    https://access.redhat.com/solutions/3425111 环境 Red Hat Enterprise Linux 7 问题 yum fails to apply upda ...

  4. spring security 学习文档

    web service Prepared by:   Sea                                                                       ...

  5. java求两个数百分比,精确到指定位数

    // 获取百分比,不带小数点 private String getPercentage(String num, String total){ NumberFormat numberFormat = N ...

  6. RAID0+1 RAID5 性能比较

    我想大家都很清楚,存储设备性能的好坏除了与处理器(CPU).缓存等有关之外,还与RAID组中的磁盘数量有很大的关系.按RAID技术的特点,相同磁盘数量下的RAID0性能高于RAID5,RAID1的性能 ...

  7. eclipse 创建注释模板

    使用  Alt+Shift+J 可以快速注释. 我们每次手动敲入作者,时间,版本等信息,有一些重复,可通过设置eclipse注释模板,减少工作量. Window -> preference -& ...

  8. eclipse插件常用网址链接

    目录 jar下载地址 java maven svn erMaster linux镜像ISO:       http://www.linuxfly.org/post/659/ virtual下载:    ...

  9. 7 python 模块间相互导入

    python在不同层级目录import模块的方法 注意,在python3里,即使目录下没__int__.py文件也能创建成功,猜应该是解释器优化所致,但创建包还是要记得加上这个文件 吧. 1.模块的分 ...

  10. springboot测试时 SpringApplicationConfiguration注解不能用

    测试时,@SpringApplicationConfiguration(classes = Application.class) 报错,注解不能导入. 在学习spring boot时,按照文档学习时测 ...