1. 程式人生 > >獲得 android 的 root 許可權

獲得 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
下載越獄軟體包,並把 su 拷貝到 adb/tools 內

開始~

插入 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