HTC J butterfly : アンロック可能化についてまでの考察 (HTC速報Dev)
2012年12月30日追記
@goroh_kun氏によりHTC J butterfly HTL21のtemprootが可能になりました!
au HTL21 HTC J butterfly での開発者アンロックが可能に!
その事により、以前から記載しているCIDブロックのSuperCID(11111111)への書き換えが可能になりアンロック不可能なHTC J butterflyのアンロックが可能になりました!
以下に方法をまとめておきます。
HTC J butterfly : アンロック可能化についてまで (HTC速報Dev)
2012年12月28日追記
KDDIの意向によりHTC J ButterflyはHTCDevにより開発者アンロック(ブートローダーアンロック)が出来なくなっています。
以前のHTC Jと同じSnapdragon S4となっており、本来S-OFFが必要なCID変更はCID記述ブロック(J butteflyはmmcblk0p5となっていた)のCIDをSuperCIDに改変したブロックを上書きする事により実現する事が出来る?模様です。(初回記載を参照)
ですが、Jcase氏が発見したcom.htc.usageのDROID DNAで利用したexploitはHTC J butterfly出荷時には既に対策されてしまっており、HTC J butterflyで公式アンロックを利用するためにCID記述ブロック(mmcblk0p5)を書き換えるために必要な管理者権限になる事が出来ない状態となっています。
ですが先日Quallcom製ドライバを搭載したAndroidデバイスに脆弱性が見つかり(http://www.rbbtoday.com/article/2012/12/12/99297.html)、この脆弱性を利用出来ればHTC J butterflyで管理者権限が得られるのではないかと言う所で話は終了しています。
goroh_kun氏によると
msmの脆弱性は今のところ、Qualcomm製の全端末で使えるはず。/dev/diagがあればOK。パーミッションが666の端末はshellから攻撃できるし、パーミッションが660の端末はPhoneアプリ経由で攻撃可能。任意のアドレスに任意の値が書けるもの。
— goroh_kunさん (@goroh_kun) 12月 22, 2012
と述べており、/dev/diagについて何かしら攻撃を行えばtemprootがQuallcom製のほぼすべての機種で行えるようになってしまっているようです。
/dev/diagについて手元のJ Butterflyと同じSense4+を搭載しているEVO4GLTEのパーミッションを確認した所666(rw-rw-rw-)ではなく660(rw-rw—-)となっていました。
初回記載
ですが、デザイニングスタジオなどで実機本体を確認した所HTC J Butterflyは同じようにキャリアの意向で開発者アンロックがブロックされているDROID DNAと同様・同等の方法でにアンロックが可能なのではないかと考えられます。
その理由は以下
- DROID DNA同様にmmcblk0p5ブロックがCID記述ブロックであった
- DROID DNAとは姉妹機
まだ実機がありませんし、未検証で何とも言えない状況なので以下の方法は参考程度に留めておいて下さい。
J Butterflyで以下の事を行ったとして文鎮化してもHTC速報は何の責任も持てません。
Thanks!
- オリジナル開発者のjcase氏
- Sean Beaupre
- 開発段階で一台文鎮化(DROID DNA)させたdsb9938氏
- その他のテスター様
※これはDROID DNAアンロック方法へのスペシャルサンクスです
HTC J butterflyアンロック方法(未検証)
発売後に塞がれたDROID DNAの開発者アンロック方法が公開、HTC J Butterflyの開発者アンロックも同様の方法で可能か?
ここで記載した事を参考に似たような事を行います。
準備物は以下
- backup.ab (300MB)
- CID記述ブロックのSuperCID改変版
- DNA_TeamAndIRC.zip(中のrunme.shのみ必要)
CID記述ブロック以外のファイルはここから手に入ります。
http://forum.xda-developers.com/showthread.php?p=34583031
J Butterfly専用CIDBLOCK.img
http://www.mediafire.com/?ie558y1gx7uezns
DROID DNAではCID記述ブロックのSuperCID生成アプリ(CIDGen.apk)が有るのですがHTC J Butterflyではないので手動で作業を行います。
J Buttefly実機のSuperCID化を行ったcid記述ブロックをこちらで用意しましたのでご利用下さい。
(CIDGen.apkで生成したDROIDDNAのCIDBLOCKを書き込むとQHUSB_DLOADの文鎮状態になります!!絶対にJ Butterfly用のものを利用してください!)
ですが一部自分の端末用に書き換えを行わなければなりません。
何かお好きなバイナリエディタで(自分はStirlingを利用しました)ダウンロードしたmmcblk0p5を開き、以下の画像の赤の部分に自分の機種の「IMEI」青の部分に「MEID」を記述してください。
IMEI、MEIDの確認方法は「設定>バージョン情報>電話ID」に記載があります。
例としてIMEIが「990000123456789」だった場合、MEIDが「99000098765432」だった場合は以下となっています。
(絶対間違えないように!!違う記述を行った物を書き込むと文鎮化する可能性が高まります!!)
CID記述ブロックの準備が出来たら後は書き込む作業のみです。
DROID DNAの方法とほぼ同様に操作を行ってください。
操作環境
- USBデバッグに入れていること
- バックアップが済み、初期化を行えている事
操作手順
先ほど作成し保存したCIDBLOCK.imgを「内部ストレージ」に転送する。
adb shell ls -l /sdcard/CIDBLOCK.img
で内部ストレージにCIDBLOCK.imgが存在するか確認する
adb push runme.sh /data/local/tmp/
adb shell chmod 755 /data/local/tmp/runme.sh
adb shell /data/local/tmp/runme.sh
runme.shを送り込み実行すると、「No such file or link failed」エラーが続くと思うのでそのままにし
adb restore backup.ab
別のターミナルを立ち上げbackup.abを実行し、「復元をする」をタップ後「復元が完了しました」と出たら先ほどのターミナルを「ctrl + c」などで停止
adb shell rm /data/data/com.htc.usage/files/exploit/*
adb shell mv /data/DxDrm /data/DxDrm_org
adb shell mkdir /data/DxDrm
adb shell ln -s /dev/block/mmcblk0p5 /data/DxDrm/DxSecureDB
adb reboot
J Butterflyが再起動するので、再起動後もう一度以下を行う
adb shell /data/local/tmp/runme.sh
adb restore backup.ab
別ターミナルで実行、「復元する」をタップ
adb shell mv /data/DxDrm /data/DxDrm_trash
adb shell dd if=/sdcard/CIDBLOCK.img of=/dev/block/mmcblk0p5
adb reboot bootloader
fastbootモードで立ち上がるので以下のコマンドでSuperCIDとなっているか確認
fastboot oem readcid
11111111と返ってくればHTC Devによるアンロックが可能になります。