為什麼Android 6.0 獲取 Root 許可權需要刷入第三方內核?

以前只需要在TWRP / CWM等recovery下刷入SuperSU卡刷包就可以實現root

然而Android 6.0之後,好像新加入了某些機制,需要刷入第三方boot.img解除這些限制後再刷入卡刷包,才能root成功

我估計和SELinux有關係,還有呢?


其實刷的不是內核,而是開機初始化腳本,因為只有init進程才有那個許可權去啟動su守護進程,而在Android裡面所有啟動腳本都是以RamDisk形式打包在boot.img裡面的,因而需要刷入boot.img

至於以前為什麼不需要?因為以前有個開機會被以root許可權執行的install-recovery.sh在系統分區裡面而不是boot分區,所以可以通過修改這個文件來達到啟動su守護進程的目的,但後來似乎是沒了,或者是因為SELinux的原因而不再可行。

從安全形度考慮,這是必須茲瓷的咯。


其實你應該慶幸還能刷boot.img,啟動時內核對整個system分區進行文件系統完整性校驗,修改了直接拒絕啟動,同時沒有任何進入fastboot
和recovery的入口的日機我都見過
其實從保護小白的角度來說這沒什麼不對,問題是中國的android環境實在太差


正是因為內核裡面添加了SElinux policy才導致單純加入su並不能給普通應用提權,需要刷入一個自定義內核才能解決問題。

實際上cyanogenmod和aokp這些第三方rom廠商之前也都是自定製boot image,打開如adb root這樣的功能的


安卓升級經常會對內核的啟動機製做修改,不僅僅是安卓6.0,當初安卓5.0剛發布時不也是需要刷第三方內核,等chainfire大神更新吧,後面會有支持6.0的SuperSu的


推薦閱讀:

為什麼安卓系統不給用戶root的許可權?
android手機(小米)root後,修改hosts後,hosts不生效?
國行機如何在不root情況下裝谷歌服務?
如何刪除G7手機系統自帶程序?

TAG:RootAndroid | Android | Linux內核 | AndroidM |