INFOBAR A02 IMPRESSION_J : アンロック可能化についての考察 (HTC速報Dev)
現在の状況
- temproot = YES
- CID書きかえ = NO
- アンロック = NO
初回記載:2013/03/03
INFOBAR A02については恒例となって居ますがCIDはKDDI向けの「KDDI_801」となっており通常では http://htcdev.com/ でのアンロックが行えなくなってしまっています。
A02をアンロックが行えるものに変化させるためにはCIDをSuperCIDに書き換える必要が有るのですがDROID DNAのアップデートを皮切りにCIDブロックの書き換えプロテクトをHTCはやっと行い、それに巻き込まれる形でINFOBAR A02も対策済みで出荷が行われてしまいました。
このCIDブロックの書き換えプロテクト自体はsbl2のブロック(mmcblk0p2)で行われている模様で、古いsbl2を焼き込めば対策を回避できるとの事なのですがINFOBAR A02自体は古いsbl2が存在しないので、姉妹機(同プラットフォーム機)のsbl2を書き込んでみようかと考えている最中ではいます。
ですが書き込むためには一度そのブロックの破壊が必要なのでRUUかOTAファイルが必要となり、今RUUを手に入れられるように色々回っている最中ではあります。
長々と考察を書いてしまいましたがHTCはHTC J butterflyで利用したdiag関連のexploitが修正されていなかったのもあり、現状としてはgoroh_kun氏のがuevent_helperのアドレスを発見してくれたお蔭でtemprootを取得する事が出来ています・・!
うし、Infobar A02は一時rootいけたかな
— goroh_kunさん (@goroh_kun) 2013年3月1日
再起動後に巻き戻されてしまう物の、システムブロックのマウントも可能となり一時的ではありますがシステムの書き換えが可能になるところまで実現しています!
INFOBAR A02 temproot、systemマウントまで
準備物(殆どgoroh_kun氏作成物となります。公式配布が行われたらそちらのリンクも掲載したいと思います。)
- diaggetroot.apk (INFOBAR A02 1.14.971.2専用版)
- getroot
- su
- diagwritevalue
- busybox
http://www.androidfilehost.com/?fid=9390334956548391729
INFOBAR A02をデバッグモードに入れ、各ファイルを配置・インストールしていきます。
adb install diaggetroot.apk
adb push getroot /data/local/tmp/getroot
adb push su /data/local/tmp/su
adb push diagwritevalue /data/local/tmp/diagwritevalue
adb push busybox /data/local/tmp/busybox
adb shel chmod 744 /data/local/tmp/getroot
adb shel chmod 744 /data/local/tmp/su
adb shel chmod 744 /data/local/tmp/diagwiritevalue
adb shel chmod 744 /data/local/tmp/busybox
getrootとdiagwritevalueが実行可能になりました。
本体側に出来ている「BreakSuidDiag」を起動し、「HelloWorld!」と表示されればgetrootが実行されました。
ターミナル側で
adb shell
$ /dev/su
すると、管理者権限(#)が得られます。(仮に得られなかった場合は、Wi-FiのON/OFFを行った後に再度行ってみて下さい。)
busyboxでシステムなどのマウントを行います。
./data/local/tmp/busybox mount -o remount / /
./data/local/tmp/busybox mount -o remount,rw /system /system
./data/local/tmp/busybox mount -o remount / /
一回目は改ざんチェック(TAMPERED)が入るので再起動するかと思われます。
再起動後はまた/dev/suから行う事によって正常にマウントが行えますので、再度行ってみて下さい。
これでシステム内部へ一時的な書き込みが可能となります(再起動後元に戻る)
busybox経由で有ればdiagwritevalueでLSM解除を行わずにシステムブロックのマウント・一時的な書き込みが行えましたが探っている途中に方法として発見して下さって頂いているので、メモとして記載しておきます。
./data/local/tmp/diagwritevalue 0xc0ba328c 0xc01b0280 0xc0ba3244
cat /sys/module/diagchar/version
./data/local/tmp/diagwritevalue 0xc0c58910 4 0xc0ba3244