
إعادة بناء بروتوكول USB ميت: أسرار جهاز محمول تم كشفها بسكين ساخن، رحلة متعددة التخصصات لإحياء واجهة USB منسية
في عام 2024، رفع bjiru فيديو عن جهاز ME2 المحمول، وهي لعبة صدرت حوالي عام 2008 وتميزت بقدرتها على استخدام USB لمزامنة النقاط والجواهر بين جهازك وعالم عبر الإنترنت. كانت اللعبة متخصصة للغاية، لذا لم يتم أرشفة أي برامج أو تعريفات أو أصول، على الأقل حتى ظهر bjiru مع عميل اللعبة عبر الإنترنت.
أنا قائد Miuchiz Reborn، وهو جهد بدأ في عام 2015 للحفاظ على وهندسة عكسية ومحاكاة والحفاظ على إمكانية الوصول إلى لعبة مشابهة لهذه، مع جزء عبر الإنترنت وجزء محمول متصل عبر USB. نظرًا للعمر والنوع المماثل للعبة، فقد لفت ME2 انتباهي بالفعل من قبل مجتمع Miuchiz الخاص بي في عام 2018، لأنهم اعتقدوا (خطأً) أنه قد يشترك في أوجه تشابه معمارية. على الرغم من أنني كنت على علم بوجود الجهاز لسنوات، إلا أن فيديو bjiru دفعني أخيرًا لبدء البحث فيه.
كانت جهودي الأولية مقتصرة على إعادة إنشاء الخادم اللازم لجعل نسخة bjiru من لعبة الكمبيوتر تعمل مرة أخرى، ولكن على طول الطريق، انجذب انتباهي حتمًا إلى الجهاز المحمول. بالتأكيد لا يمكن أبدًا أن تكون إعادة إنشاء اللعبة عبر الإنترنت كاملة دون آلية مزامنة نقاطك من وإلى الجهاز. كان هذا الاتصال بين جهاز الكمبيوتر الخاص بك وجهاز ME2 هو الحيلة الرئيسية للعبة، بعد كل شيء. اعتقدت أن خبرتي السابقة مع أجهزة Miuchiz المحمولة ستساعدني في حل أي طقوس اتصال يتوقعونها بسرعة... طالما يمكنني الحصول على بعض التعليمات البرمجية لعكس هندستها.
طالب فضولي بالتضحية بأجهزة ME2. طالب eBay بالتضحية بالمال الورقي. قبل فترة طويلة، كانت هذه العينات أمامي.

هذه وحدات صغيرة تحتوي فقط على بضعة أزرار ومنفذ USB صغير من نوع أنثى. يوجد كابل مضمن في الصندوق، لكنه يفتقر إلى أي قرص للبرامج والتعريفات. سيكون منفذ USB هذا هو وسيلة مزامنة النقاط بين جهاز الكمبيوتر الخاص بك والجهاز المحمول، ولكن عندما شرعت في نفس الرحلة لجهاز Miuchiz المحمول، حصلت على وصول كامل إلى ذاكرة الفلاش الخاصة به عن طريق عكس هندسة كيفية عمل برنامج Windows المصاحب له. مع عدم وجود مثل هذا البرنامج لـ ME2، لا يوجد شيء لعكس هندسته لمعرفة كيفية التواصل مع الجهاز. حتى بعد التحقق من Wayback Machine و bjiru، لم تنجو أي نسخ من أي برنامج كان يُستخدم للتحدث مع هذه الأشياء. أعتقد أنه كان يُسمى ME2 Desktop Buddy، لكن هذا التطبيق كان منفصلاً عن عميل اللعبة الذي استرده bjiru. يعرض الجهاز المحمول نفسه كجهاز تخزين قابل للإزالة، لكن المحتوى يوجهك ببساطة عبر الإنترنت لتنزيل لعبة ME2، والتي لم تعد متاحة.
الطريق إلى الأمام واضح، نظرًا لوجود خيار واحد فقط متبقي: افتح الجهاز.

