スプラのチートと任天堂の対策

チートとは

任天堂はいつからかアンチチートチートシステムをスプラトゥーン2に組み込んでいます。

このアンチチートシステムはとても強力で、LFSとExeFSの改変を検知して自動でBANすることができました。

チートに疎い方は「LFS?」「ExeFS?」となると思うので簡単に解説したいと思います。

LFS

LFSとはLayered File Systemのことで、ものすごく簡単に説明すると内部パラメータを弄ったxmlなどのファイルを本来のファイルから自動的に置換してくれる仕組みのことです。

これが実装されているおかげで3DモデルやBGMやブキのパラメータを簡単に変更することができるのです。

LFSによるチートの代表的なものはブキの射程が無限、全塗り、SP必要ポイント0などがあります。

ExeFS

ExeFSとはExecutable File Systemのことで、実行可能なファイルシステムのことを指します。

ものすごく簡単に言うとWindowsにおけるexeファイルのようなものです。

Nintendo SwitchにおけるExeFSとは “/main”, “/main.npdm” のようなファイルを指します。

https://switchbrew.org/wiki/ExeFS

LFSがファイルを弄るものだったのに対して、こちらはゲーム本体を弄る感じに近いです。

俗に言うチートコードや一昔前のサイバーガジェットの製品であるPARなどの挙動がExeFSの改変にあたります。

ExeFSによるチートの代表的なものは空を飛ぶ、無敵化、ウォールハックなどがあります。

LFS vs ExeFS

実装の簡単さはLFSがExeFSに勝ります。

というのも、ファイルを復号してから内部のパラメータを直接変えることができるからです。

特に、スプラトゥーン2はパラメータがxmlで書かれているため、ある程度のプログラミング技術がある方であれば難なく書き換えができてしまいます。

更に、バージョンが更新されても (4.5.0→4.5.1のような) マイナーアップデートではパラメータファイルは変更がない場合が多く、使い回しが効くのも便利なところです。

例えば、バトル中のBGM変更についてはリリースから一度も変更されていないのでファイルを置き換えれば永続的に効果が反映されます。

バトル中BGM変更のLFSによる実装

このような感じでBGMを1のものに変更することができます。

というか、どうしてもSplattackが聴きたかったのがそもそもの始まりなんですよね。

早く1のBGMを実装してください、お願いします。

このように、元々ゲーム内に実装されていないデータを扱う場合にはLFSでないといけません。

逆に、既に内部情報として持っているデータを扱う場合にはExeFSが勝ります。

ブキのパラメータ変更などはLFSでもExeFSでも実現できますが、LFSの方が手軽で細かい調整がききます。

ExeFSで射程を変更しようとすると、 “全てのブキの射程が2倍” になったりとブキごとの調整などは難しかったりします。

理論上、ExeFSで実現できないチートはありません。

それを見つけるのがLFSとは比べ物にならないくらい難しいというだけです。

アンチチートシステム

以前の記事で紹介した任天堂のアンチチートシステムですが、ver3.1.0以降導入されており、オンラインでチートして検知された場合はチーターのフラグがつけられてしまいます。

チーターのフラグがつけられると、BANされてしまい翌日からニンテンドーネットワークに接続できなくなります。

BANの種類はいろいろありますが、LFSやExeFSを有効化したままオンラインにするとゲームBANされるようです。

ゲームBANの詳細については上記の記事を御一読ください。

2018年12月24日にはスプラの裏界隈では有名なKhangaroo氏がBANを受けたことが明らかにされています。

氏が行っていた改変は以下の通り。

  • 未リリースステージのプラベでのバトル(LFS)
  • プラベでのパラメータハック(LFS)
  • 海賊版のオクトエキスパンションのプレイ
  • ニューススキップ(ExeFS)
  • BGM無効化(ExeFS)

まあこれだけオンラインでやらかしていたらBANされても仕方ないのでは…という気もしますね。

プラベであったとしてもロビーに入った段階でチート検出に引っかかるらしいので、オンラインプラベでチートを使うのはご法度です。

そもそもロビーに入った時点でニンテンドーネットワークに接続するので、LFSやExeFSが有効な状態で入るべきではないです。普通に犯罪です。

#ところが

