
SmileBASICを介してSwitch 2のファイルシステムプロセス内でネイティブ関数を実行し、結果を検証して元の命令を復元するコンソール脱獄デモ。
Codex、エクスプロイトを配布用に律儀にパッケージ化してくれてありがとう。いいえ、配布パッケージは読んでいません。
FS 内で 2 つの小さなネイティブ関数を実行し、その結果を確認して、元の命令を復元します。Switch 2 専用で、npm install やコンパイラは不要です。
必要なものは SmileBASIC 4.4.9、システムソフトウェア 23.0.1、macOS または Linux 上の Node.js 22+、そして SmileBASIC のセーブ領域に 20 MiB 以上の空きです。コンピュータと本体は同じ到達可能なネットワーク上にある必要があります。
SmileBASIC の Make a Program で、bootstrap.bas をスロット 0 に入力し、NS2 として保存します。USB キーボードがあると便利です。ZIP はコンピュータ用パッケージであり、SmileBASIC のインポートファイルではありません。公開されたダウンロードキーはありません。
本体を再起動し、SmileBASIC を開いて Direct モードに入ります。
コンピュータで、展開したフォルダのターミナルを開き、次を実行します:
node run.cjs
求められた場合は、本体から到達可能なコンピュータのアドレスを選択します。直接指定することもできます: node run.cjs 192.168.1.10。接続にはポート 39380 を使用します。
SmileBASIC で、保存したプログラムをロードし、以下のコマンドを個別に入力します:
LOAD "TXT:NS2"
RUN
REMOVE NSR,&H60000000,&H3FFFFFFF
ロードを確認します。REMOVE による Out of memory メッセージは想定どおりです。次に、コンピュータが表示した V=START(...) の行を入力します。
FS execution verified が表示されるまで、SmileBASIC を開いたまま、コンピュータをスリープさせないでください。終了したら本体を再起動します。これにより元の RO プロセスも復元されます。このデモはカスタムファームウェアや永続化をインストールしません。
実行に失敗した場合は、runs フォルダを保持し、再試行する前に本体を再起動してください。REMOVE はアプリケーションプロセスごとに 1 回だけ入力します。ログと一時的なメモリキャプチャは runs に残りますが、これらは配布物には含まれません。
2026 年 10 月 21 日に実機でテスト済み: 両方の FS 命令チャレンジ、復元、クリーンアップが成功しました。取得はタイミングに敏感です: テストは 3 回目の新規起動で成功しました。最初の 2 回の試行は検証チェックで停止し、クリーンアップされました。
run.cjs はホスト側のエントリポイントです。engine/switch2/pipeline.cjs には固定された起動シーケンスが含まれています。engine/switch2/process/fs-execute.cjs には FS デモが含まれています。ネイティブヘルパーとそのソースは engine/switch2/ro/payload/ にあります。開発者は Zig 0.15.2 で再現できます:
node engine/build-payload.cjs --check --zig /path/to/zig。