
एक मृत USB प्रोटोकॉल का पुनर्निर्माण: एक गर्म चाकू द्वारा अनलॉक किए गए हैंडहेल्ड के रहस्य, एक भूले हुए USB इंटरफ़ेस को पुनर्जीवित करने की एक बहु-विषयक यात्रा
2024 में, bjiru ने ME2 हैंडहेल्ड डिवाइस के बारे में एक वीडियो अपलोड किया, जो 2008 के आसपास बनाया गया एक खिलौना था जिसमें आपके डिवाइस और ऑनलाइन दुनिया के बीच अंक और रत्नों को सिंक्रोनाइज़ करने के लिए USB का उपयोग करने की सुविधा थी। यह गेम अत्यंत विशिष्ट था, इसलिए कोई भी सॉफ्टवेयर, ड्राइवर या संपत्ति संग्रहीत नहीं की गई थी, कम से कम तब तक जब तक bjiru ने ऑनलाइन गेम क्लाइंट के साथ आगे नहीं आया।
मैं Miuchiz Reborn का नेता हूं, जो 2015 में शुरू किया गया एक प्रयास है, जो इसी तरह के एक गेम को संरक्षित करने, रिवर्स इंजीनियरिंग करने, एम्यूलेट करने और पहुंच बनाए रखने के लिए है, जिसमें USB के माध्यम से जुड़ा एक ऑनलाइन भाग और एक हैंडहेल्ड भाग था। समान पुरानी और गेम के प्रकार के कारण, ME2 पहले ही 2018 में मेरे Miuchiz समुदाय द्वारा मेरे ध्यान में लाया गया था, क्योंकि उन्होंने सोचा था (गलती से) कि वे वास्तुशिल्प समानताएं साझा कर सकते हैं। वर्षों तक मुझे डिवाइस के अस्तित्व के बारे में पता होने के बावजूद, bjiru के वीडियो ने आखिरकार मुझे इस पर शोध शुरू करने के लिए प्रेरित किया।
मेरे शुरुआती प्रयास केवल कंप्यूटर गेम की bjiru की प्रतिलिपि को फिर से कार्यात्मक बनाने के लिए आवश्यक सर्वर को फिर से बनाने पर खर्च किए गए थे, लेकिन रास्ते में, मेरा ध्यान अनिवार्य रूप से हैंडहेल्ड की ओर चला गया। ऑनलाइन गेम का पुनर्निर्माण निश्चित रूप से उस तंत्र के बिना पूरा नहीं हो सकता जो आपके अंकों को डिवाइस से और डिवाइस पर सिंक्रोनाइज़ करता है। आपके कंप्यूटर और ME2 डिवाइस के बीच यह संचार ही गेम का मुख्य आकर्षण था। मैंने सोचा कि Miuchiz हैंडहेल्ड डिवाइसों के साथ मेरा पिछला अनुभव मुझे उनके द्वारा अपेक्षित किसी भी संचार अनुष्ठान को सुलझाने में मदद करेगा... जब तक मुझे रिवर्स इंजीनियर करने के लिए कुछ कोड मिल जाए।
मेरी जिज्ञासा ने ME2 के बलिदान की मांग की। eBay ने फिएट मनी के बलिदान की मांग की। कुछ ही समय में, ये नमूने मेरे सामने पड़े थे।

