EPC VIA WM8650(root奪取編)「rootを狙え!」2011/06/02 13:26

Android端末なら、やっぱり、rootを取って、あれこれ自由にいぢりたいよね。
Android2.2系なら、SuperOneClick で一発OK。そう思っていたが、大問題が発覚。SuperOneClick って、PC(Windows)からUSB接続してrootを奪取するものだ。ところが、このEPCは、3つもあるUSBポートのすべてが、USB-Aタイプで、かつ、マスターモード(ホスト)で動作する。PCと接続するには、スレーブモードにならないとダメだ。これでは、PCと接続できない。古いAndroidなら、z4root という便利なアプリがあって、Android端末本体だけで簡単にルートが取れたんだが、z4rootが利用しているセキュリティーホールは、既にふさがれているらしく、z4root はもう使えない。他にroot取りのツールを探すも、使えそうなものは発見できず。
rootへの道は完全に絶たれた。

でも、rootは何としても取りたいよね。そこで、調べまくって、1週間も掛かってしまったが、糸口を発見。そして、牙城を崩せた。

非常に厄介な問題だったが、SuperOneClickで、どうやってrootを取るのかを調べてみると糸口があった。psneuterというファイルをAndroid端末に転送して、Android端末上で実行してrootを取っているようだ。psneuterであれこれ検索してみたら、参考になる情報が出てきた。

NexusOneにUbuntuを
[HOWTO] Root Nexus One 2.2.1 FRG83D without OEM unlock

psneuterは、adb(Android端末のアプリ開発で使用するデバッガー)の脆弱性を利用しているようだ。psneuterによりadbの脆弱性を突いて、一時的にrootを取るらしい。つまり、rootを取れても、adbで接続された先(つまり、デバック用で繋いでいるPC)から操作しないと何もできないって訳だ。やはり、USB経由で繋げないとダメなのか…

更に調べてみると、adbはネットワーク越しでも接続できるようだ。
ここの情報が参考になる。

SmartQ5 Android 開発Tips 1 (デバッグ方法)

なかなか奥深い。これらを参考にさせていただき、EPC のrootを取ってみる。

1. 必要なものを集める
  準備は、PC(Windows)上で行う。先ず、SuperOneClick を入手して、必要なものを取り出そう。

    [APP]SuperOneClick v1.9.1

  ここから、SuperOneClickv1.9.1-ShortFuse.zip をダウンロードする。ちなみに、xdaからのダウンロードには登録(無料)が必要なので、未登録なら、登録の作業はしておこう!
  このZIPファイルを解凍すると、その中に以下のファイルがある。

    Exploits\psneuter
    Root\Superuser.apk
    Root\su-v3

  もうひとつ、必要なものがある。Android端末上であれこれコマンドを実行するので、端末エミュレーターが必須となる。以下から入手しておこう。

    Android Terminal Emulator v1.0.29 apk
 
  ここから、ダウンロードすると、Term.apk が手に入る。

  SDカードを用意する。これらの4つのファイルをSDカードのルートフォルダーにコピーする。su-v3は、名前をsuに変更しておこう。これで、SDカードには以下の4つのファイルが入った。

    psneuter
    Superuser.apk
    su
    Term.apk

  上記以外に、PCからEPCへネットワーク越しにデバッグモードで接続する為に、adbも必要となる。Android SDK(開発環境)のインストールが必要になるところだが、利用したいのはadbだけだ。実は、先ほど入手した SuperOneClickv1.9.1-ShortFuse.zip の中にも adb が入っているので、それを使用すればよい。

    ADB\adb.exe

  これは、後ほど使用する。

2. EPC VIA WM8650での準備
  上記のSDカードをEPCにセットする。上部の通知領域に「SDカードの準備中」とかメッセージが出てから、消えるまで待つ。それから、以下の手順で操作。

・端末エミュレータのインストール
  ホーム画面にある「File Browser」を起動する。カーソルキーで選択してからEnterキーを押せば起動できるので、タッチパッドを操作しなくても起動可能だ。「File Browser」が起動したら。右カーソルキーで「SD」を選択してEnterでSDカードの内容を表示させる。カーソルキーで、「Term.apk」を選択してEnterを押せば、インストールが始まる。確認の画面が出るので、「インストール」を選んでEnter。「アプリケーションをインストールしました」が表示されたら、「完了」で一旦終了させる。「File Browser」の画面に戻るので、Escキーで終了させる。

