EMUNANDでBAN対策をしよう

Hack

emuNANDとは

そもそもemuNANDが何かわからないとダメなので、まずはNANDについて説明しましょう。

NANDというのはまあ非常に大雑把に言えばデータを保存するための回路(チップ)のことです。

USBメモリやSSD(Optaneとかはまた3D Xpointというベツモノなのだが)、MicroSDなんかにも使われています。

CDやHDDなどは違いますが、安価に大容量で耐久性もそこそこあるNAND型のメモリはすごく普及しているんですね。

で、ニンテンドースイッチには当然ゲームをインストールしたり、オペレーティングシステムを保存しておくための記憶媒体が必要です。

そして、そこにNANDが使われているんですね。

ニンテンドースイッチで使われるNAND

ニンテンドースイッチの記憶域にはこれまたすごく大雑把に三つの分野が存在します。

一つはMicroSDで、これも記憶域の一つですが外部の記憶域(ニンテンドースイッチ本体のNANDではない)なのでノーカウントです。

実際には32GBのNANDに詰め込まれているSYSTEMとUSERの二つがメインです。

SYSTEM領域にはオペレーティングシステムなどの重要なデータが書き込まれており、ここが壊れるとニンテンドースイッチが起動しなくなります。

もう一つはUSER領域で、ここにはゲームのセーブデータやインストールしたアップデータや録画した動画・スクリーンショットなどが保存されています。

後者のほうが当然多くの容量を使用するので、ニンテンドースイッチはSYSTEM領域に約3GB、USER領域に約26GBを割り当てています。

「え、足しても32GBにならないって?」それが1024と1000の違いが積み重なった結果なのですよ…

1KB=1000Bで換算しているため計算上の32GBは実際には29GB弱になってしまう。

NANDは全てのデータを保存しているので、例えばNSP(ゲーム)をインストールしたりするとそのインストールしたという情報などがNANDに残ってしまいます。

これを、NANDが汚れるなどと言ったりします。

汚れたNANDは任天堂がその気になれば改造したかどうかをチェックできるので、NSPをインストールしたことがあるスイッチを修理に出すと「不正な改造を行った痕跡があるので修理できない」として修理してもらえないことがあります。

改造前にNANDのバックアップをおこなっていればきれいなNANDで上書きすることができますが、故障してのであればそもそもNANDの上書きができません、これは困りました。

NSPインストールはゲームカートリッジを切り替えなくて済むので便利なんです。

NSPはインストールしたいがNANDは汚したくない、という人のために考えられたのがEMUNANDでした。

emuNANDの仕組み

さて、ニンテンドースイッチは普段は以下のようにデータのやり取りを行っています。

起動時にSYTEMを読み込んでオペレーティングシステムを動かし、ゲームを起動するときはUSER領域からセーブデータを読み込んだりなどです。

通常のニンテンドースイッチのデータやり取り

しかしこれでは先程述べたようにNANDが汚れてしまいます。

そこで、偉い人は以下のような仕組みを考えました。

emuNANDを用いたデータのやり取り

つまり、本来のNAND(SYSNANDと呼ばれる)にはアクセスせず、MicroSD内につくったNANDに対してアクセスするわけです。

NANDのコピーなんてできるの?と思うかもしれませんが、所詮は0と1のデータの集合なのでなんとかなります。賢い人、ほんとにすごい。

emuNANDの利点

  • NSPをインストールしてもSYSNANDのUSER領域が汚れない
  • SYSNANDとEMUNANDを切り換えることで改造状態と通常状態の切り替えが容易
  • 故障してもSDカードを抜けば改造していないスイッチと原理的に区別がつかない
  • SYSNANDを弄らないため、復旧不可能なブリック(ソフトウェア的な故障)に極めて陥りにくい

emuNANDの欠点

  • NANDのコピーであるためSDカードの容量を30GBほど消費する
    • 実際には全てを使うわけではないが、それでも20GBは使う
    • 最低でも64GBのMicroSDが必要
  • NANDに比べるとMicroSDの読み書きの速度は遅いのでパフォーマンスに影響がでる

