android系統root與應用程序獲取root權限原理總結

首先root一詞來源於linux系統,linux系統不像XP系統它的權限管理分明。如果有root權限就獲取了系統的最高權限能做幾乎一切事情,而通常在android系統中廠商是不允許root的。但是還是有好多發燒友想要獲取root權限,這樣就尋找系統的各種漏洞來獲取root。下面我用最簡單的語言來分析:

系統如何獲取root權限;

系統已經root後應用程序如何獲取root權限。

                                                                                                    系統如何獲取root權限


   如果系統想要獲取root權限,那必須瞭解adb工具,也就是android調試橋工具,通過它可以操作系統。他的權限決定這系統的權限。它的權限決定這系統的權限,首先他是sdk下的adb工具,而在設備端有adbd服務在後臺運行,adbd的權限同時決定着adb的權限,adbd的源碼在system/core/adb下,最重要的語句是setgid(AID_SHELL);  setuid(AID_SHELL); adbd在運行這兩句代碼之前都是root權限的,而運行他後講的爲shell權限了。好,問題就出現這這裏,linux系統中有用戶進程數是有限定的,也就是有數目的,如果超過此數目,則在調用這個語句,就會發生錯誤,而問題是發生錯誤的時候,代碼並未做任何處理,沒有去檢測返回值,從而導致了這樣一個漏洞利用。程序可以不斷的fork()進程,也就是新建進程,直到shell用戶的極限。然後結束掉系統的adb進程,因爲結束了一個,就少了一個,所以立刻在fork一個處理,又達到了極限,因爲系統會在一定時間裏檢測系統是否有adb進程,如果沒有則會建立一個,這樣當系統建立一個adb進程後,去調用setgid(AID_SHELL);  setuid(AID_SHELL)兩句時其實已經發生了錯誤,但是代碼並沒有處理,繼續完好無損的運行adb進程。所以這個adb的系統進程就一直以root身份運行啦。。。。本總結來源於:

http://www.cnblogs.com/xiaoxiaoboke/archive/2012/02/13/2349723.html 

Android系統root破解原理分析(續)

http://blog.claudxiao.net/2011/04/android-adb-setuid/

Android adb setuid提權漏洞的分析

                                                                                             系統已經root後應用程序如何獲取root權限

 

系統root了,不代表應邀程序都能獲取root權限的,系統root了,adb進程具有root權限了,可以放肆的操作系統文件啦,而應用程序獲取root的權限的祕訣在於su程序中,破解Root權限的原理就是在手機的/system/bin/或/system/xbin/目錄下放置一個可執行文件“su”,這是一個二進制文件,而在android源碼中表示,只有root和shell可以運行su程序,而其他程序是沒有權限的。只要吧這個權限拿掉,那麼就可以破解root啦。而替換SU程序,對已已經root的手機就變得簡單多了,具體參考:http://www.cnblogs.com/xiaoxiaoboke/archive/2012/02/13/2349719.html

  現在大家瞭解root的原理了吧,好多工具都是利用了上述漏洞原理獲取的root權限。例如z4root。其實root無非是利用各種各樣的漏洞,但是現在的趨勢來看root也越來越陽光化了,root是個後門。把這個後門打開供用戶自由選擇。

 

另外筆者在提供一些其他此方面的參考鏈接:

http://blog.sina.com.cn/s/blog_456baf5e01013rnx.html

關於Android的Root有感

http://bbs.anzhi.com/archiver/?tid-4884866.html 

七種root方法總有一款適合你

http://blog.sina.com.cn/s/blog_75739773010171tm.html

Android手機Root授權原理細節全解析

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章