[IPSwitch] 4.6.0を解析する

ver4.6.0がリリースされた

IPSwitchですが、ver4.4.0の段階で更新が止まっています。

他力本願でも仕方がないので自分でコードを見つけていきましょう。

コードの移植はGHIDRAを利用したものが手っ取り早いです。

こんなソフトが無料で使えてしまっていいんでしょうか…

https://tkgstrator.work/?p=12367

基本的なやり方は4.5.1向けの移植と全く同じです。

基本情報

では、早速nsobidを調べましょう。

他に便利な方法があるのかもしれませんが、自分はバイナリエディタで確認する方法しか知りません。

nsobid

nsobidとはNSO Build IDのこと。

要するにゲームのバージョンとかを識別する情報と思っていただければ良い。

一般的に、バージョンが上がるたびにこの数字は変わりますが、バイナリエディタで確認すればいいだけなので簡単に調べられます。

今回はShadow氏が先にnsobidを公開してくれていたので、その値を利用しました。

nsobidは “2016F8E21A7C725083F9A87D4BB91AF3” になります。

オフセット値

Splatoon 2の場合はこの値はバージョンに依らず0x100で固定です。

多分、どのゲームでも固定ですが他のゲームは解析したことがないのでわかりません。

コーディング

まず、先程の情報をpatches.pchtxtに記述します。

@frag offset_shift の値は0x100で固定なので何も弄りません。

@nsobid-2016F8E21A7C725083F9A87D4BB91AF3

@flag offset_shift 0x100

/ ********************************************************************
/
/ (c) 2018 OatmealDome and contributors
/ Licensed under GPLv3, please visit the following URL for more info:
/ https://www.gnu.org/licenses/gpl-3.0.en.html
/
# Splatoon 2 4.6.0 Patches
/
/ Dedicated to Simonx22
/
/ ********************************************************************

では、ワンオペを可能にするコードを書いていきましょう。

今回は4.5.1向けのコードを4.6.0に移植します。

ワンオペ

// 4.6.0
// One Player Private Battles [OatmealDome]
@enabled
0035CB38 1F2003D51F2003D50900
0035CB43 14
00363C20 1F2003D51F2003D50900
00363C2B 14
0146FA3C 21008052
0148CE10 21008052
0148C46C 1F2003D5

一人でプラベをしたり、ワンオペでサーモンランをしたりするのに必要なコードです。

“PrivateMatchPassSingle” でテキスト検索をして、その前後のアドレスを調べればすぐに見つかります。

“Msg_InvalidTeamSelect” というのはチーム分けが正しいかどうかを判定する関数ですので、それもパスするようにしましょう。

殆ど変わっていないので簡単に実装することが出来ました。

プラベでワンオペ
サーモンランでワンオペ

スペシャル回数変更

オンラインでも使用できてしまうのでコードは公開しません。

たまに「オンラインで使わないので教えてください」っていう人が現れるんですが、そんなことを言われても信用もまったくないのでやっぱりコードは渡せません。

金イクラドロップ数変更

これもやはりオンラインで使えてしまうのでコードは公開しません。

金イクラドロップ数を変更

10個以上に設定すると、ドロップ時の金イクラの落ち方が定義されていないのでバグります。

違法ブキ開放

イカッチャで全てのブキを使用可能にするコードです。

container12345氏が見つけたコードで、掲載許可がいただけたのでコードの解説します。

まず、それぞれのブキにはイカッチャのサーモンランで使用可能かどうかのフラグが存在します。

そのパラメータはMush/WeaponInfo_Main.release.bymlにも記述されているのでこちらを変更することでも実はクマブキ開放は可能です。

で、肝心のパラメータはブキごとに設定された”CoopAddition”というものです。

これが0であればサーモンランで選択可能になるので、WeaponInfo_Main.release.byml読み込み時にパラメータの値を常に0にするようなコードを書けば良いことになります。

ただし、このコードを使うとありとあらゆるブキが使用可能になるので実際にはインクがでないために使い物にならないブキも選択可能になります。

また、非改造機と通信時に使用すると必ずクラッシュします。

?ブキは選択可能ブキからランダムに一つ選ばれるので、このコードをオンにしているとクマブキも選択されることがあります。

逆に言えば、このコード適用中は不用意に?ブキを選択すると非改造機がいた場合、ホストがクラッシュします。

全ブキ開放した状態

敵インク無効化

敵インクによるダメージが0になるだけなので、普通に足元はとられますし、水没したり落下したりするとデス扱いになります。

また、サーモンランですとシャケに殴られるとノックバックします。

公開していいかどうか微妙なんですが、GitHubで公開しているっていうことは公開してもいいんでしょう、多分。

敵インク無効化コードは “F7 03 04 2A F6 03 02 AA F5 03 01 2A F4 03 00 AA” でバイナリ検索すれば一発ですね。

// Godmode [SplatNut]
@disabled
01020808 160080D2

動作確認してないのですが、多分動きます。

まとめ

逆アセンブラはNSAが公開したGHIDRAがすごく便利だと思います、これがあればIDAもう要らないですね。

最近、PS4でアトリエシリーズやりたいなーっておもってます。

スイッチ版でも構わないんですけれど、やっぱり画質はPS4版のほうが良さそうなので。

プレイ済みの方がいたら新作アトリエの感想がききたいです、教えてください。

有機ELの大画面で楽しみたい!!でもお金がない!!

欲しいものリストを公開してあるので誕生日プレゼントになにかください!!

最近めっちゃらき☆すたにハマってます。

記事は以上。