いかにGoogle NavigationがUSA以外で使えるようにハックされたのか

Last edited on 2011/06/19 (日) - 18:05
Googleナビの画面

XDAのコミュニティの力でGoogle NavigationがUSA以外でも動作するようになりました。

Google Maps 4.2.0 に対応した最新版は以下のスレッドにあります。ダウンロードして、他のアプリと同じように adb install すれば、本来の Google Maps とは別に Brut版としてインストールできます。

[APPMOD][19.05.10] Brut Google Maps 4.2.0.4210-brut13

日本語の説明がコムギさんとこにあります。

アプリケーション/GoogleMapNavigator

以下、Brut.all さんというハッカーによって Google Maps がハックされる過程を追ってみました。以下のスレッドの内容です。

[Think Tank #2 - SOLVED] Modifying Maps to enable Navigation outside USA

まず、11月14日にBrut.allさんが解析をはじめたようです。EmulatorとWiresharkを使っています。

http://forum.xda-developers.com/showpost.php?p=4942226&postcount=49

I've tested this on emulator + Wireshark and have tried to route from faked My Location (Washington 38.910003 -77.033386) to "Chicago, IL, USA".

11月17日にUSA以外でナビをできなくするフラグを偶然?見つけてしまったようです。

http://forum.xda-developers.com/showpost.php?p=4976534&postcount=78

I have accidentally found a flag that forbids using navigation outside USA ;-)

11月19日には、ついに ハッキング版Mapsができてしまいました。GoogleからC&Dくるのを待ってるなんて言ってます。C&DはCease and Desist orderで、Cyanogenが受け取ったやつですね。(ハッキング版Mapsは GoogleのアプリであるMapsにバイナリパッチを当てたものです)

http://forum.xda-developers.com/showpost.php?p=4980784&postcount=97

Aaaaaaa! I've hacked Maps, so it is working without any proxy!
Now I'm waiting for C&D from Google ;-)

Brut.allさんがやったことのまとめは以下です。この時点では、ナビが可能になっただけで、UIにナビボタンが無く、また、/system/build.{trout|sapphire}.prop の編集が必要でした。確か、このあたりでTwitterにナビができた!というつぶやきがあり、私もやってみました。そのときはまだ build.propの編集が必要でしたし、別途、目的地設定用のアプリが必要でした。

http://forum.xda-developers.com/showpost.php?p=4986807&postcount=233

この後、ナビボタンを出現させるためにしばらく悩んでいたようです。ナビボタンの文字列もアイコンも隠されていて見つからないなどと言っています。

http://forum.xda-developers.com/showpost.php?p=4997561&postcount=311

I'm stiil trying to fix this Navigate button problem, but I don't get it.

そこへ、突然、寡黙なTAPP氏登場、ほらよという感じで Perfect Patch です。これがなんと、build.pop の編集不要、ナビゲーションボタンあり、ルートが無くてもOK というものでした。かっこいい。11月22日のことです。

http://forum.xda-developers.com/showpost.php?p=4997816&postcount=315

Brut.allさんも絶賛しております。

http://forum.xda-developers.com/showpost.php?p=4997933&postcount=319

TAPP, man, you are awesomeness, than I ;-) I have missed that "maps_enable_navigation" flag :-)

Googleが正式にリリースした 3.2.1 にこのパッチを当てた物が、冒頭のコムギさんとこからたどれるサイトに置いてあります。

その後、12月7日に 正規のMaps 3.3.0 がリリースされたのと同時に ハッキング版 Maps 3.2.1 のナビ機能が Google のサーバー側で無効化されてしまいました。はてさて、どうすべ、と議論が続きます。そんな中、Google の Forumで Googleのマップチームメンバーとのやりとりもあったようです。

http://forum.xda-developers.com/showpost.php?p=5107394&postcount=690

そうこうしているうちに、Brut.all さんがつぶやきます。12月10日のことです。

http://forum.xda-developers.com/showpost.php?p=5115933&postcount=720

It works for 3.3.1 too :-)

今度の方法は、マップアプリ側でナビが動いていることがサーバにわからないように、端末からサーバへは経路探索アプリ用のパケットを送り、経路探索アプリが動いていると見せかけているようです。これならサーバ側で対策のしようがありません。実に賢い方法ですね。スレッドの#1に「経路が使えるとこなら動くよ」と書いてあるのは上記の理由と思われます。

これをDalvikVMのバイトコードレベルでパッチを当てたようです。すごいですね。Brut.allさん本人も「動いているなんて信じられない」と言っていますが。