・端末エミュレータの設定
  インストールしたままだと、フォントが小さかったり、画面の色が見にくかったりするので、端末エミュレータの設定を少し変更しておこう。
  ホーム画面右下隅の小さい四角が4×4並んでいるアイコンでアプリケーション一覧を表示させて、そこから「端末エミュレータ」を起動する。コンソール画面に切り替わるので、キーボードの「Zzz」キーを押してメニューを表示させて、設定で設定メニューを表示させよう。ここに、フォントサイズや色があるので、好みに合わせて設定する。設定が済んだら「Esc」キーでコンソール画面に戻ろう。
  端末エミュレータは、「exit」と入力してから「Esc」キーで終了できる。

・ネットワークへの接続とIPアドレスの確認
  自宅で無線LANを導入しているなら、ホーム画面の「Wi-Fi設定」から接続の設定をして、接続する。
  有線のLANで接続するのでもOK。PCと同じネットワークに繋いでおく。
  ここで、IPアドレスを確認する。端末エミュレータを起動して、以下のコマンドを実行する(「$ 」はプロンプトなので、「ifconfig」だけキーイン) 。

    $ ifconfig

  ここで表示される情報で、Link encap が Ethernet となっている方に表示されているinet addrの値(例: 192.168.12.34)をメモしておく。端末エミュレータは一旦、終了させる。

・ホーム画面の「設定」から、以下の2つにチェックを入れておく。
    「USB」→「ADB]
    「アプリケーション」→「開発」→「USBデバッグ」

  準備はここまで。

3.root取り
  以下は、PC(Windows)上から作業する。

・コマンドプロンプトを開く
  スタートメニューの「すべてのプログラム」の「アクセサリ」の所に「コマンド プロンプト」があるので、それを起動する。

・adbのあるフォルダーへ移動
  cdコマンドで、SuperOneClickv1.9.1-ShortFuse.zipを解凍したフォルダーへ移動する。さらに、そこのADBフォルダーに移動する。

・以下のコマンドを実行
  以下のコマンドで、EPC のadbサーバーに繋いで起動する。

    set ADBHOST=<先ほど調べたIPアドレス>
    adb kill-server
    adb start-server

  実行例: (「~>」部分はプロンプトなので、実行環境に合わせた表示になる)
    ~>set ADBHOST=192.168.12.34
    ~>adb kill-server
    ~>adb start-server
    * daemon not running. starting it now on port xxxx *
    * daemon started successfully *

    ~>

  上記の例の様に、「* daemon started successfully *」が表示されれば、OKだ。

・一時的なroot取り
  続いて、以下の手順でEPC に入りこんで、一時的にrootを取る。先ず、以下のコマンドでEPCに接続する。

    adb shell

  接続できると、「$ 」のプロンプトが表示される(「# 」と出るかもしれないが気にせず、そのまま続けよう)。これで、EPC をコマンド操作できるようになる(この時点では、まだrootにはなっていない)。ちなみに、EPC では、既にbusyboxが入っているので、いろいろコマンドが使える。
  ここからroot取りに入る! 以下のコマンドを順番に実行(「$ 」はプロンプトなので、入力しない事)。

    $ cd /tmp
    $ cp /sdcard/psneuter ./
    $ chmod 755 psneuter
    $ ./psneuter

  ここで、以下のメッセージが出て(出ない場合もある)、adbの接続が切れる。
  Windowsのコマンドプロンプト側に戻ってきて、「~>」なプロンプトが表示される。

    property service neutered.
    killing adbd. (should restart in a second or two)

    ~>

  ちょっと待ってから、以下のコマンドで、もう一度つなぎなおす。

    adb kill-server
    adb start-server
    adb shell

  今度は、「# 」のプロンプトが表示されるはずだ。そこで、rootが取れたかを以下のコマンドで確認する。

    # id

  以下の表示になればrootが取れている。

    uid=0(root) gid=0

  これ以外の表示になったら失敗しているので、初めからやり直し。

・恒久的にrootを取れるようにする
  suコマンドで、恒久的にrootを取れるように、suコマンドをセットする。以下の順に、コマンドを実行。

    # cd /sbin
    # cp /sdcard/su ./
    # chmod 4755 /sbin/su
    # exit

  これで、Windowsのコマンドプロンプト側に戻ってきて、「~>」なプロンプトが表示されたら、PC側からの作業は終了。

  ここからは、EPC で作業する。

・Superuserのインストール。
  Superuserは、rootの権限を管理するアプリだ。ホーム画面にある「File Browser」を起動して、「SD」を選択してEnterでSDカードの内容を表示させる。カーソルキーで、「Superuser.apk」を選択してEnterを押し、インストール。

・rootが取れているか確認
  一度、EPCの電源を落とす。電源ボタン長押しで、「電源を切る」を選んで、完全に電源を落とす。それから電源を入れ直して、再起動させる。
  起動したら、「端末エミュレータ」を起動。suコマンドを実行してみる。

    $ su

  ここで、Superuserのアプリが動いて、Superuserアクセスの許可を求めてくるので、「許可」する。「端末エミュレータ」の画面に戻って、プロンプトが「# 」に変わっていれば、root取りの確認完了だ。とりあえず、exitコマンドを2度実行して、「端末エミュレータ」を終了させておこう。

    # exit
    $ exit

・後始末
  本来、psneuterは一時的なroot取りしかできないはずだが、EPC では、本体を再起動しても、adbがroot取り状態のままになってしまう。このままでは、公衆ワイヤレスLANとかで接続した場合に、セキュリティーホールになってしまう。「設定」から、以下のチェックを外して、外部から操作されないようにしておくこと。

    「USB」→「ADB]
    「アプリケーション」→「開発」→「USBデバッグ」

  これで、root取り完了なので、後は、正規のマーケットを入れるなり、フォントを入れ替えて、中華フォントとさよならするなり、なんでも自由にできる!!
  その辺は、改めて書く予定だ。


