Strek Froyoのroot

チロチロと調べる。SuperOneClickを使え、と。以上…

でも、Windowsじゃないし、Linuxでmonoを入れて使えとか面倒出しと言う事で手動で同じ事をやったので、その記録です。 まず、SuperOneClickとはなんぞ、と言うところから調べました。ポータルとしては、「[APP]SuperOneClick v1.7 (Root, Unroot, Enable Non-Market App) – xda-developers」です。どういうモノかというと、ホストPCで動かすことでデバイスのルート化を自動でやってくれるというものだそうです。簡単ですね。けど、何をやってるんでしょう?

動作内容ですが、どうやら以下のことをスクリプト的にやってくれているようです。

  1. Superuser.apkの入手
  2. rageagainstthecageの入手(これがroot奪取の本体です。ちなみにバイナリの実行ファイル。)
  3. Superuser.apk、rageagainstthecage、busybox(組込環境用に基本コマンドを一個にまとめたソフト)、suのデバイスへの転送
  4. rageagainstthecage、busyboxへの実行権限付与(700)
  5. デバイス側でのrageagainstthecageの実行
  6. adbのリスタート
  7. root獲得
  8. /systemの書き込み可でのremount
  9. busybox、suのテンポラリディレクトリから/system/bin/以下へのコピーと実行権限付与(755)
  10. Superuser.apkの/system/app/以下へのコピー
  11. reboot

と言う事で、手動でやるために必要ファイルの入手をします。

まずはSuperuser.apk。マーケットにもあるようですが、念のため、ローカルにDLをします。ポータル的なスレッドは「[APP] Superuser 2.3.6.1 – Now on the Market [2010-09-05] – xda-developers」です。リンクがありますので、ここからFroyo用の”su-2.3.6.1-ef-signed.zip”をダウンロードします。

次はrageagainstthecageの入手ですが…。exploittoolです。検索すれば一杯出てくるでしょうが、安全だと思われるのはXDAからリンクが張られているものだと思われます。http://stealth.openwall.net/xSports/RageAgainstTheCage.tgzです。ちなみに、このコードの開発者が次の脆弱性を指摘した実証コードを既に発表しているので、gingerbreadの時にはそちらのツールに変わっていることと思われます。

それでは始めていきましょう。

Superuser.apkはsu-2.3.6.1-ef-signed.zipの中にありますので、これを展開します。その際、このファイルがリカバリーから適応できるファイルになっているために要らないディレクトリ構造がついてきますが、気にしないようにしましょう。気になる人はunzipのオプションを使って

$ unzip -j su-2.3.6.1-signed.zip system/app/Superuser.apk system/bin/su

として下さい。カレントディレクトリに展開されます。

次はrageagainstthecageの展開。普通にtarballを展開すると、RageAgainstTheCage/ディレクトリに二つほど実行ファイルが入っていますが、rageagainstthecage-arm5.binを使います。exploid2-arm5.binがオリジナルですが、一部の機種用に変更を加えたモノになります。

 

これらをデバイスに転送し、実行権限を与え、実行します。(途中でbusybox無しで行けることに気がついたので、ちょっと改変しています)

$ adb push rageagainstthecage-arm5.bin /data/local/tmp
$ adb shell chmod 700 /data/local/tmp/rageagainstthecage-arm5.bin
$ adb shell
(remote) $ cd /data/local/tmp
(remote) $ ./rageagainstthecage-arm5.bin

ずらっとコメントが出て、adbから切断されるので、adb kill-server、adb start-serverしてから、再度接続するとrootに成っているはずです。あとは、/system以下へのインストールなので

$ adb shell
(remote) # mount -o rw,remount -t yaffs2 /dev/block/mtdblock6 /system
(remote) # exit
$ adb push Superuser.apk /system/app/
$ adb push su /sytem/bin/
$ adb shell chmod 4755 /sytem/bin/su

以上で、root可能になりました。ちなみに、この方法だとbusyboxはインストールされていないので、titanium backupの初回はエラーが起きますが、「お困りですか?」から専用busyboxをインストールすれば問題有りません。

コメント