DO NOT PAY FOR JAILBREAK YOUR DEVICE!

最近、『NTTドコモのSIMカードでLTEを使えるようにする』『ソフトバンクやKDDIで月額を払わなくてもテザリングができるように』などのフレーズで『CommCenter* patch』や各種キャリアバンドルをインストールする代行業者があるようで、たいへん多くの「どのような関係性があるのか」「無償で提供しているように見せかけてカネを取るのか」「いくら儲かるのか」といった問い合わせを受けています。

これらの悪質な業者と我々は、いっさい関係がありません。Jailbreakは無償で提供されるべきものであり、これを商用利用すべきものでもありません。 [続きを読む »]


2011年6月6日月曜日

CommCenterClassic patch for iOS 5 Beta 1 (9A5220p)

For foreigners
Use our cydia repository for quick patch CommCenter(Classic). Thank you for visiting our blog!

iOS 5 Beta 1における旧来のCommCenterは、"CommCenterClassic" というものに変わりました。/System/Library/Frameworks/CoreTelephony.bundle/Support/ には CommCenter と CommCenterClassic のふたつがありますが、前者はCDMA 2000やLTEなどの(iOS的に)新しい規格へ対応するもののようです。

GDIDに対応していないSIMカードを採用するiPhone発売済みキャリア(※)では相変わらずAPN設定がiPhone向けとされるものに依存しますので、旧来と同じようなパッチを作ってみるためにCommCenterClassicをPC側へ取り出して、まずはダンプしてみましょう。

CommCenterClassicを逆アセンブルしてみる

Appleの提供するMac OS X/iOS向け開発環境『Xcode』には otool という便利な逆アセンブラ(※厳密には逆アセンブラにとどまらない)が付属しています。以下のように利用すると逆アセンブルされたテキストファイル CommCenterClassic.dump が取り出せます。


$ otool -VvTt ./CommCenterClassic > CommCenterClassic.dump

旧来のパッチなどと比較して、パッチ対象先の該当アドレスを探してみましょう。


000866de f06deaea blx 0xf3cb4 ; symbol stub for: _SecKeyRawVerify
000866e2     2800 cmp r0, #0
000866e4     bf08 it eq
000866e6 f04f0a01 moveq.w sl, #1 ; 0x1
000866ea     4658 mov r0, fp
000866ec f06ceba2 blx 0xf2e34 ; symbol stub for: _CFRelease
000866f0     9802 ldr r0, [sp, #8]
000866f2 f06ceba0 blx 0xf2e34 ; symbol stub for: _CFRelease
000866f6     4650 mov r0, sl
000866f8     b003 add sp, #12
000866fa e8bd0d00 ldmia.w sp!, {r8, sl, fp}
000866fe     bdf0 pop {r4, r5, r6, r7, pc}

どうやらパッチしたい該当アドレスは866f6にあるようです。これを次のように書き換えるのが目的です。


000866de f06deaea blx 0xf3cb4 ; symbol stub for: _SecKeyRawVerify
000866e2     2800 cmp r0, #0
000866e4     bf08 it eq
000866e6 f04f0a01 moveq.w sl, #1 ; 0x1
000866ea     4658 mov r0, fp
000866ec f06ceba2 blx 0xf2e34 ; symbol stub for: _CFRelease
000866f0     9802 ldr r0, [sp, #8]
000866f2 f06ceba0 blx 0xf2e34 ; symbol stub for: _CFRelease
000866f6     2001 movs r0, #1
000866f8     b003 add sp, #12
000866fa e8bd0d00 ldmia.w sp!, {r8, sl, fp}
000866fe     bdf0 pop {r4, r5, r6, r7, pc}

なお、含有するリソースなどの関係で、otoolの出力アドレスは実際のファイル内より+1000されています。なので、856f6がより正しい対象アドレスとなります。

実際のパッチ作業

iPhone側へsshして、以下のように作業を行って手動でパッチをあてます。ldid コマンドと xxd コマンドのために、それぞれ "Link Identity Editor" と "Vi IMproved" をCydiaなどからインストールしておく必要があります(※他にも依存するパッケージがあるかもしれません)。


$ su -
# export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
# cd /System/Library/Frameworks/CoreTelephony.framework/Support/
# cp ./CommCenterClassic ./CommCenterClassic.bak
# echo "00856f6: 0120" | xxd -r - ./CommCenterClassic
# chmod 755 ./CommCenterClassic
# ldid -s ./CommCenterClassic
# killall CommCenterClassic

これで以前と同じように署名のないキャリアバンドルを使用することができるようになりました。タイプマスクも見たところ変わっていないようです。

なお、キャリアロゴ画像に TS_CARRIER_*_1only_.png というものが新設されています。"Transparent Shadowed"なロゴ(FSOと違い立体的なもの)のようで、これはおそらくNotification Centerなどで利用されるものだと思います。

0 件のコメント:

コメントを投稿