しかし、特別体験版でのチートでの荒れ具合を経て衝撃の事実が明らかになります。

ところで、面白い話があるんだ。我々が調査したここ二ヶ月の間、スプラトゥーン2におけるアンチチートシステムがバトル中はオフになっていたんだ。誰でもマッチングに飛び込んで好き勝手できたかもしれない。特別体験版がチートできることからもわかると思うけれど。任天堂はいい仕事をしたね。

https://twitter.com/shadowninja108/status/1110608847419269120

いい仕事をしたね(Nice job Nintendo)の一文は明らかに任天堂に対する皮肉でしょうね。

Shadowninja108氏はスプラの裏界隈ではHACGUIなどのリリースでかなり有名な人です。

氏が言うのですからこの情報はある程度信頼できるものと言って良いでしょう。

これに対してスプラトゥーン界の神の一人であるOatmealDome氏も反応しています。

任天堂はスプラトゥーン2のチート検出システムでとんでもないことをやらかしてくれた。

https://twitter.com/OatmealDome/status/1110609403076583429

なんと、特別体験版に限らずここ二ヶ月もの間チート検出システムっが全く働いていなかったようです。

確かにとんでもないことをやらかしてくれていますね。

まとめ

これが事実だとしたら、なんでこのタイミングで任天堂はアンチチートシステムをやめたのか理解に苦しみます。

何が楽しいのかはわかりませんが、BANされなければオンラインでチートしてやろうっていう層は残念ながら一定数存在します。

さっさと不正競争防止法違反か私電磁的記録不正作出で逮捕されてくれっていう感じですね。

というか任天堂ほどの会社が見せしめにオンラインチーターを摘発しない理由がちょっと思いつきません。

影響力が大きい会社なので一発やってほしいところなんですが。

一般財団法人デジタルコンテンツ協会の平成28年3月付け「平成27年度産業経済研究委託事業 コンテンツ保護の技術的手段に係る法制度及び技術動向等に関する調査研究」によれば、チート行為は、ゲームプログラムを書き換えるものではなく、ゲーム内のアイテム等に係るデータを書き換えるものと分析されています。

http://www.tatsumura-law.com/attorneys/tomoko-inaba/column/?p=527

この見解によるとLFSはチートで、ExeFSはチートでないっていうことになりますね。

Hackについて

こういう改造に関する記事を書くと噛みついてきたり、注意喚起してきてくれる人が一定数いるんですが、正直言って余計なお世話です。

ゲームの内部データを探るような行為はリバースエンジニアリングと呼ばれるものですが、これは現在の日本の法律では違法とされていません。

ソフトウェアの解析が違法になったらコンピュータウイルスを解析してワクチンソフト(個人的にはこの書き方は嫌いなのですが)を開発することも違法になってしまいます。

つまり、リバースエンジニアリングは完全に合法です。後ろ指を指される謂れは何もありません。

ただし、任天堂の規約ではリバースエンジニアリングが禁じられているので、改造が原因で任天堂からBANされることに文句を言ってはいけません。

任天堂の規約が真に正当性があるものかどうかは独占禁止法の観点から議論の余地があるとは思いますが、現状は異議申し立てしない限りは従うべきでしょう。

特に、プロプライエタリソフトウェアに関しては、法ではなくライセンスあるいは契約の下で、逆アセンブルなどのリバースエンジニアリングでソースコードの抽出などを禁止する旨が書かれていることがほとんどだが、そのような条項は独占禁止法の見地からも問題があるとも言われている[4]。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

少なくともぼくは任天堂の規約の観点からはニンテンドースイッチの改造は褒められるべき・推奨されるべき行為でないことは理解しています。

理解しているので「それは良くないよ」と言われても「いや、知っているが?」としか返事できないわけですね。

また、当ブログは技術ブログであり改造の推奨や奨励を行っておりません。こういう情報もあるよ、こういう事もできるよということをつらつらと紹介するだけの記事です。

個人的には「良くないことだと思いながらこっそりやる」よりも「悪いことなのに悪いことだと思わず堂々とやる」方がタチが悪いと思うんですが、皆さんの意見はいかがでしょうか?

まあとりあえず任天堂はチート対策に本腰を入れていただけると幸いです。