自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析Android Root,你懂了嗎?

移動開發(fā) Android
Android內(nèi)核其實就是Linux,所以Android要獲得Root權(quán)限,其實等同于內(nèi)核的Linux系統(tǒng)要獲得Root權(quán)限。

[[427920]]

本文轉(zhuǎn)載自微信公眾號「懶編程」,作者ayuliao。轉(zhuǎn)載本文請聯(lián)系懶編程公眾號。

最近在研究Android逆向,其中就涉及到對Android進行Root的操作,Root方式有多種,本篇文章就來簡單總結(jié)一下。

這是一篇科普向文章,沒有代碼層的分析。

Android Root核心原理

Android內(nèi)核其實就是Linux,所以Android要獲得Root權(quán)限,其實等同于內(nèi)核的Linux系統(tǒng)要獲得Root權(quán)限。

使用過Linux的人都比較清楚,我們可以通過sudo或su獲得Root權(quán)限,不同之處在于sudo是暫時獲得Root權(quán)限,而su是一直獲得Root權(quán)限。

因為Root權(quán)限具有危險性,比如用戶可以刪除任意文件,如果不小心將Android核心代碼文件刪除,那么手機就無法正常使用了,為了避免這種情況,Android手機默認是不會提供進入Root權(quán)限的功能的,即缺少su程序。

如果你想讓Android獲得Root權(quán)限,那么你首先需要編譯好su程序文件,然后拷貝到PATH(環(huán)境變量)中,并給予su文件執(zhí)行權(quán)限。

Android手機的PATH有:

  1. /sbin 
  2. /vendor/bin 
  3. /system/sbin 
  4. /system/bin 
  5. /system/xbin 

進行Root時,通常將su程序文件放在/system/xbin目錄中,這樣你在通過adb shell連接Android手機后,就可以通過su命令進入Root權(quán)限了。

原理是這個原理,但實際操作起來,會出現(xiàn)一個邏輯死結(jié)。我們將su文件拷貝到Android PATH中需要Root權(quán)限,而我們當(dāng)前沒有Root權(quán)限,拷貝su文件到PATH的目的便是獲得Root權(quán)限,所以陷入兩難的邏輯死結(jié)中。

一鍵Root

要獲得Root權(quán)限,就需要突破這個邏輯死結(jié)。

在幾年前,市面上有很多一鍵Root的軟件,當(dāng)時,讓Android手機獲得Root最簡單的方式便是從應(yīng)用商城下載好這些一鍵Root軟件,然后通過該軟件可以輕松讓Android獲得Root權(quán)限。

這類一鍵Root軟件會利用Android系統(tǒng)的漏洞,從而獲得某個具有Root權(quán)限的進程,然后利用該進程實現(xiàn)將su文件拷貝到/system/xbin目錄并給予su文件執(zhí)行權(quán)限的過程,但隨著Android的發(fā)展,很多漏洞已經(jīng)被堵上,這類一鍵Root軟件就沒有用武之地了。

此外很多一鍵Root軟件與流氓軟件無異,因為有了最高權(quán)限,可以對你的Android手機做各種流氓操作,你卻無可奈何。

刷Recovery

現(xiàn)在要獲取Android的Root,更常用的方式是刷入第三方的Recovery,然后再借助Recovery刷入獲取Root的程序。

什么是Recovery?

一部Android手機,通常會有2個系統(tǒng),一個是Android系統(tǒng)本身,這也是用戶開機默認會使用的系統(tǒng),另一個便是Recovery系統(tǒng),該系統(tǒng)的主要功能便是操作Android系統(tǒng),比如Android系統(tǒng)出現(xiàn)無法開啟的故障,此時就需要Recovery系統(tǒng),大多數(shù)手機廠商都會讓用戶通過長按開機鍵+音量鍵的方式進入Recovery系統(tǒng),如下圖:

[[427921]]

進入Recovery后,你便可以對Android系統(tǒng)本身進行自由管理了,此時我們會通過Recovery來將su文件刷入,從而獲得Root后的Android系統(tǒng)。

如果你使用的不是Google親兒子(如:Nexus),而是使用國內(nèi)廠商的手機,如小米、華為之類的,你還需要突破BootLoader鎖帶來的限制。

BootLoader是你按下手機開機時,最先啟動的程序,它的主要作用便是拉起整個Android系統(tǒng)和Recovery系統(tǒng),但國內(nèi)廠商會對BootLoader上鎖,從而讓手機只能運行該廠商驗證過的Android系統(tǒng)和Recovery,而廠商自己的Recovery通常進行過閹割,無法讓Android獲得Root權(quán)限。

對于國內(nèi)廠商的玩家,獲得Root的第一步是解鎖BootLoader,解鎖分官方解鎖和強制解鎖,比如你使用小米手機,你想刷機,可以去小米論壇申請官方解鎖,但有些手機不支持官方解鎖,此時只能自己搜索解決方案,進行強制解鎖了。

目前最常用的第三方Recovery叫做 TWRP (TeamWin Recovery Project ), 它是由國外 android 愛好者開發(fā)的一款工具,你需要根據(jù)自己的Android型號去找對應(yīng)版本的TWRP。

注意,我們刷入了第三方Recovery后并不表示已經(jīng)完成Root了,我們只是需要一個功能更加強大的Recovery來幫助我們刷入可以獲取Root的程序。

SuperSU與Magisk

SuperSU與Magisk都是知名的Root管理程序,兩者都可以通過TWRP將其刷入,然后讓Android獲得Root權(quán)限,但兩者有較大的不同。

SuperSU

SuperSU由Chainfire開發(fā),在幾年前是當(dāng)之無愧的Android獲取Root的最佳方式,但互聯(lián)網(wǎng)中對SuperSU的討論止步于2017年末,其原因是SuperSU被國內(nèi)公司收購,SuperSU從此由開源模式轉(zhuǎn)為閉源模式,開源版本的SuperSU依舊留在Github,其支持的最新Android版本為7.0,即Android8.0以后,你要使用,就需要使用閉源版本,但沒人愿意使用陌生公司的閉源版本。

SuperSU實現(xiàn)Root的方式也是將SuperSU自己準(zhǔn)備好的su程序文件放到Android中,只是其借助Recovery來刷入su,此外,也會將SuperSU應(yīng)用也刷入到系統(tǒng)中。

如果Android中的任何應(yīng)用都可以不加限制的使用Root權(quán)限,那么手機將沒有安全性可言,所以SuperSU應(yīng)用的目的就是對需要使用Root的應(yīng)用進入管理,如果一個應(yīng)用需要使用Root,會調(diào)用su程序,而該su程序是SuperSU應(yīng)用處理好的su程序,在下放權(quán)限前,會通知SuperSU應(yīng)用,從而實現(xiàn)對應(yīng)用獲取Root的管理。

在Android 6.0時,Google在Android系統(tǒng)中新增了SafetyNet程序,該程序的主要功能便是監(jiān)測系統(tǒng)API,如果發(fā)現(xiàn)系統(tǒng)API遭到修改或系統(tǒng)完備性檢測失敗,則會告知使用了該功能的應(yīng)用,而SuperSU這種更改系統(tǒng)文件并新增文件到Android系統(tǒng)分區(qū)的做法會被SafetyNet程序檢測出來,從而導(dǎo)致很多通過SuperSU實現(xiàn)Root的用戶無法使用Google Play、Netflix等使用了SafetyNet功能的應(yīng)用,也無法獲得任何OTA更新(Over The Air Updates,無線下載更新)。

關(guān)于SuperSU獲取Root的更多細節(jié)可以看一下Chainfire寫的How-To SU(http://su.chainfire.eu/)。

Magisk

SuperSU被收購且開源版只能支持到Android 7.0,Magisk扛起大旗。

Magisk實現(xiàn)Root的方式也是將自己的su程序利用Recovery刷入Android中實現(xiàn)Root。

Magisk的特點在于它會掛載一個與系統(tǒng)文件相互隔離的文件系統(tǒng)來加載自己的內(nèi)容,Magisk的改動都發(fā)生在這個獨立的文件系統(tǒng)中,不會影響到Android系統(tǒng)本身的文件,從而避免被檢測。

與SuperSU類似,Magisk不止提供Root的功能,還提供管理應(yīng)用獲取Root的功能,從而避免任意應(yīng)用亂用Root。

我們可以將Magisk看成一個文件系統(tǒng),該文件系統(tǒng)通過巧妙的設(shè)計實現(xiàn)了各種功能且不對系統(tǒng)文件進行直接修改。

因為Magisk也有自己的模塊系統(tǒng),所以很多人會拿Xposed與Magisk做對比(Xposed與獲取Root沒有啥關(guān)系)。

Xposed的原理是通過劫持Android系統(tǒng)的Zygote進程來加載自己的功能(Zygote進程是App啟動時要fork的進程),顯然,Xposed需要對文件系統(tǒng)進行相應(yīng)的修改,容易被檢測出來,其與Magisk的直觀差別如下圖:

關(guān)于Magisk獲取Root的更多細節(jié)可以看Magisk官方文檔:Magisk Internal Details(https://topjohnwu.github.io/Magisk/details.html)

參考

 

  • Android adb setuid提權(quán)漏洞的分析
  • Android Root原理分析及防Root新思路
  • Magisk Manager 詳解
  • 什么是SafetyNet?如何通過SafetyNet驗證?

 

責(zé)任編輯:武曉燕 來源: 懶編程
相關(guān)推薦

2011-06-14 12:56:55

SQL Server復(fù)災(zāi)

2024-04-07 08:23:01

JS隔離JavaScript

2022-01-06 07:59:32

WebGPUOpenGL引擎

2022-06-06 07:58:52

勒索軟件惡意軟件解密

2022-08-19 08:06:00

MySQL數(shù)據(jù)庫解析器

2022-06-07 08:14:35

PGPAGETUPLE

2022-11-28 07:10:57

2024-04-29 09:25:19

2024-08-12 15:23:43

LangChain

2022-06-28 08:42:03

磁盤kafka高性能

2022-04-12 11:46:08

服務(wù)gRPC反向代理

2022-04-07 08:20:22

typeinterface前端

2023-06-27 07:09:39

2024-08-12 12:30:27

2022-08-15 07:24:41

WindowsDLL鍵盤

2022-07-27 08:01:29

CMS垃圾回收器

2020-10-25 08:45:38

IPv6網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)

2022-06-15 08:00:50

磁盤RedisRocketMQ

2022-03-08 15:01:48

負載均衡IP服務(wù)器

2024-04-28 08:24:27

分布式架構(gòu)Istio
點贊
收藏

51CTO技術(shù)棧公眾號