[PS2] FreeDVDBoot がリリース

2020/06/28 07:06 PS2 1
CTurt氏が、PS2のDVDプレーヤーの脆弱性を利用してDVDからHomebrewを起動するexploit
FreeDVDBoot をリリースしていました
https://github.com/CTurt/FreeDVDBoot
https://cturt.github.io/freedvdboot.html

現時点ではDVDプレーヤーバージョン3.10E及び3.10U用です。
(欧州向けSCPH-70003/70004 及び 北米向けSCPH-70011/70012)
CTurt氏が所有するPS2のDVDプレーヤーのバージョンが3.10Eである事から、FreeDVDBootは3.10E用として
開発されましたが、GitHubのREADMEによると3.10Uでも動作が確認されたとの事です。
(他のリージョンの3.10でも機能する可能性があります)
最終的なバージョンが3.11であるため、他のバージョンにも同様の脆弱性がある可能性は高いとの事です。
(他のバージョンのサポートに関しては、今後PS2シーンの有志が調査するのを願うしかありません)
私は該当する本体を持っていないので試せませんが、簡単に概要を記事にします。


CTurt氏は昨年10月、PALのPS2に同梱されていたYabasicを使用するexploitを公開しました。
https://cturt.github.io/ps2-yabasic.html
しかし使用するソフトが限定される事や面倒さの観点から、より優れた手法を調査されたそうです。
その成果が今回のFreeDVDBootで、DVDプレーヤーのバッファオーバーフローの脆弱性が利用されます。

PS2は実行ファイルとしてELFを使用しますが、単純にELFを書き込んだDVDでは起動出来ません。
(ディスクを超高速でスワップさせる手法は存在しますが、あれはまた別の話です)
しかしながらPS2はDVDビデオディスクの再生に対応しており、CTurt氏はそこに目をつけました。
結果、DVDプレーヤーが最初に読み取るVIDEO_TS.IFOに関連したバッファオーバーフローの脆弱性を発見され、
そこから更に調査と開発を進め、最終的にDVDからELFを読み込めるようにしたのがFreeDVDBootです。
以下がこの段階でのデモ動画です。Homebrewのテトリスを起動されています。



uLaunchELFも起動可能で、uLaunchELFでUSBストレージが参照出来るのでエンドユーザーとしては十分なのですが、
CTurt氏はディスク上のデータのみでエミュのようなHomebrewを活用出来るのが理想と考えられました。
しかし既存のPS2SDKはDVDビデオディスク内の参照がサポートされておらず、FreeDVDBootでエミュを起動しても
ディスク内のROMが読み込めないという事が問題になってきます。
そこで、CTurt氏と協力していたuyjulian氏がPS2SDKに以下のプルリクエストを送りました。
https://github.com/ps2dev/ps2sdk/pull/130
これはcdfsのパスでDVDビデオディスクをサポートするためのものです。
これにより、Homebrewをリコンパイルする事で、DVDビデオディスク内のファイルが参照可能になります。
Homebrewがクローズドソースな場合、バイナリエディタで関連するモジュールを置き換えれば良いようです。
以下がデモ動画です。エミュでマリオのROMを読み込んでマリオをプレイされています。



次にバックアップ起動です。
FreeDVDBootとESRを組み合わせる事で、ディスク上のデータのみでバックアップ起動が可能なようです。
ESRは、ディスク認証に関するmechaconというプロセッサのチェックを通るためにゲーム(ISO)をDVDビデオに
見えるようにパッチを当てるツール(ESR patcher)と、パッチを当てたISOが焼かれたディスクを起動するための
ローダープログラム(ESR.ELF)、その2つの総称です。
事前にESR.ELFを実行する必要があり、ELFを実行する手段としてFMCBを利用するのが一般的です。
しかし、FreeDVDBootを組み合わせるとESR.ELF+ゲームのディスクを作成する事が可能になり、FMCBのような
ESR.ELFをディスク外から実行する手段が不要になります。PS2のコピープロテクトは破られました。
(ESRは互換性が完璧ではないようですが)
作業としては、ESR用のFreeDVDBootのVIDEO_TS.IFOを作成する作業以外は、パッチを当てたゲームを弄るだけ
のかなり単純な作業のように思えます。
CTurt氏は後者の作業も手動で行ったそうですが、ESR patcher側に変更を加える事も容易だろうとの事。
以下がデモ動画です。ワンダと巨像をプレイされています。