يتم تخزين البرنامج الثابت الرئيسي لـ ME2 على شريحة SST39VF3201، وهي شريحة فلاش بسعة 2 ميغاوورد (4 ميغابايت، مع وحدات عنونة 16 بت). المتحكم الدقيق الرئيسي... تحت غطاء إيبوكسي صلب. يُعرف هذا باسم الرقاقة على اللوحة (CoB) وعادة ما يكون إجراءً لتوفير التكاليف، لكن له أثر جانبي يتمثل في إخفاء أي معلومات تعريفية عن الدائرة المتكاملة بالداخل. عادةً ما تحتوي الرقاقة المعبأة بشكل منتظم على علامات تحددها، تمامًا مثل شريحة الفلاش. نظرًا لأن المتحكمات الدقيقة المستخدمة في أجهزة مثل هذه غالبًا ما تحتوي على ROM داخلي، فمن الممكن أن تكون أجزاء أو كل كود USB الذي أردت عكسه موجودة في هذا ROM. وجود هذا الرمز في ROM له فائدة السماح باستعادة جهاز تالف أو، إذا اختارت الشركة المصنعة ذلك، وميض الجهاز بعد التجميع. سيكون هذا ROM موجودًا داخل رقاقة لم تكن لدي طريقة لتحديدها.
استرداد البيانات من شريحة الفلاش هو عملية مباشرة وموثقة جيدًا: فك لحام الشريحة، وضعها في مبرمج فلاش جاهز مثل تلك التي تصنعها XGecu، واستخدامه لتفريغ المحتويات. إذا كنت بحاجة أيضًا إلى معلومات من ROM الخاص بالمتحكم الدقيق، فهذا أقل وضوحًا، لكنه لا يزال ممكنًا لجهاز مثل هذا حيث الحماية غير محتملة. في الماضي، أضفت رمزًا إلى SPI flash على Tamagotchi Pix من شأنه نسخ ROM التمهيد الخاص به إلى مساحة خالية على شريحة الفلاش، والتي يمكن بعد ذلك قراءتها بواسطة نفس مبرمج الفلاش الذي استخدمته لحقن الرمز. ومع ذلك، في تلك الحالة، كان المتحكم الدقيق معبأً بشكل صحيح وكانت معلومات الطراز مطبوعة عليه، لذا تمكنت من العثور على ورقة البيانات الخاصة به لمعرفة مجموعة التعليمات التي يستخدمها وأين يقع ROM الخاص به في مساحة الذاكرة. في هذه المرحلة، لم تكن لدي أي من هذه المعلومات عن رقاقة ME2 الغامضة على اللوحة.
على الرغم من عدم اليقين، فإن الطريق الوحيد الواضح للأمام من هنا هو فك لحام شريحة الفلاش. لقد اشتريت أيضًا بعض المقابس لشريحة الفلاش على أمل أن أتمكن من لحام واحدة بلوحة الجهاز المحمول. سيسمح لي هذا بإعادة برمجة ME2 والتكرار بسرعة إذا كنت بحاجة إلى كتابة رمز لتفريغ ROM الداخلي من المتحكم الدقيق.
لسوء الحظ، لم أتمكن من إزالة شريحة الفلاش بمكواة لحام دون إتلاف الشريحة. لحل مشكلة المهارة هذه بعد عدة محاولات فاشلة، اشتريت بدلاً من ذلك محطة إعادة صهر (مسدس حرارة فعليًا يدعي أنه قادر على الوصول إلى 500 درجة مئوية) وأزلت الشريحة عن طريق صهر اللحام بالهواء الساخن. سمح لي هذا بتفريغ محتويات الفلاش دون مشكلة، لكنه كشف أن استخدام المقابس التي اشتريتها سيكون فوق قدراتي. لن أضطر فقط إلى لحام جميع المسامير الـ 48 الصغيرة بلوحة PCB، بل سأضطر أيضًا إلى القيام بذلك بسرعة كافية لتجنب إذابة البلاستيك على المقابس. لم تكن لدي الأدوات ولا المهارة للتعامل مع ذلك، لذا إذا كنت بحاجة إلى ROM، فسأحتاج إلى استراتيجية أخرى.
بدا التفريغ جيدًا، وباستخدام أداة بنيتها خصيصًا للعثور على الصور النقطية غير المضغوطة في تفريغات البرامج الثابتة، تمكنت من العثور على الصور التي سيتم عرضها عادةً على الجهاز:

لقد حصلت على تفريغ للبرنامج الثابت من شريحة الفلاش، ولكن قبل أن تتم الهندسة العكسية الجادة، أحتاج على الأقل إلى معرفة مجموعة التعليمات التي يعمل بها الجهاز. لم تكن هناك علامات على الجهاز نفسه، لذا سيكون الأمر تخمينيًا. حاولت تحليل الرمز في Ghidra، وهو مفكك ومحلل شفرة مفتوح المصدر وكابوس متعرج يبقيني موظفًا، باستخدام كل نوع من مواصفات المعالج التي جاء بها. أي متغير من ARM؟ بعض منحدرات 6502؟ MIPS؟ أي شيء آخر تدعمه Ghidra؟ كلها "لا" مدوية.
جربت كل شيء، ولم يفكك شيء هذا الرمز. كنت أعلم أنه رمز، لأنني تمكنت حتى من العثور على أجزاء من الرمز الذي كنت أبحث عنه!

بسبب عملي السابق على جهاز Miuchiz المحمول، كانت لدي بعض الإلمام بكيفية عمل أجهزة التخزين الشامل USB. حددت هذا المقتطف على أنه يكاد يكون من المؤكد أنه ينقل 'U', 'S', 'B', 'S' في مكان ما، وهو توقيع خاص بنوع اتصال التخزين الشامل USB الذي كنت أبحث عنه. بعض أو كل كود USB الذي احتجت إلى عكسه لمعرفة كيفية التفاعل مع هذا الجهاز كان بالتأكيد في هذا التفريغ من الفلاش، ولكن بدون أي فكرة عن مجموعة التعليمات التي كُتب بها، لم أستطع فك تشفيره.
في هذه المرحلة، كان لدي زوج من وحدات ME2 المكسورة. يبدو الأمر غبيًا، ولكن ربما توجد علامات في مكان ما تحت كتل الإيبوكسي؟ على الأرجح لا، ولكن بالنسبة لمرحلة البحث، فإن وحدة مدمرة بالكامل تكون أحيانًا أكثر قيمة من تلك المكسورة ببساطة.
حسنًا، كان لدي مسدس حرارة، وكان لدي سكين. كما يقولون، عندما يكون لديك مسدس حرارة وسكين، كل شيء يبدو مثل... مسمار؟ أعتقد أن هذه هي الطريقة التي تسير بها المقولة.

ضبط محطة إعادة الصهر على أقصى درجة حرارة والرفع بسكين حرر كتلة الإيبوكسي بأكملها. كشف رحيلها عن عدم وجود علامات تحت الرقاقة على اللوحة (الآن خارج اللوحة). يمكنك رؤية الجانب السفلي من قالب السيليكون الخاص بالمتحكم الدقيق، والإيبوكسي به بضع فقاعات هواء يمكنك من خلالها رؤية أسلاك التوصيل.
كما قلت، أحيانًا تكون وحدة مدمرة أكثر قيمة من وحدة مكسورة، وكان لدي مسدس حرارة، وسكين، وحاجة ماسة لتحسين تعابيري.

