exploitを発動させる新エントリーポイント BrowserHaxとThemeHax by Yellows8

Yellows8氏がBrowserHaxとThemeHaxをリリースしたことを先日お伝えしましたが、その際「GitHubベースで記事にしようとしております」と書きました。実は大まかな文章はできていたのですが、まとまりがなかったので記事として公開しておりませんでした。
せっかく書いたものなので、ちょっとだけ整理して記事として公開します。呼称が統一されていない上にexploitの種類が複数あるので理解するのに時間がかかりました。基本的に用語は3DSBrewに合わせています。

ThemeHax(対応する3DSのファームウェアは9.0から10.1)は、すでにHomebrew launcherを何らかのハックで過去にインストールしてある状態で3DS起動時にLトリガーを押しっぱなしにするとhblauncher payloadを読み込んで直接Homebrew launcherを起動できるというものです。起動のたびに『Cubic Ninja』などのゲームカードが不要になるというメリットがあります。HomeMenuHaxとも呼ばれます。

BrowserHax(対応する3DSのファームウェアは9.0から10.1)で、ThemeHaxとは異なり過去に Homebrew launcherをインストールしていない3DSでも使えます。ブラウザを使いますのでインターネット接続環境は必須です。

これらが出てきた話の流れはsmea氏のツイートを読むとよく分かります。


まず、yellows8氏が旧3DS向けにはWebkitのバグを、新3DS向けにはStagefrightのバグを利用した。


次にyellows8氏はHomeMenuHaxを編み出した。そう、HOMEメニューこそがエントリーポイント。今までの中で最も使い易いよね。


基本的にはそれが対策されるまではninjhaxやtubehax、ironhax、oot3dhax、smashhaxは要らなくなる。使うのはブラウザとHOMEメニューだけ。

BrowserHax

smea氏の言う旧3DS向けのWebkitのバグというのが3ds webkithaxで、新3DS向けのStagefrightのバグというのがbrowserhax frightです。

3ds webkithaxは実際には新旧3DS向けのそれぞれのexploitが含まれているため形の上では両対応しています。安定して発動しないため動作しない場合は何度かやり直す必要があります。

旧型向けは通称”sliderhax”というexploitで、10.1.0-27まで対応しています。一方で新型向けは9.9.0-26までしか対応していません。この脆弱性は旧型3DSにも存在していますが、旧型は10.1.0-27でもまだそれが残っていて、新型に限り10.1.0-27で先に対策されてしまっていたようです。したがって事実上これを旧型3DS向けにしています。

browserhax frightはNew3DSのインターネットブラウザのexploitです。libstagefright におけるオーバーフロー問題として知られている脆弱性で、不正な MP4 動画の解析時に生じる整数オーバーフローによりコードの実行を許容してしまうクラッシュを引き起こすものです。(参考:Mozilla Foundation セキュリティアドバイザリ 2015-83)

そもそもこの脆弱性は今年の8月にその存在が明らかになったものですので、対策はこれからのはずでした。New3DSのブラウザは未対策ですので最新バージョンの10.1.0-27でもこの脆弱性は存在します。yellows8氏はそれに早々と目をつけたようです。

MP4ファイルの解析がトリガーですので、ユーザーが何らかの操作をする必要はなくMP4ファイルを読み込むURL(ただし48文字以内のURLで、ブラウザのタブも3つ以上開いていると発動しないなどの条件はあります)へアクセスするだけで発動します。

インターネット上のサーバーに簡単にインストールできるようウェブサイトが用意されています。

まず
http://yls8.mtheall.com/3dsbrowserhax.php

へアクセスするとQRコードがあります。そのQRコードの中身は

http://yls8.mtheall.com/3dsbrowserhax_auto.php

のURLです。アクセスすることで旧型(3ds webkithax)と新型(browserhax fright)でそれぞれ自動的にexploitを用意してくれるようです。

ここで注意点ですがNew3DSでBrowserHaxをそのまま実行すると ヒープメモリの破損 (Heap corruption) が発生しメモリ割り当てに失敗してMP4の解析に進みません。

New3DSの場合は以下の作業を途中で行います。
1) Wi-Fiを無効化する.
2) HomeメニューからQRコードでURLを読み取り、ブラウザでアクセスしてみる
3) ブラウザを一旦終了して再度Wi-Fiを有効化する
4) ブラウザを起動すると先ほどアクセスしたURLへアクセスする

