HTL22 HTC J One SIM アンロック試行錯誤のまとめ

au にかえる割の条件変更の前に駆け込みで HTC J One を購入しました。(その後キャッシュバック祭りに乗れず結果として失敗だったわけですが・・・)

この一つ前の機種である HTC J Butterfly は SIM フリーに出来るということなので、その後継機種もできるはず、ということで解除に挑んでみました。
が、初めての挑戦でうまく行かず手詰まりになってしまったので、同じ徒労感を味合う人が減ることを祈りつつ、試行錯誤の記録を残してみることにします。

方法をご存知の方いらっしゃいましたら、コメントもしくは @bb_qq までこっそり教えていただけると喜びます・・・(内緒にしますので・・・)

追記:解除方法が公開されました。

以下の内容は root 取得+S-OFF 済み前提です。

Sprint 化

同じ CDMA の海外版の Sprint HTC One ではデバッグメニューを使った解除ができるということなのですが、日本版では当然のごとく省かれていました。

そこで Sprint 版の ROM を焼いてみたのですが、ダメでした。2ch に modem_st1/modem_st2 もアップされていたので、ベースバンドと一緒に焼いて試してみましたがやはりダメでした。モデムが起動せずに一定時間後に再起動してしまいます。

エンジニアリング版 HBOOT の利用

GSM の HTC One では HBOOT を書き換えて、そこからデバッグ用のコマンドで SIM ロックが解除できるようです。そこでダメ元で試してみましたが、やはりダメでした。

HTC J Butterfly 用ロック解除アプリの解析

一つ前の機種の HTL21 HTC J Butterfly では SIM ロック解除をワンクリックでできるアプリがある、ということなので逆コンパイルして解析してみました。Windows 版はスクランブル化されているようなので、Android 版を dex2jar と jd を使いデコンパイルしました。

肝心なところはパスワード付きの zip ファイルをダウンロードするようになっていたので、これを力ずくで解析したところ、改造された radio.img と misc.img が出てきました。(暗号化強度の弱い zip だからたまたまできたわけですが・・・)

これで改造前の radio と比較すれば解決の糸口が見つかるかも、と思いきや radio のバージョンが 0.22.10.0917 と明らかに開発版のバージョンになっていて、改造前の radio をネット上から見つけることができませんでした・・・(開発主は HTC の中の人の可能性が高そうです。)

しょうがないので、ベースバンドチップ用のobjdumpで逆アセンブルして比較してみましたが、市場に出荷された一番古いバージョンの 1.00.10.1127_3 と中身が違いすぎて撃沈しました。(ちなみにネット上の評価機の写真は 1.00.10.1127 でした。)

ベースバンドチップの逆アセンブル解析

HTC の SIM ロック解除系のコマンドは AT@SIMLOCK ということがわかっていたので、この文字列リテラルを頼りに某チュートリアルを参考にしながら逆アセンブルコードを解析してみました。

が、手がかりになりそうな文字列への参照ほとんど剥がれていて、なおかつ VLIW のコードを読むのは辛すぎるので諦めました・・・

以下の文字列がちゃんと命令列から参照されていればまだやりようがあったのですが。
mmgsdi_kddi_lib.c:Skip KDDI UIM lock checking for non-KDDI configuration
mmgsdi_kddi_lib.c:Non KDDI card - No RUIM or CSIM exists on card

Sprint 版のデバッグメニューの移植

Sprint 版のデバッグメニューは
  • /system/app/HtcOMADM_SPCS.apk
  • /system/app/DMCommandService.apk
  • /system/app/EPST.apk
  • /system/bin/dmagent
  • /system/lib/libDMCmd.so
 あたりで構成されていることがわかっていたので、これらの署名を付け直しつつ移植してみました。

結果、
am start com.redbend.vdmc/com.htc.omadm.test.TestMainActivity
でデバッグメニューが起動し、SIMLOCK を選ぶと logcat に成功したっぽいログが出ていましたが、何も起こりませんでした。radio が Sprint でないと意味が無いようです。以前 Sprint の radio はどうやっても動かせなかったので断念。

NV 書き換え

Galaxy Nexus では nv_data.bin を書き換えればロック解除ができていたので、同様の方法を探していたところ CDMA 機では CDMA Workshop で書き換えられるっぽいということがわかりました。

早速
setprop sys.usb.config mass_storage,adb,diag,diag_mdm
して、ドライバをインストールし NV を吸い出してみました。 7000 番代半ば以降は OEM 領域ということなので、それっぽいところを探してみたところ 30000-30157 あたりが HTC 独自拡張領域のようでした。そこでこの辺りを適当にいじくり回してみましたが、変化は特に無くて手詰まりです。



コメント

このブログの人気の投稿

国産キャリア版Xperia 1 (802SO) のbootloaderをunlockしてrootを取得する

Synology ds918+ に 2.5Gbps / 5Gbps の USB LAN を接続する

Xperia 1 (802SO) のrootを何も失わずに取得する