パフォーマンスに影響がでるのは少々気になりますが、使ってみた感じは全然問題がありませんでした。

オススメの構築

EMUNANDを試そう!

hekate5.0.0から対応しているのですが、必要なものが全部揃ったパッケージツールのKosmosがhekate5.0.0を同梱しているのでそちらから利用するのがいいでしょう。

AtlasNX/Kosmos
All-in-One CFW Package for the Nintendo Switch - previously SDFilesSwitch - AtlasNX/Kosmos

また、RCMからインジェクトするペイロードもhekate5.0.0である必要があるのでTegraRcmGUIも最新版のものを用意します。

eliboa/TegraRcmGUI
C++ GUI for TegraRcmSmash (Fusée Gelée exploit for Nintendo Switch) - eliboa/TegraRcmGUI
hekate起動画面

さて、何やら今までの無機質な画面から現代的なフラットデザインの画面に切り替わった新しいデザインになりました。

おまけにタッチスクリーンにも対応しているのでかなり便利になりました。

eMMCの整合性チェック

eMMCのバックアップを行う前にOptionsから設定を変更しましょう。

Options
設定項目意味
Auto Boot自動でCFWが起動するようにする
Boot Time Delay起動遅延をする
説明は長くなるが、設定しておいたほうが良い
Auto NoGCヒューズチェックパッチ
チェック入れておいたほうがいい
Auto HOS Power OffHOSでシャットダウンしたときに15秒後に再起動する
Backlightバックライトの明るさ設定
Data VerificationNANDの整合性チェック

右下の “Data Verification(データ整合性チェック)” がOffになっていると流石にマズイので、”Sparse(ブロックチェック)” か “Full(バイナリチェック)” を選択しましょう。

オプション時間
Off9min
Sparse15min
Full(Slow)120min
Full(Hashes)15 – 120min

オプションによる所要時間の違いはだいたいこんな感じです。

Full(Slow)は以前のhekateで試したときにそのくらいかかったので、あれから高速化していたとしても少なくとも一時間くらいはかかるのではないでしょうか。

設定ができたら “Save Options” を押しましょう。

eMMCのバックアップ

まずは左上のToolsを選択して “Backup eMMC” を選択しましょう。

EMUNANDを試すだけであれば不要ですが、念のために “Dump Package1/2” もしておいた方が良いでしょう(こちらは2~3秒で終わります)

さて、あとは “Backup eMMC” を選択して待つだけです!!

emuMMCの作成

バックアップに成功したらホーム画面からemuMMCを選択しましょう!

最初はEnabled!と表示されているところがDisabledとなっていると思いますが、問題ありません。

まずは “Create emuMMC” を選択して、先程バックアップしたeMMCからemuMMCを作成します。

このとき、emuMMCの作成方法として “SD File” か “SD Partition” のどちらかが選べます。

両者の違いについて簡単にメモしておくので参考にしてください。

SD File

  • SDカード直下にファイルを作成する
    • ファイルがあるので編集が可能
  • 最適化されたパーティションではないので動作が遅い
    • と言っても気にならなかったが…
  • emuMMC向けのFastFSで解決しそうな様子
    • アプデを待っておくといいかも

SD Partition

  • SDカードを一度フォーマットしてemuMMC用のパーティションを作成する
    • フォーマットするのでデータは一度全部消える
  • パーティションが最適化されているので高速
    • 試そうとしたがエラーがでて使えず
    • フォーマットがexFATではダメで、FAT32である必要があるかも

EMUNAND作成には十分くらいかかるのでおとなしく待ちましょう。

設定できたら “Change emuMMC” を選択して作成したemuMMCを選びます。

OKを押すと画面が一つ戻るのですが、”emuMMC Info & Selection” の項目がEnabled!になっているはずです。

emuMMC成功!

EMUNANDの起動