なお、libstagefrightはWii U バージョン 5.5.0Jのブラウザにも脆弱性として残っています。Wii Uでも今後何らかの動きがあるかもしれません。

ThemeHax(HomeMenuHax)

ThemeHax(HomeMenuHax)は今回の最も大きなトピックで、smea氏の言う通りゲームカードが不要でtubehaxのようにeショップからダウンロードすら不要という、本体だけでHomebrew Launcherを起動できるものです。

仕組みとしては、HOMEメニューが起動した時にSDカードのextdataフォルダにあるテーマデータを読み込んでexploitが発動します。液晶モニターのバックライトが点灯するのとほぼ同時に起動するため、まるで3DSの電源を入れたらHomebrew Launcherが普通に起動するように見えます。

ThemeHax(HomeMenuHax)が対応している3DSのバージョンはテーマを導入した9.0以降(日本版は9.1.0-20Jでテーマが導入されたので、日本リージョンの3DSは事実上9.1以降です)に限られますが、最新バージョンである10.1でも動作します。

インストール方法は簡単で、https://github.com/yellows8/3ds_homemenuhax/releases/から最新版のthemehax installer(現在はv1.2)をダウンロードして解凍し、”themehax_installer”フォルダをSDカードのルートにコピーすれば準備は完了で、themehax_installer appをHomebrew Launcherから起動し、画面の指示に従ってインストールをすれば完了です。

テーマをSDカードから読み込んでいますので、テーマを変更するとexploitは発動しなくなります。まだ電源OFF時にSDカードを取り外して3DSを起動した後にSDカードを取り付ければ『Cubic Ninja』等を使った方法でHomebrew Launcherを起動できます。

