HTC J 最新OTAでのroot化&アンロック

今まで初期ファームウェアの人しかroot化できず、OTAを当ててしまったり、
修理に出した人はroot化することができない状態でした。
しかし、今回のSense4.1神アップデートは、何と私達にroot化までもさせてくれるのです!

神アップデートについては、前回の記事に記載してあります。

HTC JがSense4.1にアップデート!

このアップデートにより、様々な不具合修正や機能追加が行われ、神アップデートと称されていました。
しかし、root化まで出来るようになるとは本当に神アップデートです!

●何故root化できるようになった?

今までのファームウェアだと、何故かadb backup/restoreというAndroid4.xに搭載されている、
データのバックアップ/リストア機能が使えませんでした。
意図的に使えなくしているのではなく、多分不具合だったのでしょう。
この件に関しては、過去の記事で考察しています。

HTC Jでadb backupが正常動作しない件

しかし、今回のアップデートでどうやらこの機能の不具合修正が行われたらしく、
正常に機能するようになりました。

そして、この機能にはroot化できる穴があるのです…
他の機種たち(Xperia GX, Nexus7など)はこの方法をつかってroot化しているようです。

そう、この機能が使えるようになったということは、
同じ方法でHTC Jもroot化できるのです!

早速始めましょう。

●root化&アンロック方法


【10/11 12:30追記】
いつもお世話になっているHTC速報さんが、早速rootkitを作成してくださいました。
下記の長いコマンド操作がしたくない方は、ツールを使ったほうが早いですね。
リンクはこちらです。

HTC J Valente : root化について (HTC速報Dev) | HTC速報
http://htcsoku.info/?page_id=662 


以降は、rootkitを使わずに自力でroot化&アンロックをする方法を記載しています。

基本的には、以前XOOMをroot化させる記事を書いたのですが、それと同じ事をしています。

adb restoreを用いたXOOMのroot化

しかし、今回はHTC J向けに書き直します。

尚、一時root取得後のアンロック方法は、

au ISW13HT HTC J 公式アンロックを非公式で行う root化まで #ISW13HT #HTCJ:適当に更新diary
http://livlyislandvicecity.blog.so-net.ne.jp/2012-06-07 

こちら様のサイトの内容を参考に、というかほぼそのまま写させてもらいました><!
なので、上記リンク先も読むと役に立つかもしれません。

これから先に書いてあることを実行すると、保証が受けられなくなります!
必ず自己責任で行なってください。データや端末が破損するなどしても、私は一切の責任を負いません。
root化を行うと、今後のOTAが正常に当てられなくなるなどの問題も発生します。
もう一度言いますが、必ず自己責任でお願いします。

自己責任で行う方は、先に進みましょう。
尚、手順の途中でデータが初期化されるため、必要ならバックアップを取っておきましょう。 

まず、@goroh_kunさんが公開して下さったF-10D向けのキットをダウンロードします。

https://docs.google.com/file/d/0B8LDObFOpzZqc00tY2ZvQ080aEk/edit 

必要なのは、f-10d.abというファイルです。
readme.txtにはroot化の方法が書かれています。
F-10D向けとなっていますが、HTC Jにも、またそれ以外の機種にも対応できる汎用的なファイルです。

f-10d.abをダウンロードしたら、readme.txtの内容に従って操作します。
コマンドは全てPC上で行います。

1. データを送り込む

adb restore f-10d.ab

実行すると、以下の様な画面が現れるので、「データを復元する」を押します。
パスワードは空欄でOKです。

2. 送り込んだデータの確認

adb shell ls -l -d /data/data/com.android.settings/a/

drwxrwxrwx system   system
というような結果 が返って来ればOKです。

3. さらに確認

adb shell ls -l /data/data/com.android.settings/a/

file00からfile99までのファイルが存在することを確認します。

4. 一度、生成したファイルを削除します。

