
عرض توضيحي لكسر حماية وحدة التحكم ينفّذ دوال أصلية داخل عملية نظام ملفات Switch 2 عبر SmileBASIC، ويتحقق من النتائج، ويستعيد التعليمات الأصلية.
شكرًا لك Codex على تغليف الاستغلالات بعناية لتوزيعها. لا، لم أقرأ الحزمة الموزّعة.
يشغّل دالتين أصليتين صغيرتين داخل FS، ويتحقق من نتائجهما، ويستعيد التعليمات الأصلية. خاص بـ Switch 2 فقط؛ لا حاجة إلى npm install أو مُصرِّف.
تحتاج إلى SmileBASIC 4.4.9، وبرنامج النظام 23.0.1، وNode.js 22+ على macOS أو Linux، وأكثر من 20 MiB حرة في حفظ SmileBASIC. يجب أن يكون الحاسوب والمنصة على الشبكة نفسها القابلة للوصول.
في Make a Program ضمن SmileBASIC، أدخل 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
أكّد التحميل. رسالة Out of memory الصادرة من REMOVE متوقعة.
ثم أدخل سطر V=START(...) الذي يطبعه الحاسوب.
أبقِ SmileBASIC مفتوحًا والحاسوب مستيقظًا حتى ظهور FS execution verified. أعد تشغيل المنصة عند الانتهاء؛ فذلك يعيد أيضًا عملية RO الأصلية. لا يثبّت هذا العرض التوضيحي برنامجًا ثابتًا مخصصًا ولا استمرارية.
إذا فشل التشغيل، فأبقِ مجلد runs وأعد تشغيل المنصة قبل المحاولة
مجددًا. أدخل REMOVE مرة واحدة فقط لكل عملية تطبيق. تبقى السجلات ولقطات
الذاكرة المؤقتة في runs؛ وهي ليست جزءًا من الحزمة القابلة للتوزيع.
اختُبر فعليًا في 21 أكتوبر 2026: نجح تحديا تعليمات 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.