أوه.
هاه.
لم يكن لدي أي فكرة أنه يمكنك فك تغليف CoB بهذه الطريقة. لقد خرجت نظيفة، ونظرًا لدرجة حرارتها، أنا سعيد لأنها لم تفعل ذلك في اتجاهي. إنها جميلة جدًا، ولكن هناك في الواقع طريق إلى الأمام من هنا. دعني ألقي نظرة أقرب باستخدام المجهر الإلكتروني الخاص بي.

حسنًا، هذا ما يدعيه دليل المستخدم الخاص به. لكي نكون منصفين، لقد تحققت، وهو يحتوي على إلكترون واحد على الأقل.
بينما كنت أدمر "أقرصن" ألعابًا أخرى تحدت عيني مكوناتها الصغيرة، أصبح واضحًا أنني نادرًا ما كنت أعرف ما يحدث في الطرف الآخر من مكواة اللحام الخاصة بي. أدت توصية مهذبة للغاية من صديق إلى شراء مجهر رقمي رخيص، مخصص للعملات المعدنية واللحام.

على الرغم من أنه ليس حقًا معدات مناسبة للوظيفة، خلافًا لادعاءات دليل المستخدم الخاص به، التقطت هذه الصورة بالمجهر. إنها بعيدة كل البعد عن القدرة على فك أي نص على القالب، لكن التخطيط العام واضح، وعرفت أين يمكنني العثور على صور أكثر مثل هذه.
Siliconpr0n، المعروف الآن باسم Siliconprawn، لديه أرشيف قام فيه العديد من الأشخاص بتحميل صور قوالب، وإن كانت عادةً بجودة أفضل من صورتي. لسوء الحظ، لا توجد طريقة مفيدة للبحث في الموقع بالنظر إلى المعلومات التي لدي، لذا بدأت في النقر، والتمرير، والتكرار...

بصماتها موجودة في السجل!
بعد عدة ساعات، في الساعة 4 صباحًا، رأيت أخيرًا شيئًا مألوفًا. إنها أفضل جودة من صورتي، لكن التخطيط لا لبس فيه. لدي GPL162002A (أو B) مُدارة 180 درجة مقارنة بالصورة المطابقة التي التقطها John McMaster. إنه متحكم دقيق من GeneralPlus، وورقة البيانات الخاصة به متاحة على الإنترنت، ومجموعة تعليماته هي μ'nSP.
تبين أن μ'nSP شائعة إلى حد ما للألعاب من هذا النوع والفترة الزمنية. آمل أن أُغفر لعدم تخميني أنها مجموعة تعليمات اسمها يحتوي على أحرف ليست حتى في الأبجدية اللاتينية. على الرغم من ذلك، لا تزال متخصصة بما يكفي لعدم دعمها من قبل Ghidra بشكل افتراضي. لحسن الحظ، هناك بعض الأعمال الخارجية الموجودة لها، لذا تمكنت من البدء في فك تشفيرها في Ghidra، وتسمية الوظائف، واستيراد أسماء السجلات من ورقة البيانات.
إليك الوظيفة التي كنت متأكدًا من أنها كود USB فقط من تفريغها السداسي العشري، والتي تتفاعل مع سجلات USB كما هو محدد في ورقة بيانات المتحكم الدقيق:

كما لاحظت سابقًا، كنت بالفعل على دراية إلى حد ما بكيفية تواصل أجهزة التخزين الشامل USB مثل هذه، خاصة بسبب بعض الأعمال التجريبية في نقل مكتبة Miuchiz USB الخاصة بي إلى macOS باستخدام libusb. تقوم أجهزة التخزين الشامل USB بشكل أساسي بنفق أوامر SCSI، وهي موثقة جيدًا عبر الإنترنت. على سبيل المثال، هناك أوامر لطلب قراءة من أو كتابة إلى الجهاز.

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

