2009年11月17日星期二

[瀬戸のテーマ] Android 分享 – Root 權限

在取得 Root 權限之前……
Android 是建基於 Linux 的作業系統。(對這方面不熟悉的話,請先去深造一番。)
大家常用的微軟家作業系統 Windows XP,如不作其他使用者設定的話,預設的使用者就是 User Admin,即是有管理員權限的使用者。(如果不知道這是哪國語言的話,請先去深造一番。)
在 Linux 的系統中,擁有管理員權限的使用者稱為 Super User,縮寫為 SU,擁有 Root 權限。(這是 Linux 系統的架構,不用深究也可以。)
管理員權限可以說是至高無上,可以對系統內所有東西作變動,甚至乎不用經使用者同意而作變動。
所以一般來說,我們在使用電腦時,不會登入管理員權限的帳戶。(這就是微軟家的 Windows XP 最不安全的理由,大家在不知不覺下使用著 User Admin,讓第三方的程式隨時以最高權限工作。)

電腦的作業系統就說到這裡,現在說回 Android。
Android 預設的權限並非 SU。如果閣下還沒有 Flash 任何 Custom ROM 的話,應該是沒有 Root 權限。
如果開放自己手機系統的最高權限,作用就跟把金庫鑰匙放在金庫前一樣。所以如非必要,或不了解這是甚麼,放棄吧。



如何知道手機中的 Android 有沒有 Root 權限?
要知道自己手機上的 Android 系統有沒有 Root 權限非常簡單,不過在這之前也要了解一些東西。
Android 系統的 Root 權限,簡單地可以分做兩部份:

  1. ADB Mode
  2. 手機上
若不知道甚麼是 ADB 的話,可以在各大討論區爬文,或等小弟的更新文。
開啟手機的 USB 除錯模式。
利用 ADB Shell 指令,可以進入手機的 Terminal,如果看到 $ 的話,代表沒有 root 權限。
輸入 whoami,系統會傳回 whoami: unknown uid 10074,代表現在並非 su。
輸入 su 時,會傳回 su: no permission,代表沒有行使 su 的權限。

C:\Android>adb shell
$ whoami
whoami
whoami: unknown uid 10074
$ su
su: no permission
$ exit
exit

C:\Android>
在手機上,可以到 Market 下載 Terminal,有很多選擇,Better Terminal 不錯。
安裝好後啟動,會直接出現 adb shell 後的情況,whoami 和 su 也傳回一樣的情況。
如何取得 ADB Root 權限?
上面提到兩部份,其實 Android 系統真的頗安全,因為即使可以使用 ADB 來得到 Root 權限,在手機內也可以沒有 Root 權限。
所以,在這裡建議只開通 ADB 的 Root 權限。

首先,閣下必須 Flash 一個有 root 跟 adb 全部權限的 Recovery.img,小弟是使用 recovery-RA-magic-v1.2.3H.img 的。
在《
這裡》下載一個名叫 “su”的檔案,於到 ADB 目錄中。
讓手機進入 Recovery Mode,並連接上電腦。
在 cmd 下輸入以下的指令,把這個 su 的檔案抄進手機系統中。

adb shell mount /system
adb push su /system/bin/
adb shell chmod 4755 /system/bin/su
adb shell reboot
手機重啟後,可以再用上面的方法測試一次,會發現 adb shell 後,會出現 # 而非 $,這代表已是 su。
C:\Android>adb shell
# whoami
whoami
whoami: unknown uid 0
# exit
exit

C:\Android>
可是,在手機的 Terminal 中,情況會變成以下這樣。
$ whoami
whoami: unknown uid 10074
$ su
# whoami
whoami: unknown uid 10074
# exit
exit
$ exit
即使輸入 su 變成 Super User,但其實並沒有權限。
這樣即使有第三方的惡意程式在手機上執行,因沒有真正的 Root,對系統所做成的損害也會降至最底。
如何取得完全的 Root 權限?
在此再提醒一次,如閣下不知道自己在做甚麼的話,請不要繼續!
要開通完全 Root 權限,除了要把修正過的 SU 檔案放到系統內,還要把程式“Superuser Permissions”掛在系統中。
這個程式的作用是讓使用者去決定那個程式可以使用 Root 權限。
這是一個被動程式,當有程式使用 su 權限工作時,便會跳出來問你的決定。

*以下會以沒有更換 su 為前提來說明。
首先,閣下必須 Flash 一個有 root 跟 adb 全部權限的 Recovery.img,小弟是使用 recovery-RA-magic-v1.2.3H.img 的。
在《
這裡》下載名叫 “su”和“Superuser.apk”的檔案,放到 ADB 目錄中。
在 cmd 下輸入以下的指令,把這個 su 和 Superuser.apk 的檔案抄進手機系統中。

adb shell mount /system
adb push su /system/bin/
adb shell chmod 4755 /system/bin/su
adb push Superuser.apk /system/app/
adb shell reboot
手機重啟後,可以再用上面的方法測試一次,會發現 adb shell 後,會出現以下的畫面。
C:\Android>adb shell
# whoami
whoami
whoami: unknown uid 0
# exit
exit

C:\Android>
而在手機的 Terminal 中,情況會變成以下這樣。
$ whoami
whoami: unknown uid 10074
$ su
這時會出現左方畫面 →
請慎選!
# whoami
whoami: unknown uid 0
# exit
exit
$ exit
capture47
這樣,在 ADB 或是手機上的 Root 權限也開通了。
測試過的手機和系統版本:
    • HTC Magic(HTC Sense 官方更新前)
    • HTC Magic(HTC Sense 官方更新後)
    • HTC Hero
    • Hofo ROM(各版本)
發佈留言