كيفية اختراق سيجا دريم كاست وحدة حماية نسخة


بعد إصدار كتاب DOOM Black Book ، ذهبت في عطلة إلى اليابان ، حيث تمكنت من لعب Ikaruga على آلة أركيد حقيقية في غرفة ألعاب Taito HEY في حي أكيهابارا بطوكيو. أحيت هذه التجربة مجددًا اهتمامي بأحدث أجهزة ألعاب فيديو SEGA - Dreamcast.

على الشبكة ، يمكنك العثور على العديد من المستندات التي تسهل إلى حد كبير عملية دراسة المشكلة. هناك نوعان من الموارد الممتازة التي يمكنها تحديث أي شخص بسرعة: موقع Marcus Comstedt الرائع ، الذي يصف كل شيء وصولاً إلى سجلات GPU ، ومورد Jockel "لنقم بإنشاء لعبة لـ Sega Dreamcast من البداية . "

عندما درست السيارة ، اكتشفت قصة مدهشة حول كيفية اختراق المتسللين بسرعة لحماية نسخ الألعاب وتدمير آمال SEGA الأخيرة بالأجهزة.

المستوى الأول من الحماية: GD-ROM


على الورق ، تبدو حماية نسخ SEGA Dreamcast قوية جدًا. تم تسليم الألعاب على وسيط خاص يسمى GD-ROM ، والذي يمكن أن تنتج SEGA فقط. يرمز GD إلى "Gigabyte Disc" ("gigabyte disk") ، أي أن كثافته المتزايدة للتسجيل توفر حجمًا أقصى يصل إلى 1 جيجابايت ، وهو أكثر بكثير من إمكانات القرص المضغوط التقليدي (700 ميجابايت).


الصورة

كان للـ GD-ROM نفس الأبعاد المادية للقرص المضغوط ، لكن على المستوى الكلي ، كان يتألف من منطقتين يمكن تمييزهما بالعين المجردة.

المنطقة الأولى (الداكنة) هي منطقة منخفضة الكثافة متوافقة مع القرص المضغوط تحتوي على ما يصل إلى 35 ميجابايت. احتوت على مسار صوتي لتذكير المستخدم بأن محتويات القرص كانت مخصصة لـ SEGA Dreamcast ، وليس لمشغل أقراص مضغوطة [1] . إضافةً إلى ذلك ، أضاف المطور مسارًا به ملفات نصية ، على سبيل المثال ، معلومات حقوق النشر ، وأحيانًا مواد ترويجية ، على سبيل المثال ، فن من اللعبة.

تم تخزين المنطقة ذات الكثافة العالية (الخفيفة) حتى 984 ميغابايت [2] وكانت جميع محتويات اللعبة موجودة عليها.

بدا من المستحيل على المتسللين إخراج اللعبة من القرص وحرقها مرة أخرى للتوزيع.

التشغيل من GD-ROM: IP.BIN و 1 ST_READ.BIN


قبل أن نتحدث عن كيفية تمكن القراصنة من نسخ الألعاب ، نحتاج إلى فهم تسلسل التحميل. لم يكن لدى Dreamcast نظام تشغيل. هناك اعتقاد خاطئ شائع بأنه يستخدم Windows CE ، ولكن في الواقع ، كان Microsoft OS مجرد مكتبة ثابتة إضافية يمكن لمطوري Dreamcast الاتصال بها لاستخدام DirectX و DirectInput و DirectSound [3] . في بعض الألعاب ، تم استخدام WinCE [4] ، ولكن في معظم (على سبيل المثال ، Ikaruga) لم يتم استخدامه. بغض النظر عن ما استخدمه المطور ، فإن اللعبة التي تحتوي على نظام تشغيل متصل بالكامل و Dreamcast بدأت دائمًا بنفس الطريقة.

