はりをきば

そこにピカマンがいる限り 私はテイッハットウッをやめない

【5.5.3対応】WiiUでHBLを起動するボタン作った【2018年版】

¯注意
この記事はを最後に更新されていない。
更新日が1年以上前の記事はリンク切れしていたり、情報としては役に立たなくなっている可能性あり。
ˆMixed Contentについて
この記事は投稿日が古い為、記事中の画像は非SSL(http://)で貼られている。(※投稿画像以外は全てSSL)
この件に関して詳しくはこちらを参照。

…ので、ここに公開しておく。実は1ヶ月以上前に完成してた

【追記】
5.5.3でも問題無く動作することを確認。
また、フリーズ原因の項目を一部修正。


\じゃじゃーん/

WiiU 5.5.x HBL (はりを改造版JsTypeHax)|gutyan.jp

https://file.gutyan.jp/wiiu/hbl


loadiine.ovhu.drg.liよりも起動(トリガー発動)するのが早いのが特長。
上記2つのサイトがタップしてから起動するまで前者が20秒以上、後者が10秒以上かかるのに対し、ワシのこいつは約5秒



使い方

HBL本体(とHaxchiインストーラ)をそれぞれダウンロードし、FAT(16/32)のSDカードに配置する。

GitHub - dimok789/homebrew_launcher: WiiU Homebrew Launcher

https://github.com/dimok789/homebrew_launcher

GitHub - FIX94/haxchi: Persistent WiiU DS VC Exploit

https://github.com/FIX94/haxchi

HBLは必ず1.x系列の最新版を使うこと。(今現在1.4)
2.x系列はブラウザからは起動できない(CFWで使うものな)ので無視。


パスはこう。

sdmc:/wiiu/apps/homebrew_launcher/homebrew_launcher.elf

WiiUに限った話ではなく、3DSやWiiにも言えることだがSDのパスは大文字小文字を区別しない
従って、/wiiu/APPS/Homebrew_Launcher/HoMeBrEw_lAuNcHeR.eLfみたいな滅茶苦茶なファイル/フォルダ名でもちゃんと動く。
ちなみに私は、わかりやすいよう/WiiU/Apps/Homebrew_Launcher/homebrew_launcher.elfとしている。
(ファイル名はそのまま、フォルダ名は先頭大文字に)


ファイルをセットしたSDをWiiUに挿し、ブラウザを起動。
この時、複数のタブを開いている場合は一旦全て閉じる
1つしか開いてない場合も、そのタブが使い回し(別のサイトを読み込んでる状態)だと失敗するので、閉じてスタート画面(時計表示画面)に戻す。
タブが1つのみで、且つそれがスタート画面な状態で、改めてアドレス入力でfile.gutyan.jp/wiiu/hblと入れアクセス。
(httpsの有無はお好きにどうぞ)


起動ボタンのあるページを開いたら、一旦ブックマーク。


ブックマークしたら、いざポチっと押す。
成功すれば、5~7秒くらいで起動する。


5.5.2+のブラウザHBLはガチャ(運ゲー)なので失敗(フリーズ)するのは当然で、数回リトライ&フリーズしたくらいで騒がないように。
まず数回試してみて、全滅するようならAlt modeにチェックを入れてもう数回トライしてみる。
それでもフリーズする場合、下記のFAQも参照。


運良く起動できたら、後はサクっとHaxchiをインストールして終わり。
次からはHaxchiを使ってHBLをオフライン且つ100%確実に起動できるようになる。


申し訳無いがHaxchiのインストールや使い方は割愛。
(後日HaxchiとCBHCの記事も書く予定)



多謝

このHBL起動ボタンは、下記のコードをベースに作成した。
というか8割くらいオリジナルママ

GitHub - WiiUTest/JsTypeHax

https://github.com/WiiUTest/JsTypeHax

ちょい解説

このオリジナルのコードは、以下のWebkitのバグ(CVE-2013-2857)を使用している。

240124 - Heap-use-after-free in WebCore::ImageInputType::attach - chromium - Monorail

https://bugs.chromium.org/p/chromium/issues/detail?id=240124

2013年、Blink分岐直後のWebkitに見つかったこいつは、type="image"なinput要素に割り当てたハンドラからtype="radio"にするとメモリ破壊&任意コード実行できるという普通にアカンやつ。
んで、そこからHBLのelfを起動するペイロード(3DSでいうところのotherapp.bin的な)をメモリに書き込み&実行するというのがこのJsTypeHaxなるもの。


サイト側からは書き込んでよいアドレスを検知できないので、書き込めそうなアドレスに当たりを付けてペイロードを置くというその仕様上、
書き込んだアドレスがフリー(writable)であるという保証は無く、運悪く使用中のアドレスに置いてしまうと起動中のシステムが破壊されてしまう。
フリーズするのはそういうことである。



FAQ(Freezy Asked Questions - よくあるフリーズとその回答)

Q.「FSGetMountSource failed」と出る

A. exploitを使った起動シーケンスは運良く成功しているが、肝心のHBL本体が読み込めていない。

このエラーが出る要因としては

  • ELFファイルのパスが不一致
  • SDカードがFAT(16/32)形式じゃない
  • SDカードの接触不良、或いは故障?
  • そ も そ も S D が 挿 さ っ て な い

この起動ボタンはSDに入ってるHBLを呼ぶものなので、そもそもSDにそれが入ってないと話にならない。
SD無しでWebからロードできた5.5.1のやつとは違う。
SDXC(64GB以上のSD)は初期フォーマットがexFATなので、最初にFAT32でフォーマットしておく必要がある。

Q. 何回やってもフリーズマンが倒せない

A. Haxchiだけは最後まで取っておく

…フリーズ率が上がる行為をリストアップしたので、以下の行動は控えてポチるよう心がける。

  • 起動ボタンページを開いてから数十秒以上放置
  • 起動ボタンページを開いてる状態でブックマークリストを無意味に開く
  • Wiiリモコンを使ってボタンを押している(ゲムパ使ってね…)
  • 複数のタブを開いている(フリーズ確定)
  • タブを使いまわしている(戻る/進むで別サイトのキャッシュをもっている、フリーズ確定)
  • カーテンを閉めている(TVへのWebサイト表示をオフにしている)

とにかく運ゲーなので、音を上げる前に最低でも10回は試してね。


尚、海外のハック解説サイトや国内の同ブログの中には
HBLは1.3の方がいいとか、ブラウザのカーテン(TV出力)は開けた方がいいとか、ブラウザのセーブデータを初期化した方がいいとか書いてあるとこもあるが
私が一通り試してみたところ、特に有意な差は確認できなかった。
迷信の類だと思われるので、それらは無視しても良い。
【追記】ブラウザのカーテンは迷信では無かった模様。特定条件下において、カーテンを閉めていると確定でフリーズすることを確認。




その他、バグっぽい動作(5秒どころかボタンを押した瞬間に確定フリーズする等)を見つけたら
コメントに書いておくと助かったりそうでもなかったり。