最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Android系統(tǒng)中的root權(quán)限獲得原理

 更新時間:2015年08月04日 12:18:50   作者:zinss26914  
這篇文章主要介紹了詳解Android系統(tǒng)中的Root權(quán)限獲得原理,安卓基于Linux,所以原理也相當(dāng)于Linux中的root用戶,需要的朋友可以參考下

前言
一直很好奇Android Root的原理,恰好最近碰到了一個跟Android默認帶Root權(quán)限的問題,這里順便記錄一下Android系統(tǒng)root的原理。

原理
Android是基于Llinux內(nèi)核的開源操作系統(tǒng),與Ubuntu系統(tǒng)類似,所以在Android里獲取root權(quán)限其實和在Linux系統(tǒng)下獲取root權(quán)限是一回事。在Linux系統(tǒng)下獲取root權(quán)限的方法是在命令行執(zhí)行sudo或者su,接下來輸入提權(quán)密碼就可以獲取root權(quán)限了。Android系統(tǒng)其實也是這樣,例如應(yīng)用層程序開發(fā),在root過的手機上運行root權(quán)限的代碼如下所示:

  Process process = Runtime.getRuntime().exec("su"); 
  DataOutputStream os = new DataOutputStream(process.getOutputStream()); 
  ...... 
  os.writeBytes("HelloWorld!\n"); 
  os.flush(); 

我們可以看到,Android應(yīng)用程序獲取root權(quán)限也是需要執(zhí)行su命令,因此Android能夠root的密碼都在su程序上。但是,Android本身是不想讓你獲取root權(quán)限的,因此大部分手機出廠都是user版本,默認是不帶su這個二進制程序的。所以你想獲取Android的root權(quán)限,第一步就是要把編譯好的su文件拷貝到Android手機的/system/bin或/system/xbin目錄下(為什么要拷貝到/system目錄下,是因為這個分區(qū)是沒有nosuid限制的,同時/system/bin和/system/xbin又都是系統(tǒng)環(huán)境變量PATH里的路徑,可以直接執(zhí)行su)。我們先假設(shè)你可以把編譯好的su程序放在xbin或者bin目錄下,接下來你可以在Android手機的adb shell或者串口下輸入su提權(quán)了。
Linux命令行下輸入su之后,是需要輸入root密碼才能夠提權(quán)的,但是Android里的su和Linux里的su是不一樣的,Android里的su是不靠驗證密碼的,而且需要驗證你之前的權(quán)限是什么。意思是,如果你是root用戶,那你可以通過su切換到別的用戶,比如shell、wifi、audio等。但是如果你是root之外的其他用戶,就不能切換到root了,會提示你permission denied。也就是說,用root運行su才有用,但是這個時候我沒還有root權(quán)限怎么辦?這就是接下來要討論的問題。
我們在Ubuntu下查看/usr/bin/passwd文件的權(quán)限,如下圖所示:

201584121826750.jpg (611×46)

這個文件的權(quán)限比較特殊,Linux用戶一般都知道文件分為r、w、x權(quán)限,那這個s是神馬意思呢?這里回答一下,s代表當(dāng)任何一個用戶執(zhí)行該文件的時候都擁有文件所有者的權(quán)限,這文件所有者是root。簡單來說,就是不管誰執(zhí)行這個文件,他執(zhí)行的時候都是以root身份來執(zhí)行的。
看到這里,大家是不是都有思路了,也就是說,即使我不是root用戶也可能以root用戶的身份來執(zhí)行程序,那么我把一個所有者是root的su程序權(quán)限標志位設(shè)置為-rwsr-xr-x,那么不管是誰執(zhí)行它,都是以root身份執(zhí)行。這就牛逼了,su果斷可以執(zhí)行成功,那你也就可以順利的獲取root權(quán)限了。

破解
原理都清楚了,那root的過程其實就是分兩步:
1. 把一個所有者是root的su拷貝到Android手機上。
2. 把su的權(quán)限標志位設(shè)置成-rwsr-xr-x。
寫成代碼大概如下所示:

  cp /sdcard/su /system/xbin/ 
  chown root:root /system/xbin/su 
  chmod 4755 /system/xbin/su 