ソニーはゲームのコンテンツの前に約250KBのスペースを確保しているらしく、そこにFreeDVDBootとESRを
入れても余る事から、PARのチートメニュー等、他の物を入れる事も可能だろうとされています。
CTurt氏はESRの開発者であるffgriever氏についても言及されています。
ffgriever氏はESRのスプラッシュスクリーンの削除やちらつきの削減に取り組んでいるとの事です。

CTurt氏はユーザーが操作する事なく起動するディスク、つまり特定のバージョンのDVDプレーヤー用ディスクを
作成されましたが、異なるバージョンと互換性のあるディスクとして、実行するexploitを選択するDVDメニューを
持つDVDビデオディスクの作成も可能かもしれないとされています。

現時点では3.10E向けのソースコード、VIDEO_TSフォルダ、uLaunchELFのISOのみが公開されています。
(記事の最初に書いたように3.10Uでも使用出来るようです)
ISOは単純にDVDに焼けばいいだけなので、3.10E/3.10Uの本体を所持しているなら簡単に試せます。
uLaunchELFさえ起動出来ればFMCBやFortunaをインストールする事も可能です。
(FreeDVDBootはFMCBやFortuna目的で使用される事がほとんどなんじゃないかなと私は思います)

記事の最後では、PS2以外でも自分で焼いたディスクを読み込める事から、今回のような手法がPS2特有のものだと
する理由は無いとされています。(PS1はCD, PS2はCD/DVD, PS3はCD/DVD/BD, PS4はDVD/BD をサポート)
特に、PS4でBD-Jをエントリーポイントとしてハックに使用するというアイディアは長い間議論されてきたとの事で、
CTurt氏の将来のプロジェクトに向けて調査するかもしれないとの事です。
実現するかどうかはともかく、こういう発言があるのは嬉しいですね。



最近記事書いてなかったんですが、このリリースを見た瞬間、これは書かなきゃと思って、とりあえず書きました。
数年前から、いつかPS2の事をまとめたいなあとか思っていて、まあ何も手を付けてないんですが、そんなことを
考えてる私にとってはPS2シーンが新しいハックで盛り上がるのはテンションが上がるっていうか。
FreeDVDBootは現状サポート対象のモデルが限られているので、今後発展していく事を願います。

kood

▼コメント


音ゲーのサル 2020/06/28 12:06
この記事とても面白いほぼ手書きのディスク...
それは置いといて段々置物と化してきているPS2にもまだ何らかの希望が?!
あり得ないですがPSPエミュ出来ると良いなあ ポップンportable
ポップンコントローラでやる希望が未だに捨てきれていないので...
PS3でJY-PSUADやエレコムポプコン差し込みさらに基盤削ってPS2のみ成功確定
PS3で何も変わらずという絶望を経験しているので...
今後発展していく事を願います。


▼コメントを投稿












※「英数字90%以上」のコメントを規制中です。コメントを投稿する際は日本語でお願いします。
※確認ボタンを押すと投稿確認フォームに移ります。投稿確認フォームの送信ボタンを押してください。
※確認フォームにある「メールアドレス」に入力された内容は管理人のみ確認可能です。空欄で構いません。
※確認フォームにある「タイトル」「パスワード」は当ブログでは使用していません。空欄で構いません。
※確認フォームにある「URL」は名前のリンクとして機能します。空欄で構いません。
※確認フォームには非公開コメントのチェック項目がありますが、非公開コメントは受け付けていません。
メールフォームより連絡頂ければメールにてお返事致します。