Android 获取ROOT权限原理解析
一、 概述
本文介绍了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权限原理解析的更多相关文章
- Android 上SuperUser获取ROOT权限原理解析
Android 上SuperUser获取ROOT权限原理解析 一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. ...
- Android获取ROOT权限
获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了. // 获取ROOT权限 public void get_root(){ if (is_ ...
- Android获取ROOT权限的通用方法
背景 自从Android问世以后,给手机获取ROOT权限变成了玩机爱好者老生常谈的话题.拥有手机,却不能拥有操作手机的最高权限,这对于手机爱好者而言,这怎么可以忍?所以无论Android升到什么什么版 ...
- Android获取Root权限之后的静默安装实现代码示例分析
转:http://blog.csdn.net/jiankeufo/article/details/43795015 Adroid开发中,我们有时会遇到一些特殊功能的实现,有些功能并没有太高技术难度,但 ...
- Android 获取 root权限
在进行android 开发的时候,经常用真机进行调试,有时候需要把手机中的sqlite数据复制出来.这时候就需要获取手机的root权限.通过 adb shell 命令可以获取权限. 1. 运行cmd ...
- 转:Android 获取Root权限
来自:http://blog.csdn.net/twoicewoo/article/details/7228940 import java.io.DataOutputStream; import an ...
- android中获取root权限的方法以及原理(转)
一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...
- [Android Pro] Android fastboot刷机和获取Root权限
参考文章: https://developers.google.com/android/nexus/images 转载自: http://www.inexus.co/article-1280-1 ...
- 获取root权限及破解原理分析
2012-03-18 17:58:45| 分类: android |字号 订阅 如今Android系统的root破解基本上成为大家的必备技能!网上也有非常多中一键破解的软件,使root破解越来越ea ...
随机推荐
- 关于open_cursors和session_cached_cursors的参数值(转)
一.如何正确设置session_cached_cursors参数: 正确设置open_cursors和session_cached_cursors 可以减少sql解析,提高系统性能,那么,如何正确设置 ...
- Fork/Join编程模型
1.一种并行计算的多线程编程模型 2.开始--任务分割--多线程异步执行---任务合并--阻塞等待合并结果.(分治算法) 3.work-stealing算法: 每个线程维护一个各自的双端的链表,有新任 ...
- Hbase简介安装配置
HBase —— Hadoop Database的简称 ,hbase 是分布式,稀疏的,持久化的,多维有序映射,它基于行键rowkey,列键column key,时间戳timestamp建立索引.它是 ...
- 非常简单的 xml转成数组的方法
function xml2arr($xml){ $obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $jso ...
- 机器学习入门-数据过采样(上采样)1. SMOTE
from imblearn.over_sampling import SMOTE # 导入 overstamp = SMOTE(random_state=0) # 对训练集的数据进行上采样,测试集的 ...
- 用yield 实现协程 (包子模型)
协程是一种轻量级的线程 无需线程上下级的开销, 所有的协程都在一个线程内执行 import time def consumer(name): print('%s is start to eat bao ...
- Spring事务控制和传递性理解
1.在同一类方法间相互调用,如果调用方无事务控制,被调用方有事务控制,则被调用方也无事务 原因:外部经过spring容器调用service的方法事务才生效,service类内部方法间相互调用事务不生效 ...
- 11 并发编程-(线程)-信号量&Event&定时器
1.信号量(本质也是一把锁)Semaphore模块 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行, 信号量同一时间可以有5个任务拿到锁去执行, 如果说互斥锁是合租 ...
- objective C, parse json时注意事项
例: dict为从API请求返回的json调用 NSJSONSerialization JSONObjectWithData:方法得到的NSDictionary实例. 当执行以下语句时linkStri ...
- VC 判断网络连接函数
IsNetworkAlive Bool IsNetworkAlive( _Out_ LPDWORD lpdwFlags ); Header Sensapi.h Library Sensapi.lib ...