代碼看起來很簡單,但是想真正的運行成功,以上代碼每一句都需要root權(quán)限執(zhí)行。我擦,一下回到解放前,跟先有雞還是先有蛋的問題類似,代碼運行需要root權(quán)限,而代碼本身的目的就是獲取root權(quán)限,成了一個封閉的死循環(huán)了。但是所幸Android系統(tǒng)有Bug,因此就給了你打破這個死循環(huán)的機會。
打破的方法就是找一個本身已經(jīng)有root權(quán)限的進程來運行這個3行的shell腳本,這樣腳本就可以順利執(zhí)行了。但是已經(jīng)有root權(quán)限的進程都是出廠時候就裝到手機上的,代碼寫死了,你沒法控制它執(zhí)行自己的代碼啊,這個時候就需要查找漏洞了。例如Android2.3 root權(quán)限的zergRush漏洞就是利用一個擁有root權(quán)限的進程棧溢出漏洞。具體利用漏洞的方法大家就可以自行g(shù)oogle了。

防止root
通過上述分析,我們可以簡單的理解,解決Android系統(tǒng)能夠su提權(quán)的方法就是把su文件干掉就可以了。

相關(guān)文章

  • Spring?Boot如何接入Security權(quán)限認證服務(wù)

    Spring?Boot如何接入Security權(quán)限認證服務(wù)

    Spring Security?是一個高度可定制的身份驗證和訪問控制的框架,提供了完善的認證機制和方法級的授權(quán)功能,本文通過案例將Spring Security整合到SpringBoot中,要實現(xiàn)的功能就是在認證服務(wù)器上登錄,然后獲取Token,再訪問資源服務(wù)器中的資源,感興趣的朋友一起看看吧
    2024-07-07
  • idea2023設(shè)置啟動參數(shù)、單元測試啟動參數(shù)

    idea2023設(shè)置啟動參數(shù)、單元測試啟動參數(shù)

    在使用IDEA進行開發(fā)時,我們可以通過設(shè)置一些啟動參數(shù)來優(yōu)化開發(fā)環(huán)境的性能和體驗,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • idea中開啟Run Dashboard 和 快速復(fù)制項目并改變端口的方法

    idea中開啟Run Dashboard 和 快速復(fù)制項目并改變端口的方法

    這篇文章主要介紹了idea中開啟Run Dashboard 和 快速復(fù)制項目并改變端口的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • springboot實現(xiàn)定時任務(wù)@Scheduled方式

    springboot實現(xiàn)定時任務(wù)@Scheduled方式

    這篇文章主要介紹了springboot實現(xiàn)定時任務(wù)@Scheduled方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • eclipse實現(xiàn)ECDSA數(shù)字簽名

    eclipse實現(xiàn)ECDSA數(shù)字簽名

    這篇文章主要為大家詳細介紹了eclipse實現(xiàn)ECDSA數(shù)字簽名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • JavaWeb HttpServletResponse對象及常用方法

    JavaWeb HttpServletResponse對象及常用方法

    這篇文章主要介紹了JavaWeb-HttpServletResponse對象,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • SpringBoot中@Transiactional注解沒有效果的解決

    SpringBoot中@Transiactional注解沒有效果的解決

    這篇文章主要介紹了SpringBoot中@Transiactional注解沒有效果的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成簡單demo

    struts2.2.3+spring3.1.0+mybatis3.1.0框架整合集成簡單demo

    本篇文章主要介紹了struts2.2.3+spring3.1.0 + mybatis3.1.0框架整合,結(jié)合在一起實現(xiàn)用戶的增刪改查功能,有需要的可以了解一下。
    2016-11-11
  • Spring事務(wù)管理零基礎(chǔ)入門

    Spring事務(wù)管理零基礎(chǔ)入門

    事務(wù)的作用就是為了保證用戶的每一個操作都是可靠的,事務(wù)中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就?回退到事務(wù)開始未進行操作的狀態(tài)。事務(wù)管理是Spring框架中最為常用的功能之一,我們在使用Spring?Boot開發(fā)應(yīng)用時,大部分情況下也都需要使用事務(wù)
    2022-10-10
  • Java實現(xiàn)二維碼QRCode的編碼和解碼與示例解析

    Java實現(xiàn)二維碼QRCode的編碼和解碼與示例解析

    本文主要介紹Java實現(xiàn)二維碼QRCode的編碼和解碼,這里給大家一個小示例以便理解,有需要的小伙伴可以參考下
    2016-08-08

最新評論

惠东县| 房产| 荃湾区| 九江市| 浪卡子县| 达州市| 苏尼特右旗| 玉林市| 福海县| 南昌市| 毕节市| 子洲县| 迁安市| 环江| 万全县| 工布江达县| 秀山| 聂拉木县| 革吉县| 四平市| 嘉定区| 新绛县| 伽师县| 特克斯县| 金溪县| 新竹县| 清水河县| 辽中县| 寿宁县| 苗栗市| 永新县| 友谊县| 天祝| 兴业县| 遵化市| 姚安县| 湄潭县| 定南县| 礼泉县| 柘城县| 鄂温|