獲得 android 的 root 許可權
android 手機/平板大行其道的今天,獲得 root 許可權成了大家關注的話題。
據我所知,需要獲得 root 許可權的嵌入式作業系統,只有 ios 和 android。其中 ios 稱為越獄,隨著 ios 的釋出,有眾多高手開發了相應的傻瓜越獄工具。但是 android 應用非常廣泛,卻沒有統一的技術支援,所以只能由使用者自己進行許可權破解。因為 android 的核心是 linux,而 linux 中 root 擁有至高無上的許可權,所以一時間獲取 root 許可權也成了很多非 linuxer 關注的話題。
一鍵獲取 android root 許可權: Unviersal Androod (不適用所有機型)
為什麼要獲得 root 許可權呢?
其實日常應用並不需要 root 許可權,但是由於一些 android 的限制,我們必須擁有 root 許可權才能:
- 下載收費軟體
- 修改系統檔案
- 替換 hosts 檔案
- 截圖
- 等等 …
連截圖都要 root 許可權……(記得 ios 是 home+power 吧?)
消歧
使用 adb 連線到裝置獲得的 root 許可權並不是 裝置所擁有的 root。
也就是說,連線裝置成功後,我們對裝置的系統具有了 root 許可權,而裝置系統自身並沒有 root 許可權。例如您在 market 看到 need rooted device 字樣,那就是意味著您的裝置系統也具有 root 許可權。通常來說,root 指裝置自身可以執行 su 並獲得 root 許可權。
原理
adb ( android debug bridge ) 連結裝置,並使用具有 root 許可權的 adb 修改/替換裝置 su 檔案,從而具有 root 許可權。
前期準備
- 開啟您的 android 裝置,並執行如下操作: settings — application — development, 勾選usb debugging;
- 建立
/etc/udev/rules.d/51-android.rules 檔案,內容如下:
ubuntu:
1 2 SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"
arch:
1 2 3 SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=”0666″
SUBSYSTEM==”usb”,ATTR{idVendor}==”0bb4″,ATTR{idProduct}==”0c02″,SYMLINK+=”android_adb”
SUBSYSTEM==”usb”,ATTR{idVendor}==”0bb4″,ATTR{idProduct}==”0c01″,SYMLINK+=”android_fastboot”
其中 USB Vendor IDs 可以在 這裡 查到。
更改檔案許可權:
1 |
chmod a+rx /etc/udev/rules .d /50-android .rules
|
重新載入 udev 規則:
1 |
udevadm control –reload-rules
|
開始~
插入 usb 資料線,然後開啟終端,進入 adb/tools 目錄,執行
1 |
adb devices
|
Android adb devices顯示 ???????????? no permissions怎麼辦?
Windows:執行adb root
Linux:
adb kill-server
sudo adb root
此時顯示為:
List of devices attached 0123456789ABCDEF device
成功列出已連線的裝置後,執行
1 2 3 4 5 6 7 |
adb shell mv /system/xbin/su /system/xbin/osu # 備份原 su 檔案
adb push su /system/xbin # 把 adb/tools 的 su 檔案 推送到 android裝置 /system/xbin
adb shell rm /system/bin/su # 移除其他的 su 檔案
adb shell ln -s /system/xbin/su /system/bin/su # 軟鏈 su
adb shell chmod 6755 /system/xbin/su # 變更許可權
adb shell sync # 同步所有快取中的檔案
adb shell reboot # 重啟 android 裝置
|
(您需要根據您的裝置和設定變更執行的路徑)
等待裝置重啟完成後,可以在 adb shell 模式輸入:su(回車),會出現su: access granted, courtesy of www.magicandroidapps.com #等提示,代表成功了。
現在您可以使用root explorer,藍芽上網,截圖,martket enabler等工具啦~
為什麼我不需要 root
網上超多的 root 教程會讓你驚奇的發現,ROOT好簡單哦。但是看到新手一拿到手機就馬上刷ROOT,然後再問:取了ROOT有什麼用?
我們不能完全責怪使用者,因為很多教程都沒有強調刷ROOT可能導致的嚴重後果,會危及到你手上裝置的安全性。實際上,很多使用者根本不需要ROOT許可權!
在開始之前,請先問你自己以下2個問題:
1.你有幾次細讀過菜市場裡下載的軟體或者遊戲的使用協議?
2. 你有幾次看了軟體使用協議中的許可權要求(full internet, gps location, read contacts等等)後會問“嗯,為什麼這個遊戲需要這些許可權呢?”
你是不是還是照安裝不誤呢?
事實是,絕大多數的使用者根本不會理會 程式所 請求 的這些許可權,他們會照安裝不誤。
雖然 market 已經通知了使用者軟體所需的許可權,但這遠遠不夠。 因為使用者還是不知道這些許可權和安全有什麼關係。有些軟體也許沒有什麼惡意,但設計的卻極其的爛。因為開發者也是人,也會犯錯。有時,程式設計師會選擇一個他們認為安全的協議,但實際上卻是很危險的。又或者有些惡意軟體,可以讓別人遠端清空你的手機,或者將你手機裡的資訊傳送回指定伺服器後再清空你的手機(也許已經有這樣的軟體了)。我以上所說的這些例子表明,即便是非ROOT許可權的程式都有可能很危險,何況那些獲得ROOT許可權的程式呢?
其實,有些功能其實完全不應該需要ROOT許可權的。很多使用者取得ROOT許可權只是為了新增一些自己的主題,為了一些小眾的需求而已。
老實的說,看到越來越多的ANDROID新手認為不ROOT就不能正常工作,讓我感到很沮喪。(via)
參考資料
http://developer.android.com/guide/developing/device.html
http://www.kunli.info/2009/08/22/archlinux-android-adb-recognize-device/
http://henryh.cn/blog/android_cupcake_root.html
http://bbs.hiapk.com/thread-652917-1-1.html