Site Meter

2010年2月28日

Rooting Tattoo

就如標題所述,這篇文章的內容主要是解釋如何取得 HTC Tattoo 的 root 權限。 在經過幾翻努力後, xda-developers 上的高手群終於有人在 2 月 19 號正式取得 root 。 由於 Tattoo 沒辦法用刷降的方式取得 root 權限,所以取得 root 的方式和之前的其他機種完全不同,這次流出來的方法是利用 Linux 2.6.29 的一項安全性漏洞,很幸運(?)的是 HTC (或 Google) 並沒有把它們修掉,於是我們就可以利用這項安全漏洞拿到一個 root shell 。

其實在 2 月 21 號的時候我就已經依照 xda-developers 上的方法首次成功取得了 root shell ,不過還卡在一個問題那就是 HTC 把 Tattoo 的 /system 封印住了,因此當時還沒有辦法在 /system 寫入任何東西,即使你重新以 rw 的模式掛載 /system ,你會發現可用空間是 0 ,你還是沒辦法動任何東西! Tattoo 的分割區裏面,具有 SUID 權限的也只有 /system ,也就是說如果你沒辦法把可用的 su 寫到 /system/bin 裏面的話,一切都是白搭! 不但一般需 root 的程式沒辦法應用,在手機重開機以後你的 root 權限也就隨之喪失。 所以基本上當時就算拿到了 root shell 也一樣不能做任何事情,因為不能動 /system 分割區一切就沒有意義,而且當時的破解工具 m6 效率不是很好,我整整花了大概一個半小時的時間才拿到 root shell ,當時版上也有很多人反應沒辦法使用。

一直等到大約 26 號左右, xda-developers 的高手群裡又有人丟出了個核心模組,掛上這個模組後就可以順利解開 /system 的封印了! 因此我在昨天,也就是 2 月 27 號晚間終於正式取得 root 權限並把 su 放到 /system/bin 底下了!

好了,接著進入正題。 所以如果要利用此法取得 root 權限的話,必須至少確定 HTC Tattoo 的 Linux 核心版本是 2.6.29 ,這在「設定」中的「關於手機」裏面可以看到。

因為此法是利用 Linux 核心漏洞的緣故,所以到時只要 HTC 放出 Tattoo 專用的 Android 2.1 ROM , Linux 核心一升級,這個方法就不再可用了!

除了確定系統核心版本以外,還需要一些工具才能順利取得 root 權限,你需要:

  1. Android SDK
  2. 一些破解工具 - MD5: 6d7f954201039bfdb16393fffcfd8772
  3. HTC Tattoo 專用的 USB 傳輸線一條以及電腦一台

接著是必要的警告任何 Hack 的動作都是有風險的! 而且以下步驟若操作不當確實有可能讓你的 HTC Tattoo 變成磚塊(就是死給你看)和喪失保固! 請你謹慎評估是否進行接下來的操作! 建議你至少應該熟悉 Android SDK 的使用方式操作 Linux 指令的基本能力對 Android 的目錄架構有基本認知以及有不成功便成仁的決悟再進行以下操作! 此外小的撰本文的目的僅止於記錄以及分享,我沒有能力也沒有義務擔保你手機的性命! 更無法承擔任何後果! 所以如果你連 root 是什麼鬼都不知道的話,請你立刻離開! 謝謝配合!

真是令人不蘇湖的鮮紅色,如果你確定沒有問題並且執意要繼續的話,就接著往下看吧! XD

由於小弟是慣用 Kubuntu 作業系統,因此以下操做一律以 Linux 為基準! 當然 Android SDK 也同時有 Mac OSX 以及 Windows 的專用版本。

首先請打開 USB 除錯模式:

接著請連上 USB 傳輸線,要開始囉! 為了避免不必要的權限問題來干擾我,我都會先換成(電腦的) root 來操作,接著把破解工具解開將裏面的東西 push 到 /data/local/bin 底下:
$ sudo -s
# adb push m7 /data/local/bin/
# adb push su /data/local/bin/
# adb push tattoo-hack.ko /data/local/bin/

通通都 push 好以後接下來開個 shell 把權限處理好,準備開始破解了:
# adb shell
$ chmod 755 /data/local/bin/m7
$ while do /data/local/bin/m7 ; done

