L-04Cのframework.odexを逆アセンブル

とりあえず、L-04Cのframwork.odexを逆アセンブルするべくbaksmali 1.4.2使うもregCount does not match the number of arguments of the methodのエラーが出て失敗。調べてみると古いbaksmaliなら展開出来るってなハナシがあったのでbaksmali 1.2.6を使うと本当に成功。どのバージョンが使えるのか1.4.2〜1.2.6まで片っ端から試してみる。1.4系や1.3系は全て失敗。1.2系の最新版だった1.2.8で成功。出来たoutフォルダのcom\android\internal\telephony\gsm\GsmServiceStateTracker.smaliを開いて見ると、4618行目に「.method private regCodeToServiceState(I)I」を発見。4710〜4727行目にある内容が書き換えるべき箇所だと思うんだが、:pswitch_data_22ではなく、:pswitch_data_3cで始まってけどいいんだろうか?あとは:pswitch_xxが15行並んでるので0から数えて2番目の値がServiceState.STATE_IN_SERVICEを返してる箇所で、他の値はServiceState.STATE_OUT_OF_SERVICEを返してる箇所じゃないかと思う。そう考えるなら同じ値のところが疑わしいので、他機種で書き換えるべき箇所とされているところから共通となりそうな値は35か。そう考えるならXperiaシリーズと同じ箇所の書き換えで良いような気はするんだけど…。Android 2.2なのでAPIレベルは8でいいハズ。

    :pswitch_data_3c
    .packed-switch 0x0
        :pswitch_25 ← Motorola DROID Pro / DROID 3
        :pswitch_37 ← この値が必要になる
        :pswitch_35 ← Xperiaシリーズ
        :pswitch_2c ← Galaxyシリーズ、Desireシリーズ
        :pswitch_35
        :pswitch_39
        :pswitch_a
        :pswitch_a
        :pswitch_a
        :pswitch_a
        :pswitch_35 ← Motorola DROID Pro / DROID 3
        :pswitch_a
        :pswitch_35 ← Xperiaシリーズ
        :pswitch_35 ← Galaxyシリーズ、Desireシリーズ
        :pswitch_35
    .end packed-switch