adb shell rm /data/data/com.android.settings/a/*

5. 実際に/data/local.propを作成する作業に入ります。

adb shell "while : ; do ln -s /data/local.prop /data/data/com.android.settings/a/file99; done"

このコマンド(改行されて表示されている場合は1行で入力してください)を実行すると、

link failed File exists

というメッセージがひたすら表示されます。
このプロンプトを開いたまま、別のプロンプトを立ち上げます。
新しく開いたプロンプトで、もう一度1.を実行してください。
「データを復元する」を押したら、link failed…と表示されている側のプロンプトは
Ctrl+Cキーなどで終了して閉じてください。

6. 生成されたか確認する

adb shell ls -l /data/local.prop

-rw-r–r– system   system     524288 1970-01-16 22:18 local.prop
このように、存在を確認できればOKです。
No such file or Directoryなどと表示された場合は、手順を間違えている可能性があります。

ここまで行ったら、

adb reboot

で Androidを再起動します。

再起動すると、壁紙だけ表示されて操作不能になると思います。が、adbで操作するので問題ありません。
もし画面がいつまで経っても消灯しない場合、電源ボタンを押して消灯させましょう。

この時点で、

adb shell

を実行すると、プロンプトが$ではなく#になっていることを確認します。
#がroot権を持っているという証です。

これで、一時rootを獲得できました!
次に、ブートローダーをアンロックします。(これで保証が無くなる)

まず、CIDが記録されているmmcblk0p4を抜き出します。

adb shell
# dd if=/dev/block/mmcblk0p4 of=/sdcard/mmcblk0p4
# exit
adb pull /sdcard/mmcblk0p4 mmcblk0p4ORIG

これで、カレントディレクトリにmmcblk0p4ORIGというファイルが保存されているはずです。
このファイルをバイナリエディタで編集します。私はStirlingというソフトを使いました。

ファイルを開くと、「KDDI_801」という箇所(8文字)が見つかると思います。
これを、「11111111」(8文字)と置き換えます。
同じ数字が8つ並んでいるCIDはSuperCIDといって、これによりアンロックが可能になります。

文字列を置き換えたら、mmcblk0p4MODというファイル名で保存してください。
次に、これをHTC Jに書き戻します。

adb push mmcblk0p4MOD /sdcard/mmcblk0p4MOD
adb shell
# dd if=/sdcard/mmcblk0p4MOD of=/dev/block/mmcblk0p4
# sync
# reboot bootloader

最後のコマンドを実行すると、Androidが再起動し、Fastbootモードへ移行します。
白背景の画面が現れたら、

fastboot getvar cid

と入力します。ここで、

cid: 11111111
finished.

と表示されていればOKです!
次に、HTCDevのBootloader Unlockのページを開きます。

http://htcdev.com/bootloader/

Select Your Deviceで、一番下のAll Other Supported Modelsを選択し、Begin Unlock Bootloaderを押します。
ログインが必要なので、アカウントを持っていない人は登録してから先に進んでください。

後は、指示に従って進めていってください。
最後まで到達すると、メールでUnlock_code.binというファイルが送られてきます。
このファイルを使ってアンロックするので、PC上に保存してください。

保存したら、HTC JをFastbootモードへ移行させます。
Fastbootモードになったら、

fastboot flash unlocktoken Unlock_code.bin

と入力します。すると以下の様な画面が表示されます。

内容をよく読み、同意する場合はYesを選択し、電源ボタンを押します。
これにより、ブートローダーがアンロックされます。

ブートローダーがアンロックされると同時に、保証が無くなり、さらに初期化されます!!

これでブートローダーがアンロックされましたが、データが初期化されたため、root権が無くなっています。
なので、上述のadb restoreを用いて一時rootを取得する所までやり直します。(1〜6を実行し、再起動)

一時root権を獲得したら、 完全rootを取ります。
簡単に言えば、/systemをrwでリマウントし、suやbusybox, Superuserを導入し適切にパーミッションを設定すればOK。
良く分からない人は、2chのID:F2CMorxXさんの書き込みを参考にしましょう。

http://anago.2ch.net/test/read.cgi/smartphone/1338050087/50-52

導入が終わったら、生成されている/data/local.propを削除します。
これを削除しないと、動作がかなり不安定になります。(というか操作不能?)

adb shell
# rm /data/local.prop

ファイルを削除したら、再起動しましょう。
これで、正しくホーム画面が表示され、操作可能になるはずです。

rootになれるか確認してみましょう。

adb shell
$ su
#

このように、suコマンドが正しく実行でき、#表示になれば成功です。

これで完全root&ブートローダーのアンロックは完了です。お疲れ様でした。
カスタムROMなども導入できるようになっているので、色々試してみましょう!


    • taro
    • 2013年 1月 2日 6:08pm

    質問させてください。上記のsuperCID化に向けて、教示の通りやっています。エディターで書き換えるところまでできまいしたが、最後の書き戻す箇所# dd if=/sdcard/mmcblk0p4MOD of=/dev/block/mmcblk0p4
    がうまくいきません。具体的には、書き込みができたよに表示されますが、fastboot getvar cidでは元のまま書き換わっていません。
    もう少し正確にいうと、HtcT328Wという中国発売のモデルで、これに台湾のROMを焼いて使っています。
    CIDがことなるため、OTAが実行できず、SuoerCID化を試みています。
    じたがって、mmcblk0pのファイル名も異なりますが、この機種用のものを見つけ出し、エディター編集は完了しています。最後のSDカードから本体へ書き戻す箇所がうまく実行できていないように見えます。

    この作業にはS-offは不要との認識ですが、はやり必要なのかとか考えていますg。
    何かヒントをいただければ幸いです。

    よろしくお願いします。

      • tako0910
      • 2013年 1月 2日 11:53pm

      私も詳しくないので間違っていたら申し訳ないですが、
      確かmmcblk0pXを書き換えてSuperCID化する方法は、Snapdragon S4のみ出来る方法だと認識しています。

      HtcT328Wは調べた所、S4では無いようですのでこの方法は使えないかもしれません。
      とすると、SuperCID化にはS-OFFが必要であると考えられます。

        • taro
        • 2013年 1月 3日 3:41pm

        ご丁寧にありがとうございました。
        気長にいろいろやって見ます。

    • k
    • 2013年 2月 4日 1:12am

    はじめまして

    1 adb shell
    2 # dd if=/dev/block/mmcblk0p4 of=/sdcard/mmcblk0p4
    3 # exit
    4 adb pull /sdcard/mmcblk0p4 mmcblk0p4ORIG

    のコマンドを試したんですがmmcb~のファイルが出力されていないようです
    順序通りにやっているはずなんですが。。。
    どこにあるんでしょうか・・・?

      • tako0910
      • 2013年 2月 4日 1:39am

      「#」はプロンプトに表示されている#を表しています。
      #まで一緒に入力していませんか?

      順序通りにやれば、端末側の内部SDストレージに2の手順でmmcblk0p4が出力され、
      4の手順でPC側のカレントディレクトリにmmcblk0p4ORIGが出力されるはずです。

    • Sơn quạ
    • 2013年 6月 26日 12:31am

    Oh my god, I do it ok.

    • 匿名
    • 2013年 10月 2日 12:17am

    すみませんが、質問させてください。
    1. データを送り込むで画面がでて復元を押しても
    2. 送り込んだデータの確認 でデータが送れていないのですが、何が原因かお分かりになりますでしょうか?

      • tako0910
      • 2013年 10月 2日 2:45am

      アップデート等によって、記事で紹介している脆弱性が対策されたのではないでしょうか。

        • 匿名
        • 2013年 10月 2日 9:51am

        HTC J Oneにて
        androidバージョン:4.1.2
        ソフトウェアの番号:1.05.970.2
        なので大丈夫だと思ったのですが、すでに対策されていたんですね・・・

          • tako0910
          • 2013年 10月 2日 10:31am

          これはHTC J等のroot取得方法の解説であり、HTC J Oneのものではありません。

          HTC J Oneだと、以下のサイトが参考になるのではないでしょうか。
          http://android.slateblue.tk/viewtopic.php?f=13&t=55

            • 匿名
            • 2013年 10月 2日 10:36am

            ご丁寧に有難う御座います。
            そちらのサイトを確認してみます。

  1. トラックバックはまだありません。