2013年6月16日日曜日

Android 4.0.3(ICS)のroot化・・・F-11D(V26R42B)の場合

ビルド番号がV26R42Bでfastbootと青LEDモードが無くとのことで、この方法を利用したroot取得はできなくなったようです。

なので、Androidの脆弱性(exploit)を突いた方法をメモ

1.adb接続
USB Driverのインストールとadb接続 F-11D編を参照

2.exploitコードの入手とexploitプログラムのビルド
※exploitコードはhttps://github.com/hiikezoe/break_setresuidのあたりから入手可能
※ndk-buildはndk-build環境を整える・・・Windows7 64bitの場合を参照
C:\> ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

3.exploitプログラム,suプログラムの転送
※suバイナリはhttp://androidsu.com/superuser/のあたりから入手可能
※Windows上のコマンドプロンプトからAndroid端末にプログラムを転送する
※/data/local/tmp/でないと後の手順でプログラムを実行できない
C:\> adb push exploit /data/local/tmp/exploit
C:\> adb push su /data/local/tmp/

4.プログラムの実行
※Windows上のコマンドプロンプトからAndroid端末のShellを開き、実行するためのパーミッションを付与しプログラムを実行する
C:\> adb shell
shell@android:/ $ chmod 755 /data/local/tmp/exploit
shell@android:/ $ /data/local/tmp/exploit
shell@android:/ # ←$が#に変わり一時的にroot権限に昇格!

5.suプログラムをシステム領域にコピー
※読み込み専用のシステム領域を書き込み可能な状態にして、システム領域にsuプログラムを配置する
shell@android:/ # mount -o rw,remount /system /system
shell@android:/ # dd if=/data/local/tmp/su of=/system/bin/su
shell@android:/ # chown root.root /system/bin/su
shell@android:/ # chmod 06755 /system/bin/su

6.Superuserをインストール
Google PlayでSuperuserを探してインストール

7.Suバイナリの更新(suバイナリが古い場合)
infoタブを開いて、su binaryをタップ

アップデートをタップ

これでroot化は完了

