先日『あつまれ どうぶつの森』がエミュレータで動いてるよ、という記事でセーブデータエディタの存在に関するコメントをいただきました。
この件は記事化するのを見送っていたのですが、コメントをいただいたということはセーブデータエディタを探している人が多いのではないかと思い、注意喚起の意味も含めて記事を書くことにしました。
暗号化されたセーブデータ
まず、2020年3月20日に発売された『あつまれ どうぶつの森』のセーブデータがいかに特殊なのかについて説明します。
セーブデータは、Nintendo Switch本体に保存されます。しかもSwitchのサービスのはずだった「ユーザーの引っ越し」や「セーブデータの引っ越し」には非対応です。つまり、Switchを買い換えても普通の枠組みであればできるセーブデータの引っ越しができません。仮にパッケージ版とダウンロード版を併用したとしても、セーブデータは1つしか作成できません。
ただし、セーブデータ引っ越しについては批判が多かったため(というか、本体買い換えたらデータもパーというのはあまりにも酷い対応です)、公式サイトのFAQで以下のように告知されています。
本ソフト独自の形で、ユーザーやセーブデータを他の本体に引っ越しさせる機能を検討しています。対応時期は年内を予定しています。対応内容や時期の詳細は、改めてご案内いたします。
Nintendo Switch Onlineのセーブデータお預かりサービスには対応しておりませんが、Nintendo Switch本体の故障・紛失・盗難に備えて、Nintendo Switch Online加入者向けに、本ソフト独自の形で、セーブデータをバックアップする機能を検討しています。対応時期は年内を予定しています。対応内容や時期の詳細は、改めてご案内いたします。
3月発売のタイトルの対応時期が年内、ということは、現時点で対応策を全く用意していなかったということでしょう。
このようなNintendo Switch Onlineの「セーブデータお預かり」サービスにも対応しないという方針は、正式には発表されていませんがおそらくオンラインチート対策の可能性が高いです。ユーザーの利便性よりもチート対策を重視したのではないでしょうか。発売前後の流れをご説明します。
なお、この後出てくるACNHは『あつまれ どうぶつの森』の海外版『Animal Crossing: New Horizons』の頭文字を取ったものです。
有志によるセーブデータ暗号化解除
shadowninja108氏が2020年3月18日午前9:35に、ここに至った経緯は分かりませんが(ネット上に流出したゲームデータを解析したらしいですが)、どうぶつの森のセーブデータ暗号化解除に成功したことを示唆するツイートをしています。
Animal Crossing’s save encryption is a good meme pic.twitter.com/TAzxdgaSwZ
— Eman Cisab (@shadowninja108) March 18, 2020
どうぶつの森のセーブデータ暗号化方法はネタとしてはいいよね。
dualie_ink氏も2020年3月18日午前11:47にどうぶつの森のセーブデータを復号するコードを公開します。
a quick C++ PoC for decrypting ACNH saves. C++ because in case someone wants to use it in a homebrew or something https://t.co/0Ai60d6K31
— Dualie (@dualie_ink) March 18, 2020
ACNHを復号化するためにC++でPoC作りました。C++なのはHomebrewなどへの応用に備えてです。
dualie_ink氏はeffective-guacamoleとして『あつまれ どうぶつの森』のセーブデータ復号化コードを公開します。
そして2020年3月18日午後0:01。shadowninja108氏の報告を受けOatmealDome氏がつぶやきます。
AC:NH's save files are encrypted, probably to prevent editing and other tampering… And now the encryption algorithm has been broken before the game's release(!), paving the way for save editors and other tools.
With credits to: @dualie_ink @shadowninja108 https://t.co/maxJo66wrr
— OatmealDome (@OatmealDome) March 18, 2020
ぶつ森のセーブデータは編集や改ざん防止のため暗号化されてます…が、ゲーム発売前に暗号化アルゴリズムがぶっ壊されました。セーブエディタなどのツールへの道が開きましたね。
@dualie_ink氏と@shadowninja108氏のおかげです。
2020年3月18日午後0:08
My implementation of the decryption for the ACNH saves. https://t.co/wtFhB4SngJ
— Eman Cisab (@shadowninja108) March 18, 2020
ACNHのセーブデータ復号化を実装してみました。
この時点でshadowninja108氏はBlanketとして『あつまれ どうぶつの森』のセーブデータの復号化情報をGitHubで公開しました。
この時点でdualie_ink氏とshadowninja108氏の二人が(他にもいるかもしれませんが、私が把握しているのはこのお二方だけです)どうぶつの森のセーブデータ暗号化解除に成功していたことになります。
ここまでは『あつまれ どうぶつの森』発売前の出来事です。流出して解析に使われた『あつまれ どうぶつの森』のバージョンは初期バージョンのv1.0.0です。
『あつまれ どうぶつの森』発売前の更新データ配布
2020年3月19日午前10:17 の『あつまれ どうぶつの森』前日に任天堂がアップデート(v1.1.0)公開を公表します。
[トピックス]いよいよ無人島に出発!『あつまれ どうぶつの森』の発売日アップデート内容や特典などをご紹介! https://t.co/gxTeW7rqxB
— 任天堂株式会社 (@Nintendo) March 19, 2020
なんと、v1.1.0の更新データは発売日前の3月19日(木)から配信が開始されます。要するに、v1.1.0でないとプレイできないように任天堂が発売日前にブロックしたことになります。
この更新データをSciresM氏が解析します。2020年3月19日午前11:15です。
FYI, looking at the Animal Crossing update, you should expect bans if you go online with cheats/mods active.
There's code for calculating an AES CBC-MAC over the executable's .text/.rodata, presumably to verify on server.
(Check e.g. 1.1.0 .text + 0xB3DF8 if interested).
— Michael (@SciresM) March 19, 2020
ちなみに、どうぶつの森の更新データを見てみました。チートや改造してオンラインに繋ぐとまずBANされます。
実行ファイル.text/.rodataでAES CBC-MACを計算するコードがありました。おそらくサーバー側で検証するために使うものだと思われます。
興味がある方はv1.1.0の .text + 0xB3DF8を確認してみてください。
これを見たOatmealDome氏は2020年3月19日午前11:17にv1.1.0がチート対策であることに気がつきます。
a n t i – c h e a t https://t.co/wEZw2wKkkq
— OatmealDome (@OatmealDome) March 19, 2020
チート対策だ
流れとしては上記のような感じになっています。
発売前からのいたちごっこ
時系列的に、偶然任天堂がv1.1.0を用意していたとは考えにくい状況です。誰かが発売前に改造セーブデータでサーバーに接続に行って痕跡を残したのかもしれませんし、任天堂がSNSを監視していたのかもしれませんが、『あつまれ どうぶつの森』発売前に、任天堂としてはオンラインチェック機能が強化されたSwitchの特徴を活かした速やかな対策を講じたことになります。
ここではあえて書きませんが、上記ツイートの情報の中にセーブデータ改変用のWindows向けexeファイルを配布しているリンクが紛れています。現時点でv1.1.0に対応しています。ただし、任天堂のサーバー側でチェックする機構はいかんともしがたいので、改造したセーブデータでオンライン接続するチート行為だけはくれぐれも行わないようにして下さい。確実にBANされます。