現在android系統的root破解基本上成為大家的必備技能!網上也有很多中一鍵破解的軟體,使root破解越來越容易。但是你思考過root破解的原理嗎?root破解的本質是什麼呢?難道是利用了linux kernal的漏洞嗎?本文將簡單對root的破解原理進行分析。
android root許可權破解分析
》,本文只能說對root原理進行了方向性的描述,但是在一些具體的方面沒有描述清楚。本文將會對其進行一些必要的擴充套件和補充。
如果你進行過程式開發,在root過的手機上面獲得root許可權的**如下:
2: dataoutputstream os = new dataoutputstream(process.getoutputstream());
3: ......
4: os.writebytes("exit\n");
5: os.flush();從上面**我們可以看到首先要執行su程式,其實root的秘密都在su程式中,《
android root許可權破解分析
》中講到android系統預設的su程式只能root和shell可以用執行su,這個是安全的。如果把這個限制拿掉,就是root破解了!
下面我們仔細分析一下程式是怎樣獲得root許可權的,如果對linux的su命令熟悉的朋友可能知道su程式都設定suid位,我們檢視一下我的手機(已經root破解)上的su許可權設定,
我們發現su的所有者和所有組都是root,是其實是busybox的軟鏈結,我們檢視busybox的屬性發現,其設定了suid和sgid,並且所有者和所有組都是root。suid和sgid的作用是什麼呢?如果你不太清楚,請參考《
linux程序的實際使用者id和有效使用者id
》,這樣執行busybox的普通使用者,busybox執行過程中獲得的是root的有效使用者。su程式則是把自己啟動乙個新的程式,並把自己許可權提公升至root(我們前面提到su其實就是busybox,執行期它的許可權是root,當然也有許可權來提公升自己的許可權)。
再強調一下不光root手機上su需要設定suid,所有的linux系統上的su程式都需要設定suid位。請參考一下uc伺服器的su的許可權情況:
我們發現su也設定了suid位,這樣普通使用者也可以執行su程式,su程式會驗證root密碼,如果正確su程式可以把使用者許可權提高的root(因為其設定suid位,執行期是root許可權,這樣其有許可權提公升自己的許可權)。
這樣我們就可以看出其實android系統的破解的根本原理就是替換掉系統中的su程式,因為系統中的預設su程式需要驗證實際使用者許可權(只有root和shell使用者才有權執行系統預設的su程式,其他使用者執行都會返回錯誤)。而破解後的su將不檢查實際使用者許可權,這樣普通的使用者也將可以執行su程式,也可以通過su程式將自己的許可權提公升。
到這裡大家對root破解不感到神秘了吧。root破解沒有利用什麼linux核心漏洞(linux核心不可能有這麼大的漏洞存在),可以理解成root破解就是在你系統中植入「木馬su」,說它是「木馬」一點兒都不為過,假如惡意程式在系統中執行也可以通過su來提公升自己的許可權的這樣的結果將會是災難性的。所以一般情況下root過手機都會有乙個superuser應用程式來讓使用者管理允許誰獲得root許可權,也算是給系統加了一層保險吧!
如上是simon的個人對root破解的一些認識,如果有錯誤的地方,歡迎朋友們指正。
Android 系統 root 破解原理分析
4月23日 武漢 osc 源創會 es6開發體系實踐 現在android系統的root破解基本上成為大家的必備技能!網上也有很多中一鍵破解的軟體,使root破解越來越容易。但是你思考過root破解的 原理嗎?root破解的本質是什麼呢?難道是利用了linux kernal的漏洞嗎?本文將簡單對roo...
Android系統root破解原理分析
現在android系統的root破解基本上成為大家的必備技能!網上也有很多中一鍵破解的軟體,使root破解越來越容易。但是你思考過root破解的原理嗎?root破解的本質是什麼呢?難道是利用了linux kernal的漏洞嗎?本文將簡單對root的破解原理進行分析。網上有一篇文章已經對root破解的...
Android系統root破解原理分析
root破解過程的 size large 終極目標是替換掉系統中的su程式 size 但是要想替換掉系統中su程式本身就是需要root許可權的,怎樣在root破解過程中獲得root許可權,成為我們研究的重點了。下面我們先清點一下我們需要破解系統情況,假設需要破解的android系統具備如下條件 co...