然後你會看到 shell 噴出一大堆 像大便一樣的 東西,幸運的話,你應該就可以看到系統已經丟出一個 root shell 給你! 這個步驟就是主要取得 root 的關鍵,之前的破解工具 m6 跑這段要跑很久,但我自己試用的結果是 m7 都只要一下子就好了。 拿到 root shell 以後要先定義一下 PATH 環境變數:
# export LD_LIBRARY_PATH=/system/lib
# export PATH=/system/bin

好的接下來我們要來解除 /system 的封印。 首先先把 tattoo-hack.ko 掛上,再以 rw 模式重掛 /system ,接著 /system 應該就可以被寫入了。
# insmod /data/local/bin/tattoo-hack.ko
# mount -o rw,remount /dev/block/mtdblock3 /system

接下來我們要把關鍵指令 su 給安上去,先把原本的 su 移除,以破解工具裡頭確實可用的 su 代替:
# rm /system/bin/su
# cat /data/local/bin/su > /system/bin/su

因為 Android 內建沒有 cp 這個指令,用 mv 的話他又會丟一個跨裝置移動錯誤的訊息給你,因此利用 cat 和管線功能把 su 寫進 /system/bin 裏面。 接著不要忘記要幫 su 標上 suid ,這樣才能順利運作:
# chmod 4755 /system/bin/su

基本上做到這邊 root 的工作可以算是大功告成啦! 不過依據我自己的試驗結果,並不是每一次掛上 tattoo-hack.ko 都可以讓 /system/ 進入可被寫入的情況,好像必須要重新跑一次上面的破解程序才可以,因此如果你想把台灣大哥大內建的東西幹掉或者是安裝 busybox 這類東西的話最好趁現在免得麻煩! 此外, /system 是一個很重要的系統目錄,所以說千萬別把它搞壞了,砍東西前務必小心謹慎!砍錯東西造成的傷害很有可能是不可逆的。

好,當確定一切沒有問題以後,可以重開了:
# reboot

這個指令下去後手機應該就會開始重新開機,如果不裡你的話就自己按電源吧! 重開機完以後,你可以利用 ConnectBot 或是一些需 root 的程式測試看看,你應該已經可以成功 root 囉!

恭喜你! now you're free!

最後附上我參考的討論串: http://forum.xda-developers.com/showthread.php?t=635961

7 則留言:

  1. Hello,我不小心把 Plurk 跟 Twitter 的檔案給砍了..能請版主 dump 您的版本給我嗎? Thanks.

    回覆刪除
  2. To Fox:
    礙於版權上的理由,我不方便透過公開的管道給你,看你是要留個無關緊要的 EMail 我寄給你還是怎樣?

    回覆刪除
  3. 我發到你的 mobile01 的 PM 中了。 Thanks...

    回覆刪除
  4. 請問一下~
    我執行
    adb push m7 /data/local/bin/
    的時候
    ADB回應:
    adb server is out of date. killing .......
    * daemon started successfully *
    failed to copy 'm7' to '/data/local/bin/': Is a directory

    我用adb push 到TATTOO 的SDCARD可以WORK
    為什麼PUSH不進/data/local/bin/
    可以協助我嗎?

    回覆刪除
  5. 輸入su 已得到成功畫面
    但無法更改system/etc/wifi/tiwlan.ini的檔案
    有pull出來修改但無法 push回去
    一直無權限更改

    回覆刪除
  6. 版主你好..
    我對於android系統完全不了解
    但是..我想要讓我的TATTOO能夠做到幾個功能
    1.使用anetshare把手機當作分享器使用
    2.搜尋market全部軟體(如果能包括付費軟體更好)
    3.使用app2sd讓記憶體多一點
    爬文後了解需要ROOT權限..
    透過使用網友推薦方式"一鍵取得ROOT"方式
    但是安裝anetshare.等需要ROOT的軟體後..都出現沒有取得ROOT的訊息而無法使用
    能不能幫幫小弟解決?謝謝您~
    方便的話可以mail給小弟~
    lupinyalu@yahoo.com.tw

    回覆刪除
  7. 您好

    最近因為想裝 skype 所幾把 Tattoo 刷到 2.2 了, 只是開機後我就後悔了...(簡體+非標準的Market+改過的一堆東東...)

    現在想把它刷回原廠的, 卻找不到 ROM, 可否請您告訴我, 哪裏有台哥大1.6版的原廠 ROM 嗎?

    回覆刪除

請注意,在較舊的文章留言並不會馬上出現在回應區!