in 未分類

【夢の出来事】しゃべってコンシェルvar2をauやsoftbankで使えるようにする


この記事はしゃべってコンシェル最新版の方法ではございません。
最新版の方法をUPする予定もございません
詳しくはこちら


しゃべってコンシェルがバージョン2になりました。
いろいろ機能アップしたようなのでauでも使えるようにしたいところです。
しかし、前回の記事で紹介した方法でやってみたところ失敗しました。
どうせ対策されると考えていたのでそれはいいです。
ってことで、新たに対策された箇所を更に対策しましょう!
まぁ夢の話ですけど….

まず、前回まではMarketEnablerでいけるという情報を元に44010をデコンパイルしたファイルから
検索してdocomoの回線であることを確認する部分をtrueを絶対返すように書き換えて使えるようにしました。
しかしバージョン2でこれを試すと無言で終了してしまいます。
でもその前に前回のをもっと簡単に、
ってことで前回同様書き換えるファイルは、

jp.co.nttdocomo.voice_concier.main-2.apk\smali\jp\co\nttdocomo\voice_concier\main

内のMetaSearch.smaliです。

前回はv0に44010を上書きしていましたが今回はもっと簡単に書き換えたいと思います。

まず、44010を検索してみてください。
おそらく4096行目あたりにあると思います。
で4098行目に

invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

とあるので

invoke-virtual {v3, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

に書き換えてくださいv0→v3にするだけです。

これでキャリアの判定はOKです。

でここからが問題です。
バージョン2ではこれだけでは落ちます。
で試しにMarketEnablerを試してみたところ起動するではありませんか。
ということで、バージョン2ではこれに加えて署名を確認しているようです。
で署名なんてわからねーよってなるんですが、ようは署名を確認しているところの変数をtrueにしてやればいいので
分かる必要なんてありません。

ではその場所を探してみましょう。
まず、終了するということはfinish()が呼ばれるわけです。
ってことでfinishを探してみました。すると

.method private d(I)V
.method private a(Ljp/co/nttdocomo/voice_concier/model/NBestData;)Z

の2つでしかfinishしていないことがわかります。
onCreateで44010以降でaかdを呼び出している箇所を探すと

4157行目に

invoke-direct {p0, v0}, Ljp/co/nttdocomo/voice_concier/main/MetaSearch;->d(I)V

とあります。
ではdの中に署名の判定をしている箇所があるかというとそうではありません。

4141行目~4161行目

    invoke-direct {p0}, Ljp/co/nttdocomo/voice_concier/main/MetaSearch;->r()Z

    move-result v0

    if-nez v0, :cond_9

    invoke-static {}, Ljava/lang/Math;->random()D

    move-result-wide v0

    const-wide/high16 v2, 0x4090

    mul-double/2addr v0, v2

    double-to-int v0, v0

    invoke-direct {p0, v0}, Ljp/co/nttdocomo/voice_concier/main/MetaSearch;->d(I)V

    goto/16 :goto_2

    :cond_9

でr()を呼び出しています。rの変数でdが呼ばれるか呼ばれないかが決まっているようです。
ということでr()を探します。

r()は
3215行目から、

.method private r()Z
    .locals 6

    const/4 v0, 0x0

    invoke-direct {p0}, Ljp/co/nttdocomo/voice_concier/main/MetaSearch;->s()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {p0}, Ljp/co/nttdocomo/voice_concier/main/MetaSearch;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v1

    :try_start_0
    invoke-virtual {p0}, Ljp/co/nttdocomo/voice_concier/main/MetaSearch;->getPackageName()Ljava/lang/String;

    move-result-object v3

    const/16 v4, 0x40

    invoke-virtual {v1, v3, v4}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;

    move-result-object v1

    iget-object v3, v1, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;

    array-length v4, v3

    move v1, v0

    :goto_0
    if-lt v1, v4, :cond_0

    :goto_1
    return v0

    :cond_0
    aget-object v5, v3, v1

    invoke-virtual {v5}, Landroid/content/pm/Signature;->toCharsString()Ljava/lang/String;

    move-result-object v5

    invoke-virtual {v5, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    :try_end_0
    .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_0} :catch_0

    move-result v5

    if-eqz v5, :cond_1

    const/4 v0, 0x1

    goto :goto_1

    :cond_1
    add-int/lit8 v1, v1, 0x1

    goto :goto_0

    :catch_0
    move-exception v1

    goto :goto_1
.end method

で、この中を見ていくとsignaturesという文字が見えます。
どうやらビンゴのようです。
で下を見ていくと
3258行目

invoke-virtual {v5, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

があります。
ということでここで署名の判定をしているようです。
ってことでここをキャリア同様書き換えてしまいましょう!

invoke-virtual {v5, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

v3→v5に書き換えただけです。

であとはコンパイルをして上げれば完成です!

以前から気になっていたのですがauで使っているとwiMaxで通信中は使えないという問題がありました。
docomo用のものですのでwimaxでの使用が想定されてないのですが、おそらく通信を確認しているところに
wimaxでの通信を確認できるように書き換えてあげればおそらく動くのでは無いかと思います。

なのでauでご利用の際はWiMaxにご注意ください。


27 Comments

  1. みちたく 2012年7月2日 Reply
  2. mumei_himazinAuthor 2012年7月5日 Reply
    • みちたく 2012年7月5日 Reply
      • mumei_himazinAuthor 2012年7月5日 Reply
        • みちたく 2012年7月5日 Reply
          • mumei_himazinAuthor 2012年7月5日
  3. HTC J 2012年7月5日 Reply
    • mumei_himazinAuthor 2012年7月5日 Reply
  4. みちたく 2012年7月5日 Reply
    • みちたく 2012年7月6日 Reply
      • みちたく 2012年7月6日 Reply
  5. HTC J 2012年7月6日 Reply
  6. たにやん 2012年7月6日 Reply
    • mumei_himazinAuthor 2012年7月6日 Reply
      • 初心者 2012年7月9日 Reply
        • mumei_himazinAuthor 2012年7月9日 Reply
          • 初心者 2012年7月9日
  7. ほのか 2012年7月14日 Reply
    • mumei_himazinAuthor 2012年7月15日 Reply
  8. しげ 2012年7月15日 Reply
    • mumei_himazinAuthor 2012年7月15日 Reply
  9. ねずちゅう 2012年7月25日 Reply
  10. ねずちゅう 2012年7月25日 Reply
    • mumei_himazinAuthor 2012年7月25日 Reply
      • ねずちゅう 2012年7月26日 Reply
  11. なかよし 2012年8月9日 Reply
    • mumei_himazinAuthor 2012年8月10日 Reply

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Anti-spam image