CEF 6.60 TN-Aで利用しているEU/US版の『Urbanix』のexploitですが、現時点では日本語版『アーバニクス』には対応していません。
PSNアカウントの関係で実質リージョン制限みたいになっているPlayStation Storeからのダウンロードタイトルですので読者の方が一番気になるのは日本語版に対応するのかどうかだと思います。現在どのような状況なのか、私が分かっている範囲でお知らせします。
最初に日本語版にもユーザーモードexploitがあったのかを調べてくれたのがWeeLeds氏でした。WeeLeds氏はまず『アーバニクス』にもEU/US版『Urbanix』と同じ脆弱性が存在するのかを調べました。
PSPLinkの結果ですが、無条件ジャンプアドレスになる$raレジスタに任意の値を入れることに成功しています。
WeeLeds氏から聞いた話では、US版のセーブデータを日本語版のゲームキーで復号できたとのことで、US版のセーブデータを参考にどのあたりでどの程度セーブデータを改変すればバッファーオーバーフロー(プログラムが確保したメモリサイズを越えて文字列が入力されると領域があふれオーバーフローしてしまい、レジスタが上書きされるなど予期しない動作が起こる脆弱性)が起こるのかの見当がついたそうです。良くある話ですが日本語版の場合海外版よりも余分に”死ぬ程”文字列を入れなければバッファーオーバーフローが起こらない場合がありますが、今回はそのパターンだったようです。
ここまで分かれば自作コード実行、つまりHello Worldまでは可能である可能性が高いです。ということで、WeeLeds氏は日本版『アーバニクス』でHello World表示に成功しました。これで日本版でも自作コード実行なら可能だと証明できたことになります。
httpv://www.youtube.com/watch?v=hCYJvrBxoqg
WeeLeds氏はPS Vitaを所有していないためPSP goでの検証になります。
ここまでで、とりあえずHello World表示まではできました。TN-Aのソースコードが公開されていないため、TN-A移植という面ではここで一度壁にぶち当たります。
現在teck4氏も『アーバニクス』のセーブデータを調べてくれています。ただ、teck4氏自身『アーバニクス』自体を持っていないためこの後がちょっと大変です(関数リストなどの情報はWeeLeds氏から提供を受けたようです)。バイナリーローダー部分までの移植はできそうですが、US/EU版はほぼ同じものだったためにTN-A移植簡単だったのでしょう。
残念ながら日本版だけアドレスが色々異なるようですのでHEXエディターでちょいちょいと移植できるレベルを遥かに超えています。
今後の大まかな流れはおそらくこうなります。
1) ゲームキーが日本版と共通のUS版セーブデータを復号してバッファーオーバーフローさせているユーザーモードexploitの部分を探し、バイナリーローダーに当たる部分を特定し逆アセンブルして解析する。
2) カーネルexploit本体があるバイナリーファイルを逆アセンブルして解析する
3) 1)と2)を日本版の『アーバニクス』の関数に置き換える。
と、こんな感じになると思います。これだけで済めばまだラッキーかもしれません。
たしか、今回のカーネルexploitはVitaのPSPエミュレータにしかなくてPSPには存在しないという話だった気がしますが、そうだとするとソースもなく移植するのは簡単な話ではありません。もっとも、セーブデータがあるならばTotal_Noobs氏本人に移植を頼むという手はありますが、力の付いてきた日本の開発者の出番かなとも思います。
なお、『アーバニクス』を手にいれ損なった皆さんへ、wololo氏からこんなメッセージがあります。
If you missed the Urbanix exploit, *stay tuned*. No one can guess when the next will be so check regularly. Could be tomorrow or next year.
— Wololo (@frwololo) October 4, 2012
Urbanix exploitのチャンスをつかめなかった皆さんは”暫しお待ちを”。次は明日かもしれませんし来年かもしれませんが、具体的にいつなのかについては誰にも分かりませんのでいつもアンテナを張り巡らせておいて下さい。