26 件のコメント:

  1. 初めまして。
    一つ質問なのですが、
    exploitコードを別な方法でビルドしまして
    "ant"というもので.apkにしたのですが

    むう"氏の場合どのような形で排出しましたか?
    この手の知識が乏しいもので、かなりググったり
    F-03Dの方法を使ってみたりしたのですが
    できなくて困っています><

    返信削除
  2. 「排出」というのは何を意味してますか?

    返信削除
    返信
    1. 申し訳ありません。
      表現がよくわからなかったですね^^;

      ビルドしたあと完成したファイルの拡張子のことをお聞きしたつもりです。

      削除
    2. ndk-buildでビルドしたものはもともと拡張子なしの単一実行ファイルなので、apkとは別物です。
      apkでやるのであれば、apkのなかでsuバイナリの配置まで行うコードにしないといけないのではと想像します。

      削除
    3. なるほど....
      ということは、むう"氏が紹介しているこの記事のやり方が
      一番ラクに作業できるということですかね?

      それぞれの作業工程はひと通りやってみて
      残りできないものがexploitコードのビルドでしたので
      助かりました...

      といってもコマンドを実行してもエラーでビルドができないのですが...w

      申し訳ないのですが、また不明な点が見つかり次第
      こちらのコメントにて質問をしてもよろしいでしょうか?
      身の回りでこういうことをしているのが自分だけでして...
      どうかよろしくお願いします^^;

      長文失礼しました。

      削除
    4. 私もそれほど長けている訳ではありませんが、わかる範囲で答えさせていただきます。
      私の時はndk-build時に特にエラーもなくすんなり通ってしまいました・・・

      削除
    5. こんばんわ。
      返答の件。ありがとうございます。
      一応exploitコードの作者様 hiikezoe氏に申し出てみたところ"Android.mk"のプログラムコードにミスがあったようでした。
      無事自分もビルドはできました^^

      その後なのですが...
      ビルドファイルにパーミッション755を付与したあと。
      root acceesをする段階で
      "F-11D (V26R42B) is not supported."
      との1文が....

      むう"氏の場合はそのまますんなりできたようですが...

      原因はわかりますでしょうか..?

      削除
    6. main.cの中の
      static supported_device supported_devices[]
      という配列で、サポート対象を宣言しているようですので
      { "F-11D", "V26R42B" , 0xc00fdac8 },
      が無いようでしたら、加えてみると通るかも知れませんよ。

      削除
    7. main.cの中を覗いてみたところ
      サポート宣言はされているようです...

      削除
  3. hiikezoe氏にもう一度問い合わせたところ、V26R42Bを指定するアドレスが以前と違がったと返信をいただいて、fix版をアップしてもらい、再度ビルドしなおしたところ
    無事root取得することができました。

    ここ数日に渡り大変ご迷惑をお掛けしました...
    ありがとうございました^^

    ブログの方、これからも読ませていただきます!
    頑張ってください^^
    では。

    返信削除
    返信
    1. おめでとうございます!
      報告有難うございました。

      削除
  4. はじめまして。
    以前にLinuxにてAndroidの開発環境を整えていたこともあり
    exploitプログラムをLinuxでビルドを行なったのですが
    "F-11D (V26R42B) is not supported."
    とでて先に進めませんでした。
    そこで質問なのですが
    exploitプログラムはWindows上でビルドしたほうがよろしいのでしょうか
    できれば出力されたexploitプログラムの容量も教えていただけたらな、とおもいます

    返信削除
  5. すいません、わたしの勘違いでした
    画面上を確認してみると「$」から「#」変わっておりRoot取得ができました
    すごく記事は参考になりました、ありがとうございました

    返信削除
    返信
    1. 成功おめでとうございます!
      記事が参考になって良かったです。
      私はwindows上でビルドしましたよ。

      削除
  6. ここを見てやっと成功しました!感謝します!
    これからもブログ拝見させて頂きます、ありがとうございました☆彡

    返信削除
    返信
    1. おめでとうございます!
      報告有難うございました。

      削除
  7. はじめまして。
    exploitプログラムのビルドで悩んでいます。
    "Compile thumb : break_setresuid <= main.c
    ./main.c:27:29: fatal error: device_database.h: No such file or directory
    compilation terminated.
    make: *** [obj/local/armeabi/objs/break_setresuid/main.o] Error 1
    と、なってしまいます。お助けください。

    返信削除
  8. 私もmazさんと同じです。
    Windows8,7 32bit,64bitで管理者権限で行いましたがダメでした。

    返信削除
    返信
    1. 割り込みで失礼します。
      私もお二人と同じエラーで困っています。
      でも、No such file or directoryからは脱出できたので報告です。

      exploitコードのダウンロードはhttps://github.com/hiikezoe/break_setresuidから行いますが、
      そのまま「Download ZIP」にすると、サブフォルダの中身が空っぽです。
      このため、4つのフォルダマークの付いた先で「Download ZIP」して合計5つのファイルを
      ダウンロードして、それぞれのフォルダに展開してビルドすると、山の様にWarningが発生して、
      最後はFatalエラーで終了しました(;_;)

      あと一息…なのでしょうか?

      筆者様、お助け頂けると幸甚に存じます。

      削除
    2. 解決できました!

      Download ZIPではうまくいかなかったので、Gitというツールを使用してダウンロードしてみたところ、そのままビルドできました。
      http://msysgit.googlecode.com/files/PortableGit-1.8.4-preview20130916.7z
      これを展開するとbinというフォルダがありますので、プロンプトでこのフォルダに入り以下のコマンドを入力します。
      git clone --recursive https://github.com/hiikezoe/break_setresuid
      するとbreak_setresuidというフォルダができますので、そこに移動して次のコマンドです。
      ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk
      するとlibs\armeabiというフォルダの中にbreak_setresuidという拡張子無し75KBのファイルができます。
      あとは記事の3以降ですが、exploitは全てbreak_setresuidに読み替えて下さい。

      V26R42BのF-11Dにも関わらず無事にroot化に成功し、xposedとdatasim patcherのセットでセルスタンバイを解消できました。
      むう゛様、そして各種ツールの作者の皆様、解説サイトの皆様に心より御礼を申し上げます。

      削除
    3. root化成功おめでとうございます!

      なかなか返信できず申し訳ありませんでした。
      そして、自己解決できた旨ご報告いただきありがとうございます。

      削除
  9. exploit codeとはどれでしょうか?
    サイトにあるもの全てをDLして、exploitとして送ったのですができません。

    教えてください。

    返信削除
  10. いきなりすいません。ISW12kではbreak_setresuidでroot化して、CWMを焼くことは可能でしょうか。ご教授ください

    返信削除
  11. F-11Dの場合での回答になってしまいますがCWMを焼けるか否かはroot化されている事が条件ではなくfastbootが使えるかに関わって来ると思いますよ。

    root権限あるから強引に入れることもできるのかも知れませんが。。。

    返信削除
  12. 回答有難うございます。ISW12K用のCWMが公開されているので多分焼けると思うのですが。CWMの焼き方が分かりません。ソースファイルのみが公開されていて、コンパイルの方法がわかりません

    返信削除
  13. 最後のレスから一年半 まだF11D現役の人も居るかな?
    連休中に新しいSIMフリー端末に乗り換えました。
    もう廃棄してよいF-11D(V26R42B)をうわさのKingo ROOTでROOT化したらあっさり出来ました。
    過去の苦労はナンだったのか?
    最初 USBデバッグをONにしても接続できず焦りましたが、カメラとして接続(win7)であっさり接続できました
    あとは待つだけ ROOT とれました(^^)/

    返信削除