さて、EMUNANDが作成できたらLauchを選択して起動するファイルを選びましょう。

SYSNANDはなるべく弄りたくないので起動しないほうが良いでしょう。

今回はCFW (EMUNAND) を起動しようと思います。

対するStockはOFW(改造されていない公式ファームウェア)を意味します。

ただ、どうもEMUNANDのStockは現在ブラックスクリーンのバグがある様子…

atmosphere 0.9.2で修正されたらしいですが、果たして?

インターネットに繋がらないようにしよう

CFWではいろいろいじって遊びたいのですが、どっちを起動しているのかわからないままオンラインに繋ぐとBANされてしまうので、絶対にインターネットに繋げないようにしましょう!

方法簡便性利便性信頼性
ユーザアカウント削除☆☆☆☆☆☆☆☆☆
端末初期化☆☆☆☆☆☆☆☆☆☆
LanPlay☆☆☆☆☆☆☆☆☆☆
90DNS☆☆☆☆☆☆☆☆☆☆☆☆☆☆
別端末の購入☆☆☆☆☆☆☆☆☆

ユーザアカウントを削除する

設定画面からユーザを選択して、アカウントごと削除してしまいましょう。

ただし、ぼく自身がリンクされたアカウントを持っていないのでこれはやっても大丈夫なのかという問題があります。

もしもリンクを削除すると本体固有IDとニンテンドーアカウントの紐付けが解除されたことが任天堂のサーバに伝わり、EMUNANDだけでなくSYSNANDの方でもリンクが外れたことになってしまう可能性があるためです。

リンクを外すときかユーザ削除のときにインターネット接続を促されるようであればキケンだと思ってください。

なので、この方法は検証不十分なためオススメしにくいです。

本体を初期化する

本体を初期化するとユーザデータも全て消えるので安心です。

が、これも同様にリンクが正しく外れるのかという問題が残ります。

それでも個別にリンクを外したりユーザを削除するよりは安心な気がしますね。

LanPlayを設定する

LanPlayでイカッチャを遊び尽くせ

LanPlayのFakeInternetオプションを有効にしていると全てのニンテンドーネットワークへのアクセスができなくなるので安全です。

ただし、これをやるとFTP経由でファイル操作ができなくなるのでコード開発者の方などは不便かもしれません。

コードを使うだけのエンドユーザであればこの方法が一番確実かもしれませんね。

注意点としてはニンテンドースイッチは自動でインターネットに繋いでしまうので有線だけでなく全ての接続可能なネットワークに対してLanPlayの設定を行う必要があるということです。

例えば、普段有線を使っているので有線に対してはLanPlayの設定をしたとします。

普段使っている場合にはそれで問題ありませんが、スイッチをドックから外してしまうと無線でインターネットに繋がってしまいます。

そのため、無線で繋がるアクセスポイントに対してもLanPlayを設定しなくてはいけません。

90DNSを利用する

90DNSというのはニンテンドーへのアクセスをブロックしてくれるDNSのことです。

DNS設定をこのようにする

簡単に設定できてIPアドレスも変わらないのでこの方法は一番手軽かもしれません。

LanPlayと同じく、全ての接続可能なネットワークに対して設定を行う必要があるのでご注意ください。

Auto Bootを設定する

Kosmos Toolboxから設定できるのでやりましょう。

起動すると以下のような設定画面があると思いますが…

デフォルトでEMUNANDの方を起動するようにしておきます。

ここはStock(EMUNAND)でも構わないのですが、一度Stockで起動してしまうとまたPCと繋がないとCFWで起動できなくなってしまうのでCFWを設定しておくのが良いでしょう。

CFWを起動した状態からStockで起動するのは簡単にできます。

こうすることでうっかりCFW(SYSNAND)で起動してNANDを汚してしまう心配が軽減されます。

まとめ

EMUNANDの実装でちゃんと運用していればものすごくBANされにくい環境はできたと思います。

うちのスイッチはニンテンドーアカウントとリンクしていないので、結構適当な扱いをしていますが今のところBANされていませんね。