من خلال التحليل الثابت، تمكنت من تحديد وتسمية الوظائف التي كنت أبحث عنها: قراءة وبرمجة ومسح الفلاش. كل هذه أوامر غير قياسية تم تنفيذها لـ ME2 وربما أجهزة GeneralPlus أخرى، وتم استخدامها بالتأكيد من قبل أي برامج وتعريفات جاءت في الأصل مع الجهاز. يمكنك صياغة رسالة USB لتفعيل أي من هذه المسارات. تتيح لك القراءة استرداد البيانات من الفلاش. تتيح لك البرمجة "برمجة" الفلاش. يسمح لك المسح بإعادة تعيين جميع البتات في منطقة الفلاش إلى 1، والذي عند استخدامه مع أمر البرمجة، يمكن أن يصدر كتابة كاملة للفلاش، حيث أن "البرمجة" يمكنها فقط قلب البتات من 1 إلى 0. كل واحد من الأوامر المخصصة التي كنت مهتمًا بها يستخدم المعرف المحجوز 0xFF متبوعًا بمعرفات للأوامر الفرعية وأي معلمات تحتاجها العملية.
الهياكل الدقيقة للأوامر ليست ذات صلة خاصة بالقارئ، ولكن المنهجية قد تكون. استخدمت libusb (حسنًا، في الواقع، rusb) لتسهيل كل تفاعلي عبر USB. تسمح لك هذه الطريقة بكتابة كود فضاء المستخدم للتفاعل مع جهاز USB الخاص بك، بدلاً من كتابة برنامج تشغيل جديد.
عندما اختفى برنامج ME2 Windows من الإنترنت، كان الأمر كما لو أن المتحدث قبل الأخير بلغته قد مات. أصبح جهاز ME2 المحمول، بمعنى ما، متحدثًا نهائيًا. مع القليل من التجارب والقليل من قراءة التفكيك الصحيح أحيانًا، كنت أقرأ عقله لتعلم كلمات لغته المنقرضة تقريبًا. عندما تحدث مرة أخرى، عرفت أنني على المسار الصحيح.
Č̶̯a̴̩͗n̵͉͆ ̴͍͠Ǐ̶̜ ̴͈͌h̷̙̔á̶͉v̸͈̽é̴̢ ̵͍͛a̵̞͝ ̴̤̉s̵̡͊ē̴̮c̸̭̅t̶̛͖o̸̡͠r̶̺̊ ̶̥̀ǫ̸̀f̸̦́ ̷̈́ͅỳ̷͎o̶̦̐u̵͙̚r̶͙͒ ̵̥̕f̸̡͝l̷͈̄a̶͍͋s̸̢̓h̸̗͝?̴̪̕
...لا؟ لا بد أنها لهجتي. دعني أعدل وأسأل مرة أخرى: هل يمكنني الحصول على قطاع من الفلاش الخاص بك؟ ماذا عن القطاع التالي؟ هل أنت مستعد لبرمجة أي من البتات في هذا القطاع؟ هل يمكنني الحصول على الفلاش الخاص بك مرة أخرى لأرى إذا كان مختلفًا الآن؟ هل أجرؤ على أن أطلب منك مسح قطاع... ونأمل أن تفهم أي قطاع أطلب منك تدميره؟
واحدًا تلو الآخر، كتبت الكود لبناء وتعبئة ونقل الرسائل التي احتجت أن يسمعها ME2. بمجرد أن كنا على نفس الصفحة، طلبت منه أن يرسل لي تفريغًا للفلاش مرتين مع وجود كميات مختلفة من النقاط. بعد مقارنتها، تمكنت من تحديد مكان تخزين النقاط في الفلاش وأخيرًا استخدام جهاز الكمبيوتر الخاص بي لتعديلها!

في الواقع، يمكنني فعل أي شيء أريده للجهاز باستخدام هذه الأوامر، طالما لا يتضمن مسح كود قيد الاستخدام النشط. انضم ME2 إلى مجموعتي من الأجهزة التي تعرض شعار Miuchiz Reborn في أماكن لا ينبغي أن يكون فيها، بما في ذلك المجهر الرقمي الذي التقط صورة القالب.

