それを元にwildcard氏がその方法をFW4.05向けに移植したHEN(Homebrew ENabler)ペイロード、これらにより
FW4.05環境でHomebrewやバックアップの起動が可能になりました。
この記事では2018年1月20日、現時点でのバックアップの起動までの手順を書いていきます。
最初に書いておきますが、現状この手順で全てのゲームが起動(または正常に動作)するわけではありません。
PS4にはPlayGoシステムが実装されており、ゲームのファイルをチャンク毎にダウンロードしたり、ロードしたりする事が可能です。
ゲームをダウンロードする際に全部DLせずとも起動可能なゲームがありますが、それがPlayGoシステムの恩恵です。
ここで言うチャンクは簡単に言えばどのファイルがどのグループに属すか、という考えで1つのグループの事を言います。
チャンクに関してはflatz氏が公開した文書の後半に書かれていますが、現状チャンクの構造を把握する事は出来ません。
なので今各所で紹介されているFake PKG Generator(Orbis Publishing Tools)を使ったバックアップPKGの作成方法は、
どこもゲームデータ全部をChunk0に設定していると思います。これでは複雑なチャンク構造を持ったゲームは正常に動作しません。
flatz氏によれば基本的に複雑なシナリオを持つゲームは複雑なチャンク構造をしているそうで、例えばDriveClubのような
1chunk/1scenarioな単純なゲームはチャンクの事は何も考えずただPKGにしてインストールすれば正常に動作するのだとか。
チャンクの構造を知るためにはカーネルへのパッチとPS4のアプリケーション(おそらくHomebrewの事)が必要らしいのですが、
flatz氏としてはそれを開発するつもりは無いそうです。なのでそれを行う開発者が現れるのを待つ必要があります。
FW1.76でプレイルームを通してバックアップを起動する方法がありましたが、うまく動作しないゲームもあったそうで、
flatz氏としてはその原因はバックアップ起動のベースとなるプレイルームのチャンクが関係していると考えているそうです。
肝心の手順はついさっきまでどう書こうかなと悩んでいたのですが、PSXHAXでXVortex氏が公開された方法が
今最もイカしてるなと思ったのでそちらをベースにして解説していこうかなと思います。
PKG Kitchen - PS4 Guides, Tools and Scripts for Fake PKG Creation
※本来ならスクショ撮ったりしてしっかりした記事にすべきなのでしょうが、面倒なのでスクショ用意してません
●用意する物、環境
・PS4 FW4.05
・PC及びFTPクライアント
・FW4.05向けのKernel exploit実行環境
・PS4へペイロードを送信可能な環境
・PKG Kitchen
・Fake PKG Generator(Orbis Publishing Tools)
・ps4-ftp-vtx
・HENペイロード
・バイナリエディタ(何でもいい)
・FW4.05機で起動するゲーム(ディスクでもDLゲーでも起動するならどっちでも良い)
・USBメモリや外付けHDD(exfatでフォーマット済み)
用意するゲームは削除するので、ディスクのゲーム推奨です。
PKG KitchenはPKGファイルから必要なファイルを取り出したり、Orbis Publishing Toolのプロジェクトファイルである
gp4ファイルを作成したりのバッチファイルです。作成されるgp4ファイルは全ゲームデータをChunk0扱いにした物です。
Fake PKG Generatorは流出したとされるSDKに含まれていたOrbis Publishing Toolsにcfwprophet氏が手を加えた物で、
本来はゲームの実行ファイルであるELFをFSELF(Fake Signed ELF)に変換しなければいけない所を、
ただのELFをFFSELF(Fake FSELF)として扱う事が出来るようにした物です。
FSELFに変換済みの物はSELFとして正しく認識されます。cfwprophet氏の環境でflatz氏が用意したmake_fself.pyが
動作しなかったという事から開発された物らしく、これで作成したPKGをインストールして起動する事が可能です。
ps4-ftp-vtxはPS4とFTP接続して実行ファイルを復号状態(ELF)でクライアント側にダウンロード(ダンプ)可能なペイロードです。
ペイロードのソースで実行ファイルのパスを指定する必要が無いので、とんでもなくお手軽です。
ただしバイナリエディタでペイロード内にあるIPアドレスを自分の環境に合わせて編集する必要はあります。
●PKG作成してインストールする手順
1、pkg_kitchen.zipをダウンロードし、専用フォルダを作ってそこに解凍
※出来るだけHDDのルートに近い方が良い
※以下、この記事では専用フォルダをKitchenとする
2、Fake_PKG_Generator.rarをダウンロードし、"Kitchen/tools/" に解凍
※toolsフォルダ内にorbisのexeファイル群が来るように解凍
3、PS4-FTP-VTX.binをダウンロードし、バイナリエディタで展開する
4、PS4-FTP-VTX.binの中にあるIPアドレスを自分の環境に合わせて編集する
※192で検索すればすぐ見つかる
※2つあるが、1つ目がPS4のIPアドレス、2つ目がPC側のIPアドレス
※私の環境では1つ目のアドレスを自分の環境に合わせただけで動作した
5、編集したPS4-FTP-VTX.binをPS4に送信
6、ゲームを起動し、タイトル画面まで行く
※私の環境ではタイトル画面まで行かないとFTPでのファイル転送がどうにも不安定な感じがするため
7、PS4とFTP接続(ポート番号:1337)し、以下のようにPCに転送していく
A)
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0-nest/pfs_image.dat
→/Kitchen/dump/pfs/
・/user/app/CUSAxxxxx/app.pkg
→/Kitchen/dump/pkg/
・/system_data/priv/appmeta/CUSAxxxxx/
→/Kitchen/dump/appmeta
B)
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0/eboot.bin
→/Kitchen/dump/app/
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0/sce_moduleフォルダ
→/Kitchen/dump/app/
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0/sce_sys/about/right.sprx
→/Kitchen/dump/app/sce_sys/about/right.sprx
・他の実行ファイルがあれば同じようにPCに転送
手順7-Bでは他にも実行ファイル(ELF)があればコピーしてください
基本的に拡張子はbin、prx、sprxで、PCに転送した際にバイナリの文字列の先頭にELFがあれば実行ファイルです
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0-nest/pfs_image.dat
→/Kitchen/dump/pfs/
・/user/app/CUSAxxxxx/app.pkg
→/Kitchen/dump/pkg/
・/system_data/priv/appmeta/CUSAxxxxx/
→/Kitchen/dump/appmeta
B)
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0/eboot.bin
→/Kitchen/dump/app/
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0/sce_moduleフォルダ
→/Kitchen/dump/app/
・/mnt/sandbox/pfsmnt/CUSAxxxxx-app0/sce_sys/about/right.sprx
→/Kitchen/dump/app/sce_sys/about/right.sprx
・他の実行ファイルがあれば同じようにPCに転送
手順7-Bでは他にも実行ファイル(ELF)があればコピーしてください
基本的に拡張子はbin、prx、sprxで、PCに転送した際にバイナリの文字列の先頭にELFがあれば実行ファイルです
8、PS4を再起動してゲームをアンインストール
9、_extract_pkg.batを実行
コンソールが開いて"Image extract succeeded' message"と表示されればOK
10、Kitchen/tools/ArchiveExplorer.exe を起動
11、ArchiveExplorerでPCに転送したpfs_image.datを開く
12、.datの中身が表示されているので、ドラッグして全ファイルを選択
13、手順12の状態で右クリックし、Extract slected itemsを選択し、"Kitchen/app/"フォルダを選択する
全ファイルがappフォルダに抽出されるまで待つ。
14、"/Kitchen/dump/app/"の中身を"Kitchen/app/"にコピーする
15、"/Kitchen/dump/appmeta/"の中身を"Kitchen/app/sec_sys/"にコピーする
16、_gen_gp4.batを実行
CUSAxxxxx.gp4 が作成される
17、Kitchen/tools/orbis-pub-gen.exeを起動し、"File/Open"から手順16で作成されたgp4ファイルを開く
18、ウィンドウ右上にあるBuildボタンをクリック
19、Output Path(pkg) のボックスでpkgの作成先を設定する(どこでも良い)
20、下のBuldボタンでPKGを作成
※sce_sys/about に関するエラーが出たらCloseをクリックして再度手順18と19を行ってください
21、USBメモリか外付けHDDを用意し、exfatでフォーマットする
22、USBメモリのルートに作成したpkgをコピーする。
※なので既にexfatでフォーマットしたストレージがあるならpkgはそこに直接作成して良い。
23、PS4にHENペイロードを送信
24、pkgが入ったUSBメモリや外付けHDDをPS4に挿す
25、PS4の"設定/★Debug Settings/Game/Package Installer"からpkgをインストール
26、enjoy!
これでチャンクが1つ(chunk0のみ)であるという事に問題が無ければゲームは正常に動作するはずです。
チャンクはデフォだと1つのみですが、Fake PKG Generatorの"Command/PlayGo System Settings"で増やす事が出来、
増やした後はChunkタブで各ファイルにチャンクの設定が出来ます。
現段階でチャンク構造を知る事は出来ませんが、そのゲームのチャンクの総数は知る事が可能です。
_extract_pkg.bat(orbis-pub-chk.exeの機能を使用)はpkgをパスコード無しで展開してその状態で抽出可能なファイルを抽出します。
その中にplaygo-manifest.xmlがあり、この中にあるchunk_countがチャンクの総数です。
余談ですが、MGSVGZにchunk1、chunk2、chunk3と名の付いたファイルがあったのでその通りに設定しましたが、
最初のロードが越えられませんでした。全部chunk0にしても最初のロードを越えられません。
また、GE2RBでは全てをchunk0にするとタイトルでフリーズします。
やはりチャンクの構造を把握して正しく設定しなければいけないという事でしょう。
キタ―――(゚∀゚)―――― !!
— 近藤(kood) (@kood_infothief) 2018年1月19日
と思ったらタイトルでフリーズした…でもここまでやったし、寝て起きたら多分記事にします💤 pic.twitter.com/43KYuA2oGa
現状、正常に動作しないゲームはバックアップ起動でのプレイを諦めた方が良さそうです。
追記
2018/1/21 23:09
MGSVGZ最初のロード越えた!
😎😎😎😎😎😎😎😎😎 pic.twitter.com/hCY5S4jFbn
— 近藤(kood) (@kood_infothief) 2018年1月21日
pkg_kitchen_v1.3使ってください。チャンクに関する修正入ってます。