Android 獲取ROOT權限原理解析

一、 概述

本文介紹了android中獲取root權限的方法以及原理,讓大家對android玩家中常說的“越獄”有一個更深層次的認識。

二、 Root的介紹

1. Root 的目的

可以讓我們擁有掌控手機系統的權限,比如刪除一些system/app下面的無用軟件,更換開關機鈴聲和動畫,攔截狀態欄彈出的廣告等。

2. Root的原理介紹

谷歌的android系統管理員用戶就叫做root,該帳戶擁有整個系統至高無上的權利,它可以訪問和修改你手機幾乎所有的文件,只有root才具備最高級別的管理權限。我們root手機的過程也就是獲得手機最高使用權限的過程。同時爲了防止不良軟件也取得root用戶的權限,當我們在root的過程中,還會給系統裝一個程序,用來作爲運行提示,由用戶來決定,是否給予最高權限。這個程序的名字叫做Superuser.apk。當某些程序執行su指令想取得系統最高權限的時候,Superuser就會自動啓動,攔截該動作並作出詢問,當用戶認爲該程序可以安全使用的時候,那麼我們就選擇允許,否則,可以禁止該程序繼續取得最高權限。Root的過程其實就是把su文件放到/system/bin/ Superuser.apk 放到system/app下面,還需要設置/system/bin/su可以讓任意用戶可運行,有set uid和set gid的權限。即要在android機器上運行命令:adb shell chmod 4755 /system/bin/su。而通常,廠商是不會允許我們隨便這麼去做的,我們就需要利用操作系統的各種漏洞,來完成這個過程。
特別說明:我們燒機中的Eng版本並沒有Root權限

3. Root的方法

從Root的原理我們瞭解到,root過程分三步:

a.       adb push su /system/bin
b.       adb push SuperUser.apk /system/app
c.       adb shell chmod 4755 /system/bin/su

若系統是eng版的,做到以上三步,那麼我們Root就大功告成,但實際是不行的。爲什麼呢?原因有三:

1、user版的/system路徑是隻讀權限,不能簡單寫入
2、 chmod需要Root權才能運行(死循環了)
3、有些系統在啓動時會自動將su的4755權限設成755,甚至直接刪除su

那麼針對這種情況,我們怎麼辦呢?非常簡單:燒一個eng版本的boot.img就行了
可以用展訊的燒錄工具,或者用fastboot模式從sd卡燒一個boot.img文件即可
至此,我們Root就成功了,可以用R.E(Root Explorer)在根目錄創建和刪除文件。

三、 深入理解Root機制

其流程是:

1.       Su 被用戶調用
2.       Su 創建了一個socket監聽
3.       Su 向Superuser發送了一個廣播,說是有一個程序要請求root
4.       Su 等待socket 數據接收。有超時處理。
5.       Superuser 界面收到廣播後,彈出一個對話框,詢問用戶
6.       Superuser 向傳來的數據中的socket寫回用戶應答結果。
7.       Su 根據socket得到的結果處理應該不應該繼續執行
8.       完成提權管理

superuser.apk這個程序是root成功後,專門用來管理root權限使用的,防止被惡意程序濫用。

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