ये छोटी इकाइयाँ हैं जिनमें केवल कुछ बटन और एक महिला मिनी-USB पोर्ट है। बॉक्स में एक केबल शामिल है, लेकिन इसमें सॉफ्टवेयर और ड्राइवरों के लिए कोई डिस्क नहीं है। वह USB पोर्ट आपके कंप्यूटर और हैंडहेल्ड के बीच अंकों को सिंक्रोनाइज़ करने का तरीका होगा, लेकिन जब मैंने Miuchiz हैंडहेल्ड डिवाइस के लिए उसी यात्रा पर शुरुआत की, तो मैंने यह पता लगाकर कि इसके साथ आने वाला विंडोज सॉफ्टवेयर कैसे काम करता है, इसकी फ्लैश मेमोरी तक पूर्ण पहुंच प्राप्त कर ली। ME2 के लिए ऐसे कोई सॉफ्टवेयर न होने के कारण, डिवाइस के साथ संवाद करने का तरीका जानने के लिए रिवर्स इंजीनियर करने के लिए कुछ भी नहीं है। Wayback Machine और bjiru की जांच करने के बाद भी, इन चीजों से बात करने के लिए उपयोग किए जाने वाले सॉफ्टवेयर की कोई भी प्रतिलिपि बची हुई प्रतीत नहीं होती है। मुझे लगता है कि इसे ME2 डेस्कटॉप बडी कहा जाता था, लेकिन वह एप्लिकेशन उस गेम क्लाइंट से अलग था जिसे bjiru ने बरामद किया था। हैंडहेल्ड खुद को एक हटाने योग्य स्टोरेज डिवाइस के रूप में प्रस्तुत करता है, लेकिन सामग्री आपको ME2 गेम डाउनलोड करने के लिए ऑनलाइन निर्देशित करती है, जो अब उपलब्ध नहीं है।
आगे का रास्ता स्पष्ट है, क्योंकि केवल एक विकल्प बचा है: हार्डवेयर खोलना।