بصراحة، في المرة الأولى التي حاولت فيها قراءة/كتابة الفلاش، كنت متهورًا بعض الشيء، لأنني لم أستطع رؤية كل الكود الذي يتم تنفيذه. على سبيل المثال، بعض الكود يستدعي ROM الداخلي للمتحكم الدقيق، أو إلى روتينات RAM منسوخة هناك بواسطة ROM. بعض تخميناتي للوظائف الأخرى تم استنتاجها من كيفية إعداد سجلات الوصول المباشر للذاكرة (DMA). إذا تم إعداد DMA لنسخ من مخزن USB المؤقت، على سبيل المثال، فمن المحتمل أنه يستخدم تلك البيانات لبرمجة الفلاش، وليس لقراءته من الفلاش.

هذا الكود، على سبيل المثال، يستدعي دالة موجودة خارج الفلاش، حتى لا يسحب الكود من تحته، قبل العودة إلى الكود الذي سحبه للتو من تحته على أي حال. عليك أن تكون حريصًا جدًا على عدم تعطيل الجهاز.
منطقة الذاكرة المعنية محددة بوضوح في ورقة البيانات:

يوجد 128 كيلو وورد من ROM "مضمن" بشكل خاص لم أتمكن بعد من الوصول إليه، مما منعني من فهم النظام بالكامل.
لحسن الحظ، فإن وظيفة أمر القراءة المخصص للفلاش لا تجري فحصًا للحدود. هذا يعني أنه مع رسالة مصممة خصيصًا تحاول القراءة من عنوان فلاش مرتفع جدًا، يمكنك الالتفاف حول مساحة العنوان بأكملها للمتحكم الدقيق، لتنتهي بالعودة إلى البداية. نظرًا لأن هذا يصل إلى قدرة قراءة عشوائية، لم أكن بحاجة إلى كتابة أي كود تفريغ على الجهاز هذه المرة! كل الذاكرة قابلة للقراءة بهذا الخطأ، لذا استخدمته لقراءة ROM المضمن، الذي حفظته للهندسة العكسية لاحقًا.
مع كل الذاكرة، تمكنت من تحديد مخزن الإطار المؤقت للجهاز في RAM، والذي يعرض الصورة التي كانت على شاشة الجهاز في ذلك الوقت:

تمكنت أيضًا من قراءة سجلات الإدخال/الإخراج العامة (GPIO) من مساحة عناوين الجهاز بالرجوع إلى حيث قالت ورقة البيانات إنها يجب أن تكون. من خلال تفعيل الخطأ عشرات المرات في الثانية، يمكنني فعليًا استقصاء ضغطات الأزرار وتحويله إلى جهاز تحكم USB إذا أردت (فيديو):

في مرحلة ما أثناء اختباري، لاحظت تعديلًا غريبًا لقيمة في الفلاش والتي لا يبدو حتى أنها من المفترض أن تكون بيانات حفظ.

تمت كتابة 0x00AA (تذكر، حجم الكلمة في هذا النظام هو 16 بت) في مكان في الفلاش لم أطلبه. مع ROM المضمن، يمكننا أخيرًا رؤية الكود الذي يفسر هذا.