コメント

_ DEADBEEF ― 2011/06/03 11:53

情報ありがとうございます。
記事の手順に沿って、無事にroot権限を取得できました。
手元のEPCは別ルートで入手したもののためか、/tmp ディレクトリを作る必要がありましたが、その他の部分については問題なく実行できました。

次は、マーケットを試してみます。

_ S.Poe ― 2011/06/05 00:27

DEADBEEFさん、無事rootが取れたみたいで、良かったですね。
ところで、製造ロットによって、/tmp があったりなかったりするんですね。
まぁ、たまたま / (ファイルシステムの方のルート)が、rw でマウントされて
いるので、mkdir /tmp で作れちゃうから、それでもいいかぁ(笑)。

_ g ― 2011/07/24 18:10

初歩的な質問で済みません。
EPCのroot化にはUSBリンクケーブルでEPC本体とパソコンを繋ぐ必要があるのでしょうか?
devise not foundと出るのでそれが原因かと思ったのですが・・・。

_ g ― 2011/07/24 18:33

自己解決しました。
お騒がせしました。

_ tomk5624 ― 2011/08/07 18:05

はじめまして。
貴重な情報ありがとうございます。
最近EPC-7000Sを手に入れたので、root化について調べていたところこちらの記事を見つけました。
概ね手順通りの作業で無事root化できました^^
また、マーケット導入についてもこちらの記事を参考にさせていただき無事行うことができました。

_ ぐぅす ― 2011/08/22 15:12

EPCの購入を考え、情報収集中にこのサイトを拝見
喜び勇んでの購入となりました。
概ね、無事root化終了!
価格以上の価値を感じる「おもちゃ」ですね!
有難うございます。

_ かこ ― 2011/08/28 08:30

貴重な情報ありがとうございます!
当方も/tmp ディレクトリがなかったですが、コメントにあるように
mkdir コマンドで作成してうまくいきました。
細かなフォローまで記事にしていただき、ありがとうございました。

_ 聖騎士 ― 2011/10/23 12:09

そんなもん、Modroid-11 liteって言うCFWを導入すればROOT化できるよ!!
かなり快適!!

_ S.Poe ― 2011/10/26 00:52

最近、全然、更新できてないので、情報を出せてないけど…、
今出回っているものは、多分、出荷時からroot化されている!
いろいろあって、先日、新しく購入したものは、adbで接続すると
既にrootな状態になっていたので、suをコピーするくらいでOKでした。
ROM焼きに関しては、しっかり調査してないので、良くわかりません。

それより、バッテリーの持続時間があまりにも短いので、
全然快適じゃないのが問題なんだよなぁ。
docomo回線→SK17i(b-mobile Fair)→WiFi→EPCって接続で、
特急あずさの中で使っていたら、EPCが1時間半でバッテリー切れ
になった(涙)。
最近のアキバは、部品屋激減で、リチウムイオン充電池がほとんど出回ってないため、置き換え可能な容量の大きい電池が見つからないし…。

_ 学生 ― 2012/04/18 22:26

ブログ読ませていただきました!
root権限取得のため書いてあるどうりにやっているのですが、一次的root取りできません。adb shell と入力してもデバイスが見つからないと言われます。
どうしたらよいのですか?それとADB\adb.exeはいつ使うのでしょうか?

_ S.Poe ― 2012/04/19 07:18

学生 さん、この機種は、製造ロット毎に、ROMの内容がマチマチな
ようで、最近入手された場合だと、ここに書いてある方法では、うまく
いかない可能性も高いと思います。

すみませんが、別の方法を、ご自身で探してみてください。

ADB\adb.exeは、「adb shell」ってやった時点で、もう使っているじゃ
ないですか? 「いつ使うのでしょうか?」って、どういう意味でしょう…

_ mitisugara ― 2012/09/20 09:38

MK-AR1も同様の手順にてroot取れました。
大変にありがとうございました!

トラックバック