Root核心原理
內核其實就是Linux,所以要獲得Root權限,其實等同于內核的Linux系統要獲得Root權限。
使用過Linux的人都比較清楚,我們可以通過sudo或su獲得Root權限,不同之處在于sudo是暫時獲得Root權限,而su是一直獲得Root權限。
因為Root權限具有危險性,比如用戶可以刪除任意文件,如果不小心將核心代碼文件刪除,那么手機就無法正常使用了,為了避免這種情況,手機默認是不會提供進入Root權限的功能的,即缺少su程序。
如果你想讓獲得Root權限,那么你首先需要編譯好su程序文件,然后拷貝到PATH(環境變量)中,并給予su文件執行權限。
手機的PATH有:
/sbin
/vendor/bin
/system/sbin

/system/bin
/system/xbin
進行Root時,通常將su程序文件放在//xbin目錄中,這樣你在通過adb shell連接手機后,就可以通過su命令進入Root權限了。
原理是這個原理,但實際操作起來,會出現一個邏輯死結。我們將su文件拷貝到 PATH中需要Root權限,而我們當前沒有Root權限,拷貝su文件到PATH的目的便是獲得Root權限,所以陷入兩難的邏輯死結中。
一鍵Root
要獲得Root權限,就需要突破這個邏輯死結。
在幾年前,市面上有很多一鍵Root的軟件,當時,讓手機獲得Root最簡單的方式便是從應用商城下載好這些一鍵Root軟件,然后通過該軟件可以輕松讓獲得Root權限。
這類一鍵Root軟件會利用系統的漏洞,從而獲得某個具有Root權限的進程,然后利用該進程實現將su文件拷貝到//xbin目錄并給予su文件執行權限的過程,但隨著的發展,很多漏洞已經被堵上,這類一鍵Root軟件就沒有用武之地了。
此外很多一鍵Root軟件與流氓軟件無異,因為有了最高權限,可以對你的手機做各種流氓操作,你卻無可奈何。
刷
現在要獲取的Root,更常用的方式是刷入第三方的,然后再借助刷入獲取Root的程序。
什么是?
一部手機,通常會有2個系統,一個是系統本身,這也是用戶開機默認會使用的系統,另一個便是系統,該系統的主要功能便是操作系統,比如系統出現無法開啟的故障,此時就需要系統,大多數手機廠商都會讓用戶通過長按開機鍵+音量鍵的方式進入系統,如下圖:
進入后,你便可以對系統本身進行自由管理了,此時我們會通過來將su文件刷入,從而獲得Root后的系統。
如果你使用的不是親兒子(如:Nexus),而是使用國內廠商的手機,如小米、華為之類的,你還需要突破鎖帶來的限制。
是你按下手機開機時,最先啟動的程序,它的主要作用便是拉起整個系統和系統,但國內廠商會對上鎖,從而讓手機只能運行該廠商驗證過的系統和,而廠商自己的通常進行過閹割,無法讓獲得Root權限。
對于國內廠商的玩家,獲得Root的第一步是解鎖,解鎖分官方解鎖和強制解鎖,比如你使用小米手機,你想刷機,可以去小米論壇申請官方解鎖,但有些手機不支持官方解鎖,此時只能自己搜索解決方案,進行強制解鎖了。
目前最常用的第三方叫做 TWRP ( ), 它是由國外 愛好者開發的一款工具,你需要根據自己的型號去找對應版本的TWRP。
注意,我們刷入了第三方后并不表示已經完成Root了,我們只是需要一個功能更加強大的來幫助我們刷入可以獲取Root的程序。
與
與都是知名的Root管理程序,兩者都可以通過TWRP將其刷入,然后讓獲得Root權限,但兩者有較大的不同。
由開發,在幾年前是當之無愧的獲取Root的最佳方式,但互聯網中對的討論止步于2017年末,其原因是被國內公司收購,從此由開源模式轉為閉源模式,開源版本的依舊留在,其支持的最新版本為7.0,即.0以后,你要使用,就需要使用閉源版本,但沒人愿意使用陌生公司的閉源版本。
實現Root的方式也是將自己準備好的su程序文件放到中,只是其借助來刷入su,此外,也會將應用也刷入到系統中。
如果中的任何應用都可以不加限制的使用Root權限,那么手機將沒有安全性可言,所以應用的目的就是對需要使用Root的應用進入管理,如果一個應用需要使用Root,會調用su程序,而該su程序是應用處理好的su程序,在下放權限前,會通知應用,從而實現對應用獲取Root的管理。
在 6.0時,在系統中新增了程序,該程序的主要功能便是監測系統API有什么好用的root軟件,如果發現系統API遭到修改或系統完備性檢測失敗,則會告知使用了該功能的應用,而這種更改系統文件并新增文件到系統分區的做法會被程序檢測出來,從而導致很多通過實現Root的用戶無法使用 Play、等使用了功能的應用,也無法獲得任何OTA更新(Over The Air ,無線下載更新)。
被收購且開源版只能支持到 7.0有什么好用的root軟件,扛起大旗。
實現Root的方式也是將自己的su程序利用刷入中實現Root。
的特點在于它會掛載一個與系統文件相互隔離的文件系統來加載自己的內容,的改動都發生在這個獨立的文件系統中,不會影響到系統本身的文件,從而避免被檢測。
與類似,不止提供Root的功能,還提供管理應用獲取Root的功能,從而避免任意應用亂用Root。
我們可以將看成一個文件系統,該文件系統通過巧妙的設計實現了各種功能且不對系統文件進行直接修改。
因為也有自己的模塊系統,所以很多人會拿與做對比(與獲取Root沒有啥關系)。
的原理是通過劫持系統的進程來加載自己的功能(進程是App啟動時要fork的進程),顯然,需要對文件系統進行相應的修改,容易被檢測出來。
*聲明:本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。