تأخذ شرائح الفلاش هذه الأوامر عن طريق الكتابة إلى إزاحات محددة. على عكس RAM، التي تلتزم بكتابة البيانات على الفور، فإن شريحة الفلاش ستحاول فقط تفسير عمليات الكتابة كجزء من أمر، لذا فإن كتابة واحدة إلى مساحة عنوان الفلاش ليست كافية لتغيير أي بيانات فعليًا. عندما يريد جزء من الكود برمجة الفلاش، فإنه يصدر تسلسل أوامر متعدد الخطوات يبدأ بكتابة 0xAA إلى 0x5555 وينتهي بكتابة البيانات المطلوبة في العنوان المطلوب.إذا خطر ببال مستخدم لديه وقت فراغ كبير (وربما مسدس حراري وسكين) محاولة استقصاء كيفية عمل الجهاز، فقد ينتهي به الأمر إلى طلب برمجة قطاع يتجاوز سعة شريحة الفلاش الخاصة به. المعالج يعلم بكل خطوة، لكن شريحة الفلاش لا تعلم. بدلاً من ذلك، تخطئ دورة الأمر النهائية مساحة عنوان شريحة الفلاش بالكامل، فتنتظر الفلاش بفارغ الصبر معرفة القيمة التي يجب برمجتها وأين.
المعالج: يا فلاش! أريد بدء برمجة كلمة أخرى!
الفلاش: واضح وجلي! جارٍ برمجة 0xAA إلى 0x5555!
المعالج: ...ماذا؟
بسبب عدم تزامن دورات الأوامر، تخلط الفلاش بين أول دورة من الأمر التالي وآخر دورة من الأمر السابق، ويتم برمجة 0xAA إلى 0x5555. العنوان المكافئ للبايتات الثمانية النموذجية هو 0xAAAA، والذي يتطابق مع مكان كتابة 0x00AA في تفريغ الفلاش الخاص بي.
قد يمكن استخدام هذا لكتابة عشوائية، طالما أنك لا تمانع إفساد تلك الكلمة المحددة في الفلاش، لكن الجهاز قد تم اختراقه بالفعل بما يكفي لدرجة أنني لست مهتمًا بتعطيل المزيد من الوحدات. من الممكن إنقاذ هذه الأجهزة، حيث أظهرت الهندسة العكسية لذاكرة ROM المدمجة أنها تحتوي على معالج USB خاص بها وتنفيذات لقراءة/برمجة/مسح الفلاش. ومع ذلك، لم أتمكن من جعل ذاكرة ROM تدخل تلك الحالة (بدلاً من التمهيد من كود الفلاش) إلا مرة واحدة، ولم أتمكن من ذلك مرة أخرى. بناءً على فك ترجمة ROM، أشتبه في أنها قد تعتمد على منفذ GPIO متروك عائمًا، لكنني لست متأكدًا. على أي حال، كانت مهمتي هنا قد اكتملت بالفعل.
النتيجة النهائية لهذه المشاغبة هي أداة سطر أوامر يمكنها:
هذه الأداة، إلى جانب كود خادم اللعبة وأبحاث أخرى، متاحة في مستودع ME2-Restoration. نظرًا لأن تفاصيل التنفيذ متاحة هناك وربما لا تهم القارئ العادي، فقد تم حذف التفاصيل التقنية المحددة هنا لصالح وصف العمليات والتقنيات.
الأهم من ذلك، هذا يوضح أن البرنامج الأصلي على جانب الحاسوب ليس ضروريًا بشكل صارم لفهم أو الحفاظ على وظائفه. حتى مع فقدان البرنامج الرسمي مع مرور الزمن، كان من الممكن فتح الصندوق الأسود الذي كان ME2 وإعادة بناء بروتوكوله من أجهزته وبرامجه الثابتة، لاستعادة واجهة كانت ميتة إلى شيء قابل للاستخدام مرة أخرى. هذا لا يقتصر على واجهات مثل USB أيضًا. اقرأ كيف أعدت إحياء خادم ترخيص ميت منذ زمن طويل لإعادة محرر متجهات عمره عقد إلى الحياة.
هذه أيضًا أول مرة أقوم فيها بإزالة تغليف دائرة متكاملة، لذا احترامًا لها، اشتريت مجهرًا أفضل وساهمت بأعلى صورة عالية الجودة لـ GPL162002A/B في siliconprawn، معروضة هنا بدقة مخفضة لملاءمة الويب:
