[Hack] PS3のEBOOT復号

EBOOTとは

PS3の実行ファイルであり、WindowsでいうところのEXEにあたるもの。

Nintendo SwitchだとNSOになりますね。

ニンテンドースイッチのときはGHIDRAやIDAで逆アセンブリすることでコードを見つけ出していましたが、PS3の場合はどうするのでしょうか?

EBOOTは暗号化されている

大前提として、EBOOTは暗号化されているのでそのままでは解析することができません。

これに関してはPSDevwikiがものすごく詳しく解説されています。

正直、内容が濃すぎて一日で全部読むことができないレベルです、理解しようとすればなおさらですね。

実際にやってみる

まずはEBOOTを復号するためのキーやアプリケーション類が必要になります。

というわけで、まずは必要なものをまとめます。

ツール名用途
TrueAncestor Self ResignerEBOOT複合/暗号化
CMPAUTOTOOLEBOOT複合/暗号化
PkgViewPKGからEBOOT抜き出し
PS3 Game UpdaterアップデータのPKGダウンロード

本来、鍵を公開することはいけないことのはずなのですがTrueAncestor Self Resignerには何故か鍵が同梱されています。

あと、CMPAUTOTOOLの方が最終的に便利かもしれません。

EBOOT複合

ダウンロードしたTrueAncestor Self Resignerの中のresinger.exeを起動します。

TrueAncestor Self Resigner

EBOOTの複合は一般的には1を押せばいいはずなのですが、自分のPS3はDEXなので9にすればいいのかどうか悩みます。

9を押したらエラーがでて複合できなかったので、1でいいんじゃないかと思います。

複合済

複合するとEBOOT.BINと同じフォルダにEBOOT.ELFが作成されます。

ELF解析

ELFの解析はIDAかGHIDRAで行えます。

調べたところ、フォーマットはELF64 for PowerPC 64なようです。

64BitなのでFreeのIDAでは解析できないのでGHIDRAが必要になってきますね。

vdappcで解析

CMPAUTOTOOLはELFの解析だけでなく、EBOOTの複合まで行えます。

まずはEBOOT.BINをSCETOOL_decrypt_eboot.batにドラッグアンドドロップします。

するとEBOOT.ELFが生成されます。

更にvdappcを使うとELF内の命令をすべてテキストで出力してくれます。

vdappcは何故か隠しファイルになっているのでエクスプローラから隠しファイルを表示する設定にしましょう。

10MBくらいの実行ファイルから100MBくらいのテキストファイルが生成されます。

:: Batch File ELF to TXT
vdappc %1 > EBOOT.TXT

コマンドから打ち込んでもいいですが、上記のコマンドを貼り付けたバッチファイルをvdappcと同じフォルダ内に作ってしまってもいいでしょう。

ELF2TXT

ELFファイルをドラッグアンドドロップすればEBOOT.TXTが出力されます。

EBOOT.TXTの解析

コメントが全くないのでこれだけ見てもなにもわかりません。

まとめ

EBOOTの改造の手順は以下の通り。

  1. EBOOT.BINをEBOOT.ELFに復号する
  2. EBOOT.ELFはIDA/GHIDRA/vdapccで解析
  3. 解析したデータからコードを探す

3番目が異常に難しくて、こんなコードを見ただけではさっぱりわからない。

世の中の解析している人の頭の中が気になるレベルである。

シェアする