最近在研究Android逆向,其中就涉及到对Android进行Root的操作,Root方式有多种,本篇文章就来简单总结一下。
这是一篇科普向文章,没有代码层的分析。
Android Root核心原理
Android内核其实就是Linux,所以Android要获得Root权限,其实等同于内核的Linux系统要获得Root权限。
使用过Linux的人都比较清楚,我们可以通过sudo或su获得Root权限,不同之处在于sudo是暂时获得Root权限,而su是一直获得Root权限。
因为Root权限具有危险性,比如用户可以删除任意文件,如果不小心将Android核心代码文件删除,那么手机就无法正常使用了,为了避免这种情况,Android手机默认是不会提供进入Root权限的功能的,即缺少su程序。
如果你想让Android获得Root权限,那么你首先需要编译好su程序文件,然后拷贝到PATH(环境变量)中,并给予su文件执行权限。
Android手机的PATH有:
进行Root时,通常将su程序文件放在目录中,这样你在通过adb shell连接Android手机后,就可以通过su命令进入Root权限了。
原理是这个原理,但实际操作起来,会出现一个逻辑死结。我们将su文件拷贝到Android PATH中需要Root权限,而我们当前没有Root权限,拷贝su文件到PATH的目的便是获得Root权限,所以陷入两难的逻辑死结中。
一键Root
要获得Root权限,就需要突破这个逻辑死结。
在几年前,市面上有很多一键Root的软件,当时,让Android手机获得Root最简单的方式便是从应用商城下载好这些一键Root软件,然后通过该软件可以轻松让Android获得Root权限。
这类一键Root软件会利用Android系统的漏洞,从而获得某个具有Root权限的进程,然后利用该进程实现将su文件拷贝到目录并给予su文件执行权限的过程,但随着Android的发展,很多漏洞已经被堵上,这类一键Root软件就没有用武之地了。
此外很多一键Root软件与流氓软件无异,因为有了最高权限,可以对你的Android手机做各种流氓操作,你却无可奈何。
刷Recovery
现在要获取Android的Root,更常用的方式是刷入第三方的Recovery,然后再借助Recovery刷入获取Root的程序。
什么是Recovery/p>
一部Android手机,通常会有2个系统,一个是Android系统本身,这也是用户开机默认会使用的系统,另一个便是Recovery系统,该系统的主要功能便是操作Android系统,比如Android系统出现无法开启的故障,此时就需要Recovery系统,大多数手机厂商都会让用户通过长按开机键+音量键的方式进入Recovery系统,如下图:
关于Magisk获取Root的更多细节可以看Magisk官方文档:Magisk Internal Details(https://topjohnwu.github.io/Magisk/details.html)
参考
-
Android adb setuid提权漏洞的分析
-
Android Root原理分析及防Root新思路
-
Magisk Manager 详解
-
什么是SafetyNet何通过SafetyNet验证/p>
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92452 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!