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シーンの有志が調査するのを願うしかありません)
私は該当する本体を持っていないので試せませんが、簡単に概要を記事にします。
- 追記 2020/06/30 1:28
3.11もサポートされました。
3.11EU.iso、SCPH-90000で動作を確認しました。言語を英語に変更する必要があります。
https://twitter.com/kood_infothief/status/1277600247024238592
3.10EU.iso、SCPH-70000で動作するという情報もあります。
https://twitter.com/_moNyu/status/1277565911675756545
wikiのリストを見る限りだと、スリムのPS2では使えそうな感じです。
https://playstationdev.wiki/ps2devwiki/index.php?title=FreeDVDBoot_Compatibility_List - 追記 2020/06/30 4:20
3.10と3.11をサポートしたハイブリッドなISOの作成に成功されたようです。
https://twitter.com/CTurtE/status/1277664806523285504
将来、全バージョンをサポートしたディスクを作成出来る可能性があるとされています。
また、GitHubでリリースされているISOが整理され、ファイル名が変わっています。
(3.11J.isoは不要であると判断され削除されました)
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は現状サポート対象のモデルが限られているので、今後発展していく事を願います。
