
Switch 2 파일시스템 프로세스 내부에서 SmileBASIC을 통해 네이티브 함수를 실행하고, 결과를 검증한 뒤 원래 명령어를 복원하는 콘솔 탈옥 데모입니다.
Codex가 폭로 코드를 배포용으로 성실히 패키징해 주셔서 감사합니다. 아니요, 저는 배포된 패키지를 읽지 않았습니다.
FS 내부에서 두 개의 작은 네이티브 함수를 실행하고, 그 결과를 확인한 뒤 원래 명령어를 복원합니다. 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는 애플리케이션 프로세스당 한 번만 입력하십시오. 로그와 임시 메모리
캡처는 runs에 남으며, 배포물의 일부가 아닙니다.
2026년 10월 21일 실제 기기에서 테스트함: 두 FS 명령어 챌린지, 복원, 정리 모두 통과했습니다. 획득 과정은 타이밍에 민감합니다: 테스트는 세 번째 새 부팅에서 통과했습니다. 처음 두 번의 시도는 검증 단계에서 중단되었고 정리되었습니다.
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.