『exploitを発動させる新エントリーポイント BrowserHaxとThemeHax by Yellows8』へのコメント

  1. 名前:sirome 投稿日:2015/09/28(月) 17:11:53 ID:423c38d4d 返信

    最期から二行目の所で、
    「まだ電源OFF時」になっています

  2. 名前:マリオ 投稿日:2015/09/28(月) 18:31:03 ID:a7282e53a 返信

    8.0対応してないのか。残念。

  3. 名前:カービィ 投稿日:2015/09/28(月) 19:08:00 ID:a9067c00d 返信

    さっさと上げろよ粕が

  4. 名前:マリオ 投稿日:2015/09/28(月) 20:50:45 ID:3832fa811 返信

    メイン機は9.9wサブは8.0。
    ま、メイン機で出来りゃいいか。

  5. 名前:shizuru123 投稿日:2015/09/28(月) 21:16:04 ID:b5e93798e 返信

    tubehaxだとネット必須だったからこれはうれしい

    • 名前:shizuru123 投稿日:2015/09/29(火) 21:17:18 ID:fadc98055

      てかChange Firmware version押す前に固まるんだが、これ絶対バグ(Youtubeを起動した瞬間に9.9.0用exploitを使って起動させようとしてる?)だろ

  6. 名前:ff 投稿日:2015/09/28(月) 22:55:51 ID:fccc250f4 返信

    旧3dsでやってみましたがエラーでブラウザ強制終了するのですが
    どなたか原因教えてもらえませんか?

    • 名前:shizuru123 投稿日:2015/09/30(水) 21:18:05 ID:bd2662b08

      僕もです。
      それどころかtubehaxも起動しない・・・

  7. 名前:うーん 投稿日:2015/09/29(火) 01:04:14 ID:a6f8e929b 返信

    手持ちの3dsll(9.9.0-26j)だけかもしれないけど
    HMhax起動の場合のみblargsnesだけがフリーズします…(-_-)

  8. 名前:173210 投稿日:2015/09/29(火) 09:23:50 ID:3b31db779 返信

    Wii Uでもlibstagefright使ってるのか。ハックしよう。

  9. 名前:Chmcl 投稿日:2015/09/30(水) 16:04:05 ID:94c0cf6d6 返信

    旧3DS(fw9.4-J)にて下画面が
    黄色から灰色になるもののそのままフリーズしてしまう。
    何度か試したが変わらず…

    Tubehaxの時も動かなかったし、
    Smea氏はツイートで、
    「9.4ユーザはアプデをしよう」
    と言ってるから
    Ninjhax2.0側に問題があると思われる

  10. 名前:173210 投稿日:2015/09/30(水) 18:04:20 ID:144ed5d5f 返信

    入れてみましたねぇ

  11. 名前:nazeni 投稿日:2015/09/30(水) 18:17:47 ID:0bec592bc 返信

    TMhax起動だと3ds&3dsll(共に9.9.0-26j)では
    blargsnesのロム選択不可なんですけど
    私の個体だけなのかなァ…(-_-)

  12. 名前:774 投稿日:2015/10/06(火) 20:23:53 ID:d4aebeac5 返信

    BrowserHax
    debugのとこまでいくけど赤画面から進まない

  13. 名前:tako 投稿日:2015/10/17(土) 10:53:26 ID:4fe5a301c 返信

    おっやっと出来ました。
    ちなみに自分の方法は
    1: ttps://smealum.github.io/ninjhax2/boot.3dsx
    から3dsxファイルをダウンロードします。

    2:3DSのSDカードのルートに↑の3dsxをコピペします。

    3:ttp://smealum.github.io/3ds/
    から3DSのバージョンにあったpayloadsをダウンロードします。

    4: (3)でダウンロードしたbinファイルをbrowserhax_hblauncher_payload.binにリネームします

    5: リネームしたbinファイルをSDカードのルートにコピペします。

    6:そしてQRコードからブラウザ開いてスライダーの右側タッチしたら出来ました。

    • 名前:謎18 投稿日:2015/10/19(月) 08:45:48 ID:80ba03834

      その方法でもできなかったのですが・・・。
      3DSとバージョンは何ですか?
      因みに自分は旧3DSの10.1.0-27(最新)です。

    • 名前:tako 投稿日:2015/10/21(水) 16:48:03 ID:763e9e971

      自分も旧の 10.1.0-27J です
      なぜでしょう…一応ブラウザーの設定から履歴とCookieを消してセーブデータの初期化をしてからまたやってみてください。もしかしたら出来るかもしれません。

  14. 名前:謎18 投稿日:2015/10/21(水) 17:37:15 ID:149bff5fe 返信

    履歴とcookie消して試したところ、できました!
    この方法なら出来そうですね
    ありがとうございました。

    • 名前:tako 投稿日:2015/10/22(木) 08:51:42 ID:32184345b

      それは良かったです!お役に立てて嬉しいですm(_ _)m

  15. 名前:謎18 投稿日:2015/10/21(水) 18:08:57 ID:149bff5fe 返信

    それと自分もTheme、BrowserHaxでblargsnesでロムを選ぶとフリーズします・・・。
    なぜでしょう?

    • 名前:nazeni 投稿日:2015/10/21(水) 21:28:29 ID:47c0e2498

      the-/brow-両方入っていれば非常に簡単な方法で
      blarg-がフリーズせず起動できる方法がありました。
      安易にお書きできず申し訳ないのですがyellows8さんの
      各hax英文チュートリアル(&blarg対処法)を細かく確認すれば
      今の状態からファイルを足すことなく必ず幸せになれます^^
      sdを弄らず今のhax状態を保持したまま探してみてください^-^)

    • 名前:tako 投稿日:2015/10/22(木) 15:52:33 ID:32184345b

      3DSを普通に起動してから適当なアプリを起動して、電源ボタンを押します。
      ゲームを終了しましたという文字が出たらホームボタンをおしてからすぐにLボタンを長押ししてHomeBrewを起動してblargsnesを起動してやってみてください。

    • 名前:nazeni 投稿日:2015/10/22(木) 17:40:00 ID:cf68fd193

      探す楽しみを味わい幸せになれましたでしょうか
      正に上の方の仰る通りの方法でした
      開発者さん&掲載者様に感謝です

    • 名前:tako 投稿日:2015/10/22(木) 19:17:15 ID:32184345b

      たしかに探すの楽しかったです!出来た時の嬉しさも最高ですね

  16. 名前:Chmcl 投稿日:2015/10/27(火) 22:54:23 ID:70e96405d 返信

    9.4アプデがどうのこうのありましたが、
    Spider exploitの為に維持し続けたところ、
    Yellow8氏によって、いつの間にかBrowserhaxが動くようになっていました!