أثناء الاستخدام العادي وإطلاق اللعبة الرسمية على Dreamcast الذي تم تنشيطه حديثًا ، تم إطلاق BOOTROM لتنزيل برنامج bootstrap من GD-ROM إلى RAM. عرض هذا البرنامج الصغير ، الموجود على آخر مسار GD-ROM والمعروف لدى المجتمع باسم "IP.BIN" ، شاشة مرخصة من SEGA وأجرى مستويَيْن للإقلاع لإعداد سجلات الأجهزة وإنشاء مكدس CPU وتهيئة VBR [5] .

الأهم من ذلك ، احتوى IP.BIN على اسم اللعبة القابلة للتنفيذ. تم البحث عن هذا الاسم في نظام ملفات GD-ROM وتحميله في ذاكرة الوصول العشوائي في 0x8C010000 ، وبعد ذلك تم نقل البرنامج هناك. بشكل عام ، تم تسمية الملف القابل للتنفيذ باسم "1ST_READ.BIN".


بعد أن انتقلت وحدة المعالجة المركزية إلى العنوان 0x8C010000 ، بدأت اللعبة كما ينبغي.

المستوى الثاني من الحماية: ransomware تشويش إذاعي


نشأت الاحتمالية النظرية للقرصنة نظرًا لضعف قدرة Dreamcast على ما يبدو على التمهيد ليس من GD-ROM ، ولكن من القرص المضغوط. في البداية ، تم تصميم هذه الوظيفة المسماة "MIL-CD" لإضافة وظائف الوسائط المتعددة إلى أقراص الموسيقى المدمجة ، ولكن لم يتم استخدامها عملياً ، باستثناء سبعة تطبيقات للكاريوكي.

أدرك مهندسو SEGA أن تحميل MIL-CD يمكن استخدامه كجهة متجهة للهجوم ، لذلك أضافوا الحماية. عندما تعرفت وحدة التحكم على القرص المضغوط ، قام BOOTROM بتحميل IP.BIN بالطريقة المعتادة ، ولكن 1ST_READ.BIN المشفر ، للوهلة الأولى بشكل عشوائي. تحول الملف القابل للتنفيذ العامل إلى تجزئة فوضوية تسببت في تجميد وحدة التحكم.


من وجهة النظر هذه ، يبدو أن وحدة التحكم محمية بشكل موثوق. يمكن لـ Dreamcast التعرف على نسخة مقرصنة من اللعبة ، وإفساد الملف القابل للتنفيذ أثناء عملية التنزيل وهزيمة القراصنة.

خدمة سيفي الطويل!


تم حل مشكلة الملف التالف في نهاية عام 1999 عندما سُرق فريق Katana SDK الرسمي لـ Segana SDK من قِبل فريق المتسللين [6] . اتضح أن جهاز تشويش إذاعي ليس أكثر من مجرد تنفيذ لمبدأ "الأمن من خلال الغموض". احتوى SDK على جهاز تشويش عكسي ، والذي حول الملف القابل للتنفيذ الصحيح إلى "تجزئة للخلف" ، والذي أصبح مرة أخرى قابلاً للتنفيذ بعد التحميل والتخليط باستخدام وحدة التحكم Dreamcast عند التشغيل من قرص مضغوط.


استرداد لعبة باستخدام GD-ROM


وكان SDK المسروقة كل القراصنة اللازمة. بفضل القدرة على تشغيل التعليمات البرمجية على جهاز ، يمكن الآن استخدام Dreamcast ليس كوحدة تحكم للألعاب ، ولكن كمحرك أقراص GD-ROM. أتاح "كابل التشفير" من SDK [7] توصيل وحدة التحكم بكمبيوتر شخصي وإنشاء اتصال فعلي. من أجل وحدة التحكم لتفريغ محتويات مسارات GD ، تمت كتابة ملف قابل للتنفيذ خاص. بعد ذلك تم إعادة إرسالها وحرقها على قرص مضغوط لإخراج جميع البيانات التي تبلغ 1 غيغابايت من خلال المنفذ التسلسلي لوحدة التحكم. كانت عملية عرضة للخطأ استغرقت ما يصل إلى 18 ساعة [8] [9] . تم حفظ النتيجة بتنسيق ".gdi" تم إنشاؤه خصيصًا.

  ikaruga.gdi 153 بايت
 track01.bin 13 982 640 bytes
 track02.raw 2،088،576 bytes
 track03.bin 1 185 760 800 bytes 

