手工root你的手機/root的原理

本文需要的基礎:
基本windows命令行操作、linux shell操作

===============================

說到root一個android,很多人連它本身的意思都不清楚

在linux系統中root用戶擁有至同無上的權力,當然也可以把整個系統搞崩潰
所以廠商一般在面向消費者的手機裏面禁用root權限。這樣確實使手機
穩定很多,但也失去了很多DIY的樂趣。所以要改機,先提權到root

正統的發行版linux中有一個su命令,用於普通用戶提權到root。
su本來在linux裏是不與其它程序關聯的,
在現在的android中su是與superuser.apk關聯的
也就是大家常看到的某某程序在想提權時,彈出的超級用戶授權提示
只要這兩個東西在系統裏面,那就能讓普通程序提權了

要把su安裝進去,又回到原點,沒root權限我怎麼拷文件進去呢?

國外一些黑客研究android內核代碼,搞定了一種破/解程序
現有的有兩個:
psneuter - android 1.5-android 2.2適用,執行完後可以adb root驗證
gingerBreak - android 2.3-android 3.0適用,執行完後需要執行/data/local/tmp/sh進入root shell
它們的原理過於複雜,不作講解。源代碼可以在網絡上找到

通過執行破/解程序,可以臨時得到root權限,
在這個權限時把你的su和superuser.apk拷入手機系統
這樣以後就可以隨時隨地獲取root權限,也就是真正地root了你的手機

說了這麼多,大家清楚了,Android提權的關鍵是三個東西, su + superuser.apk + 破/解程序
下面提供下載:
root_files.zip(399.3 KB, 下載次數: 76)

(這幾個文件在SuperOneClick和ZOC_FlashMaster中均有附帶)

===============================

好。這堂課真是文字太多了。。
下面是實戰過程:

我手上的milestone是android 2.2,使用psneuter和su-v2(SuperOneClick1.90)
例如我把這三個文件都拷在F:\,su-v2已經重命名爲su
一般android都使用臨時文件夾/data/local/tmp

有了上一堂課的基礎,我們可以使用adb來上傳這幾個必要文件
上傳文件
  1. F:\>adb push psneuter /data/local/tmp/
  2. 2183 KB/s (585731 bytes in 0.262s)

  3. F:\>adb push su /data/local/tmp/
  4. 884 KB/s (26264 bytes in 0.029s)

  5. F:\>adb push superuser.apk /data/local/tmp
  6. 1511 KB/s (196521 bytes in 0.127s)
複製代碼
linux中,可執行文件是需要權限的,普通的一般用755([-rwx][r-x][r-x])
我們把psneuter的權限改成755
  1. F:\>adb shell
  2. $ cd /data/local/tmp
  3. cd /data/local/tmp
  4. $ ls -l
  5. ls -l
  6. -rw-rw-rw- shell    shell      196521 2010-09-05 15:47 superuser.apk
  7. -rw-rw-rw- shell    shell       26264 2010-08-17 17:44 su
  8. -rw-rw-rw- shell    shell      585731 2011-01-08 18:02 psneuter
  9. $ chmod 755 psneuter
  10. chmod 755 psneuter
  11. $ ls -l
  12. ls -l
  13. -rw-rw-rw- shell    shell      196521 2010-09-05 15:47 superuser.apk
  14. -rw-rw-rw- shell    shell       26264 2010-08-17 17:44 su
  15. -rwxr-xr-x shell    shell      585731 2011-01-08 18:02 psneuter
  16. $
複製代碼
執行psneuter
可以看到命令提示符跳回windows的了,也就是adbd已經重啓
  1. $ ./psneuter
  2. ./psneuter
  3. property service neutered.
  4. killing adbd. (should restart in a second or two)
  5. F:\>
我們把/system/掛載爲可寫。由於adbd啓動需要時間,我加入了wait-for-device命令
可以看到,提示說remount成功
*如果提示無權限,說明你破/解程序不成功
  1. F:\>adb wait-for-device remount
  2. remount succeeded
我們現在把su和superuser.apk分別拷入系統
可以全程看見$提示符變成#了,表示你有root權限
  1. F:\>adb shell
  2. # cd /data/local/tmp
  3. cd /data/local/tmp
  4. # cp su /system/bin/ #--拷入su,有些人是放在/system/xbin的
  5. cp su /system/bin/
  6. # cp superuser.apk /system/app/ #--拷入apk
  7. cp superuser.apk /system/app/
  8. # chmod 4755 /system/bin/su #--su命令是需要超級權限的,所以是4755,具體參考linux文件權限
  9. chmod 4755 /system/bin/su
  10. # chmod 644 /system/app/superuser.apk #--apk一般是644
  11. chmod 644 /system/app/superuser.apk
  12. # exit
  13. exit
我們重啓手機
  1. F:\>adb reboot

  2. F:\>
好了,裝個rootExplore檢查一下看有沒有正常獲取ROOT權限吧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章