मुख्य ME2 फर्मवेयर एक SST39VF3201 पर संग्रहीत है, जो एक 2 मेगावर्ड (4 मेगाबाइट, 16-बिट एड्रेसेबल इकाइयों के साथ) फ्लैश चिप है। मुख्य माइक्रोकंट्रोलर... एक कठोर एपॉक्सी ग्लोब-टॉप के नीचे है। इसे चिप-ऑन-बोर्ड (CoB) के रूप में जाना जाता है और यह आमतौर पर लागत बचाने का एक उपाय है, लेकिन इसका एक दुष्प्रभाव अंदर एकीकृत सर्किट के बारे में किसी भी पहचान संबंधी जानकारी को छिपाना है। एक नियमित रूप से पैक किए गए चिप पर आमतौर पर निशान होते हैं जो इसे पहचानते हैं, जैसे फ्लैश चिप पर होते हैं। चूंकि ऐसे उपकरणों में उपयोग किए जाने वाले माइक्रोकंट्रोलर में अक्सर एक आंतरिक ROM होता है, इसलिए यह संभव है कि मैं जिस USB कोड को रिवर्स इंजीनियर करना चाहता था, उसका कुछ या सभी भाग उस ROM में हो। ROM में वह कोड होने से एक ब्रिक किए गए डिवाइस को पुनर्प्राप्त करने का लाभ मिलता है या, यदि निर्माता ऐसा करना चुनता है, तो असेंबली के बाद डिवाइस को फ्लैश करने का लाभ मिलता है। वह ROM एक चिप के अंदर मौजूद होगी जिसे मैं पहचान नहीं सका।
फ्लैश चिप से डेटा प्राप्त करना एक सीधी और अच्छी तरह से प्रलेखित प्रक्रिया है: चिप को डीसोल्डर करें, इसे XGecu जैसे ऑफ-द-शेल्फ फ्लैश प्रोग्रामर में डालें, और इसका उपयोग सामग्री को डंप करने के लिए करें। यदि मुझे माइक्रोकंट्रोलर के ROM से भी जानकारी चाहिए, तो यह कम सीधा है, लेकिन यह अभी भी इस तरह के एक उपकरण के लिए संभव है जहां सुरक्षा की संभावना नहीं है। अतीत में, मैंने एक Tamagotchi Pix पर SPI फ्लैश में कोड जोड़ा था जो इसके बूट ROM को फ्लैश चिप पर खाली स्थान पर कॉपी करेगा, जिसे बाद में उसी फ्लैश प्रोग्रामर द्वारा पढ़ा जा सकता था जिसका उपयोग मैंने कोड इंजेक्ट करने के लिए किया था। हालांकि, उस मामले में, माइक्रोकंट्रोलर ठीक से पैक किया गया था और उस पर मॉडल जानकारी मुद्रित थी, इसलिए मैं इसका डेटाशीट ढूंढ सकता था ताकि पता चल सके कि यह किस निर्देश सेट का उपयोग करता है और इसका ROM मेमोरी स्पेस में कहां है। इस बिंदु पर, मेरे पास ME2 के रहस्यमय चिप-ऑन-बोर्ड के बारे में उस जानकारी में से कोई भी नहीं था।
अनिश्चितताओं के बावजूद, यहां से आगे का एकमात्र स्पष्ट रास्ता फ्लैश चिप को डीसोल्डर करना है। मैंने फ्लैश चिप के लिए कुछ सॉकेट भी खरीदे थे, इस उम्मीद में कि मैं हैंडहेल्ड के PCB पर एक को सोल्डर कर पाऊंगा। यह मुझे ME2 को पुन: प्रोग्राम करने और यदि मुझे माइक्रोकंट्रोलर से आंतरिक ROM को डंप करने के लिए कोड लिखने की आवश्यकता होती है, तो तेजी से पुनरावृत्ति करने की अनुमति देगा।
दुर्भाग्य से, मैं चिप को नुकसान पहुंचाए बिना सोल्डरिंग आयरन से फ्लैश चिप को निकालने में असमर्थ था। कई असफल प्रयासों के बाद इस कौशल समस्या को हल करने के लिए, मैंने इसके बजाय एक रीवर्क स्टेशन (प्रभावी रूप से एक हीट गन जो 500 डिग्री सेल्सियस तक पहुंचने का दावा करती है) खरीदा और हॉट एयर से सोल्डर को पिघलाकर चिप को हटा दिया। इसने मुझे बिना किसी समस्या के फ्लैश की सामग्री को डंप करने की अनुमति दी, लेकिन इससे पता चला कि वास्तव में मेरे द्वारा खरीदे गए सॉकेट का उपयोग करना मेरी क्षमताओं से परे होगा। मुझे न केवल सभी 48 छोटे पिनों को PCB पर सोल्डर करना होगा, बल्कि सॉकेट पर प्लास्टिक को पिघलने से बचाने के लिए इसे पर्याप्त तेज़ी से भी करना होगा। मेरे पास उससे निपटने के लिए न तो उपकरण थे और न ही कौशल, इसलिए यदि मुझे ROM की आवश्यकता होती, तो मुझे एक और रणनीति की आवश्यकता होती।
हालांकि, डंप अच्छा लग रहा था, और एक उपकरण का उपयोग करके जिसे मैंने विशेष रूप से फर्मवेयर डंप में असंपीड़ित बिटमैप खोजने के लिए बनाया था, मैं उन छवियों को ढूंढ सका जो सामान्य रूप से डिवाइस पर प्रदर्शित होतीं:

मैंने फ्लैश चिप से फर्मवेयर का डंप प्राप्त कर लिया है, लेकिन गंभीर रिवर्स इंजीनियरिंग करने से पहले, मुझे कम से कम यह जानना होगा कि डिवाइस किस निर्देश सेट पर चलता है। हार्डवेयर पर कोई निशान नहीं थे, इसलिए इसका अनुमान लगाना होगा। मैंने Ghidra में कोड का विश्लेषण करने का प्रयास किया, जो एक ओपन सोर्स डिस्सेम्बलर, डीकंपाइलर और जंकी दुःस्वप्न है जो मुझे नियोजित रखता है, इसमें आने वाले लगभग हर प्रकार के प्रोसेसर स्पेक के साथ। कोई ARM वेरिएंट? कोई 6502 वंशज? MIPS? शाब्दिक रूप से Ghidra द्वारा समर्थित कोई अन्य चीज़? सभी ने जोरदार "नहीं" कहा।
मैंने सब कुछ करने की कोशिश की, और कुछ भी इस कोड को डिस्सेम्बल नहीं कर पाया। मुझे पता था कि यह कोड है, क्योंकि मैं उस कोड के कुछ हिस्सों को भी ढूंढ सकता था जिसकी मुझे तलाश थी!