حقيقة مثيرة للاهتمام : يمكنك أن ترى أن إجمالي كمية البيانات ليس 1 غيغابايت ، كما ذكر أعلاه ، ولكن 1.2 غيغابايت. وذلك لأن قطاعات GD-ROM المكونة من 2352 بايت تتبع تنسيق Red Book ، الذي يستخدم 12 بايت للمزامنة ، و 4 بايت للرأس ، و 2048 بايت للحمولة ، و 288 بايت لرمز اكتشاف الخطأ / تصحيح الخطأ [10 ] .

  $ القط ikaruga.gdi 
 3
 1 0 4 2352 track01.bin 0
 2 5945 0 2352 track02.raw 0
 3 45000 4 2352 track03.bin 0 

كيفية احتواء قرص GD-ROM بسعة 1000 ميجابايت على قرص مضغوط سعة 700 ميجابايت


لتتناسب مع اللعبة على قرص مضغوط سعة 700 ميجابايت ، تمت إعادة صياغة موارد اللعبة. جعل نظام الملفات ISO-9660 المستخدم في GD-ROM من السهل تغيير تقدير مقاطع الفيديو والموسيقى ، وكذلك حذفها تمامًا. ومع ذلك ، بالنسبة لمعظم الألعاب ، لم تكن هذه العملية المعقدة مطلوبة لأنها لم تشغل 1 جيجا بايت بأكملها. على سبيل المثال ، احتل برنامج Treasure's Ikaruga مساحة تصل إلى 150 ميجابايت فقط ، وكان معظم محتواه مليئًا بالأصفار. في مثل هذه الحالات ، كان مجرد تحرير بيانات التعبئة يكفي.

في الواقع ، يعد ISO-9660 تنسيقًا مشهورًا حتى أنه تم كتابة نصوص Python (مثل gditools.py ) لدراسة محتويات أرشيفات .gdi.

التعبئة والتغليف والتوزيع


كانت المرحلتان الأخيرتان من العملية هما التخليط العكسي 1ST_READ.BIN وتعبئة جميع المعلومات في أرشيف .cdi حتى يتمكن DiscJuggler من نسخ الصورة على CD-R. عملت النتيجة التي تم الحصول عليها دون مشاكل على أي الفانيليا Dreamcast دون الحاجة إلى رقاقة التعديل.

رد فعل SEGA والعواقب


أصدرت SEGA بسرعة الإصدار الثاني من وحدة التحكم DC مع تعطيل MIL-CD تمامًا ، لكن الضرر قد حدث بالفعل. بعد انخفاض كارثي في ​​الإيرادات وإصدار PS2 المتنافسة ، تخلى المطورون عن Dreamcast و SEGA تركوا تطوير المعدات ، مع التركيز بالكامل على إنشاء البرامج.

المراجع


[1] المصدر: ورشة عمل SEGA GD
[2] المصدر: segaretro.org: GD-ROM
[3] المصدر: تعلن Microsoft عن مجموعة أدوات Windows CE لـ Dreamcast
[4] المصدر: ألعاب Dreamcast باستخدام Windows CE
[5] المصدر: IP.BIN و 1 ST_READ.BIN
[6] المصدر: دعونا نبني لعبة Sega Dreamcast من الصفر
[7] المصدر: PC Serial Adapter
[8] المصدر: نظرة أكثر دقة وتعمقًا على أمان Dreamcast
[9] المصدر: طرق أسرع تم تصميمها أخيرًا باستخدام موصل النطاق العريض في العاصمة
[10] المصدر: Dreamcast Myth: GD-ROM Storage Storage

Source: https://habr.com/ru/post/ar433072/


All Articles