コメント

  1. 匿名 より:

    わかりやすい記事ありがとうございます!
    これから未対策機のswitchを購入しようと思います^^

    1つ気になる点があるのですが、cfwを導入する際にsysnandに痕跡は残らないのでしょうか?
    そのままcfwを導入してもよいですか?

    • me より:

      実際に任天堂に修理を出したわけではないのでわからないのですが、改造した痕跡を検出するシステムが任天堂側にあるようです。
      なのでNANDにNSPをインストールしたり偽造証明書をインストールした状態で修理に出すのはマズいと思います。
      絶対とは言い切れませんが、改造前にクリーンなNANDをバックアップしておいてEMUNANDでCFWを運用するのが最も安全な手段ではないでしょうか?

  2. MEさんに実際にお世話になっている者 より:

    先日はお世話になりました。
    二台目を同様に弄ろうと思ってemuMMCのSD Fileで作成しました。
    早速EMUNANDを起動しようとすると一瞬Kosmosと表示されますが
    その後真っ暗になってしまいます。
    電源を長押しすれば電源が切れてもとには戻ります。
    Ver8.1.0で一台目と同じだったので簡単にできると思っていたのですが。
    SDカード(exFAT)を差すと更新を求められたのを無視してEMUNANDを作成してました(Kosmosは起動できたので)。
    きちんと更新してSDカードを認識させてから出ないとEMUNANDでの運用はできないのでしょうか?
    Ver9.0.1対応のKosmosがでるのを待つことになるのでしょうか(現在Ver9.0.0まで対応なのかな)?
    長文すみません。

    • えむいー より:

      アップデートしていないので確かめられず申し訳ないのですが、たしかにKosmosのリリースノートをみると9.0.0までのサポートしかしていないようですね。

      もしもNANDのバックアップがあるなら旧バージョンに戻せますが、どうしても9.0.1で弄りたい場合は対応を待つしかないと思います。

  3. MEさんに実際にお世話になっている者 より:

    ご助言ありがとうございました。
    Kosmosが対応するのを待ってみます。

    今後も応援させていただきます。

  4. MEさんに実際にお世話になっている者 より:

    KosmosはVer9.0.1に対応してました。
    その中のGoldleafしか使っていませんが…
    人柱報告でした。

    • えむいー より:

      報告ありがとうございます。対応しているのに EmuNANDが起動しないというのもおかしな話ですね。原因がわかればいいのですが…

  5. より:

    初めまして。現在、switch本体を2台(1台目は旧型・未対策機・cfw導入済、2台目は新型・対策機)持っているのですが、1台目で改造したデータ(セーブデータのみ)を2台目に送っても大丈夫でしょうか?又、その際に、BANの可能性を減らす方法も教えて頂ければ幸いです。ゲーム名はレッツゴー ピカチュウで、SXproを使っています。

    • えむいー より:

      改造したセーブデータをオンラインに繋げられるデバイスに送るのはCFWでネットワークに繋ぐのと実質同じなので同様に法的に罰せられる可能性(BANとはまた別の話)があるとご了承の上で読み進めてください。
      セーブデータ自体の改造チェックはおそらく行われていませんが、それを保証することはできません。データの移行はアカウントの移行を使うのが一般的かと思われますが、CFWでアカウントの引っ越しを行なうとニンテンドーサーバへのアクセスが要求されるためBANされてしまいます。

      なので、安全にセーブデータを移動させるには改造機をStockで起動する必要があります。ただ、二つのデバイスのバージョンが離れていると高い方に強制的に合わせられる可能性があります。

  6. より:

    丁寧な解説、有り難うございます。ちなみに、SXproはステルスモードにしておいた方が良いのでしょうか?又、switch本体を再起動すればcfwを解除できるのでしょうか?あと、本体(改造機)のアップデート等は、これ以上行わない方が良いのでしょうか?初歩的な質問ばかりで申し訳ございません。

    • えむいー より:

      ステルスモードは90DNSと同等の効果を持つのでニンテンドーサーバへのアクセスを全てブロックします。なので基本的にはBANの危険性はないと思われます。SXOSを持っていないのでわからないのですが、Stockとして起動する機能はないのでしょうか?

      アップデートは行っても問題ありませんが、SXOSがサポートしていないバージョンまで上げてしまうとNANDのバックアップがない限りダウングレードができなくなるのでサポートされるまでは上げないのが無難だと思います。

  7. より:

    初めまして!
    分かりやすくて助かります。
    質問なのですが
    順調に進めていって
    Kosmosのロゴが出るところまでは
    行ったんですがそれから暗転したまま
    画面が動かずCFWが起動しません。
    SYSNANDでは起動できるのですが
    EMUNANDではこのような事象が起きてしまいます。
    何が原因なのでしょうか?
    御教授お願い申し上げます。
    SDはFAT32でフォーマットしてます。

    • より:

      Switchのバージョンは9.0.1です

    • えむいー より:

      同じようにKosmosから画面が動かないという方が他にもいらっしゃるようですが、現在のところ原因がわからないとしかお答えできません。

      現状、自分の環境では動いていますのでそれが動かなくなったときに解決策として記事を書くかもしれません。
      再現ができない以上、対策が取れないことをご理解ください。

  8. へっぽこ丸 より:

    はじめまして!
    CFWをsysnandで起動してるものです!
    (emunandで起動しないため)
    現在90DNSでSwitchをプレイしてるのですが
    ポケモンのオンライン対戦がしたくなったので(改造はしていない)
    SDカードを抜き、Switchの電源を1度落とし、CFWが起動しないのを確認して(FWも確認)インターネット回線を通常のものに戻してオンラインに接続するのは危険でしょうか。ちなみにパッケージ版です(どうでもいい)

    • えむいー より:

      EMUNANDでStockは起動するのでしょうか?そうであればそちらを利用するほうが安全と思われます。

      起動しないのであればSDカードを抜いた状態で再起動すればOFWで起動するので安全です。ただし、改造したデータなどがあった場合、BANされないという保証はできません。

    • へっぽこ丸 より:

      回答ありがとうございます!
      とりあえず後者の方で試してみたいと思います!もしBANされたら大人しく違うSwitchで遊びます( ´・ω・`)
      未対策機2台対策機1台持ちなので進展があったら未対策機もう1台で色々いじってみます!ありがとうございました!

    • えむいー より:

      未連携のアカウントで半年ほどCFWで遊んでいましたが、環境を初期化するとBANもされておらずにオンラインプレイができたので、アカウント未連携が最強のBAN対策だとは思います。

  9. 匿名 より:

    コメント失礼します。
    EMUNANDでの運用です。
    ポケモンのセーブデータを弄ろうと思い、Checkpointでセーブデータを吸出してPKHEXで中身を弄って保存しようとした所、保存先が見つからない等で保存できず。
    うまく説明ができないのですが、そのまま弄ってもPCにコピーして弄って戻そうとしてもうまくいきません。
    セーブデータが増えたり無くなったりして訳がわかりません。
    EMUNANDのセーブデータは弄れないのでしょうか?

    • えむいー より:

      EMUNANDもセーブデータは弄れますよ。
      ポケモンのゲームを所持しておらず、再現ができないのが申し訳ないのですが…

    • 匿名 より:

      返信ありがとうございます。
      何が不具合を起こしているか、再度検証してみます。
      もしかするとカードリーダーかもしれませんね。

  10. 匿名 より:

    アカウント未連携状態でNSPインストール等を行った本体を初期化してもNANDは汚れたままになるのでしょうか?

    • えむいー より:

      NANDが汚れるというのはアカウント連携には関係なくNSPインストールによって発生します。
      が、本体を初期化するとどうもNSPインストールの履歴も初期化されるようです(絶対とは断言できないのでご注意ください)

タイトルとURLをコピーしました