[Hack] BPRMを復号する

BPRMとは

yamlなどをニンテンドー独自の暗号化で難読化したもの。

復号ツールが公開されているのでそれをまずはダウンロードしてきます。

TheFourthDimension

スーパーマリオオデッセイ用のプログラムなのですが、スプラトゥーン2と同じくbprm v3の暗号化が施されているのでこのツールで復号化することができます。

どうもいくつかの最新のファイルには対応していないようですが、基本的にはこれで問題ありません。

ダウンロードするとconvert.exeが入っていると思います。

こちらのレポジトリだと “The4Dimension.exe” というファイル名になっているので、 “convert.exe” に変更してみてください。

ファイル名を変更しなくてもコマンドは使えますが、記事内と互換性を持ちたい方向けです。

このconvert.exeは “convert.exe batch FileName” というコマンドでbprmやbymlを復号することができます。

ただ、これだと単一のファイルにしか対応していないのでバッチファイルを作成してループ処理ができるようにします。

@echo off
mkdir %~dp0bprm
for %%f in (*.bprm) do (
copy %%f %~dp0bprm\%%~nxf
%~dp0convert.exe batch %~dp0bprm\%%~nxf
del %~dp0bprm\%%~nxf
ren %~dp0bprm\%%~nxf.xml %%~nf.xml
)

あくまで一例ですが、上記のようなコードもありでしょう。

作成したバッチファイル(例えば、Decrypt.bat)をconvert.exeと同じフォルダにおいておきます。

あとはこのバッチファイルにbprmファイルをドラッグアンドドロップするとフォルダ内のbprmファイルが全てコピーされたあとで変換されるという仕組みです。

コピーしてから変換、削除するので元のファイルを破壊する心配がありません。

コードを置換する

ただ、これで復号したxmlはそのままでは読みにくいので人間が読みやすいコードに変換しましょう。

以前作成したsplamでパラメータを人間が読みやすい名前に変えてくれるのでそれを利用しましょう。

なんかまだバグっているっぽいので修正します。

パラメータ置換後のxml

パラメータを置換すればこのように見やすくすることができます。

あとはこれらのファイルのパラメータを変更すればブキの性能が変わるという仕組みです。

暗号化

@echo off
mkdir %~dp0encrypt
for %%f in (*.xml) do (
copy %%f %~dp0encrypt\%%~nxf
%~dp0convert.exe batch %~dp0encrypt\%%~nxf
del %~dp0encrypt\%%~nxf
ren %~dp0encrypt\%%~nxf.byml %%~nf.bprm
)

再暗号化は同じコードで行なえます。

やはりそれでも一つずつしかファイルが処理できないのでバッチファイルを作成します。

動作確認していないのですが、多分上記みたいなコードで動作するはずです。

間違っていたら各自修正お願いします。

まとめ

今回はbprmをxmlに復号してパラメータを弄る方法について解説しました。

これさえできればブキの性能を弄るのはやりたい放題なはずですので、これ以上の解説は特に書くつもりがありません。

どういうことかというと次のような質問についてはわからないから答えられないということです。

  • どこを弄ればブラスター連射できるの
    • 知らん、自分で探して
  • どこを弄れば全塗りできるの
    • 知らん、自分で探して
  • インク消費量はどうやって変えるの
    • mInkConsumeを弄って

連射系は多分硬直フレームを変更とかなので “Frm” とかで検索かければみつかるんじゃないでしょうか?

記事は以上。