सामग्री पर जाएँ
PS5PCEM
काम करता हैCPU, लोडर और टूल

ELF और SELF लोडिंग

लोडर डिक्रिप्ट किए PS5 SELF और साधारण ELF64 मॉड्यूल मैप करता है, रीलोकेशन लागू करता है, और इम्पोर्ट को HLE रजिस्ट्री से हल करता है। फिर गेम ख़ुद शुरू किए मॉड्यूल के लिए स्थिर हैंडल पाता है।

10 अक्टूबर 2026 तक के रिपॉज़िटरी नोट्स

इमेज

PlayStation 5 का एक्ज़ीक्यूटेबल आमतौर पर ELF64 इमेज के चारों ओर एक SELF कंटेनर होता है। PS5PCEM कंटेनर और साधारण ELF दोनों पढ़ता है। रीडर इम्पोर्ट इकट्ठा करता है, सेगमेंट को आरक्षित गेस्ट पता-स्थान में मैप करता है, और रीलोकेशन लागू करता है। TLS इमेज उन थ्रेड के साथ पंजीकृत होती हैं जो उन्हें चलाएँगे।

टूलिंग गेम शुरू किए बिना किसी मॉड्यूल का निरीक्षण कर सकती है, रीलोकेट किया निर्भरता ग्राफ़ निकाल सकती है, या शेडर डिसअसेंबल कर सकती है। game-run वह पथ है जो लोड करता है, HLE आरंभ करता है और गेस्ट में प्रवेश करता है। जब डिक्रिप्ट किया eboot.bin इंस्टॉलेशन से अलग हो, तो --app0 केवल-पढ़ने योग्य माउंट को सामग्री डायरेक्टरी की ओर इंगित करता है।

गेम द्वारा बाद में शुरू किए मॉड्यूल

रनटाइम गेस्ट कोड चलने से पहले पहुँचने योग्य निर्भरता ग्राफ़ और PS5_PRELOAD में नामित हर चीज़ मैप करता है। फिर sceKernelLoadStartModule उस सेट के किसी मॉड्यूल के लिए स्थिर हैंडल लौटाता है। उसे दोबारा लोड करने से दूसरी रीलोकेट की गई प्रति नहीं बनती। sceKernelDlsym गेम द्वारा दिए नाम को हैश करता है और केवल हैंडल द्वारा चुने मॉड्यूल में खोजता है, इसलिए एक ही कॉलबैक एक्सपोर्ट करने वाले दो प्लगइन आपस में नहीं मिलते।

पथ मिलान स्लैश की दिशा और अक्षरों के छोटे-बड़े होने को अनदेखा करता है। देखा गया एक गेम Il2CppUserAssemblies.prx माँगता है और साथ में Il2cppUserAssemblies.prx लाता है। सटीक मिलान गेम द्वारा इंस्टॉल की गई फ़ाइल अस्वीकार कर देता। सापेक्ष पथ साधारण फ़ाइल नाम से पहले आज़माया जाता है, इसलिए एक ही फ़ाइल नाम वाले दो मॉड्यूल अलग रहते हैं। प्रकाशित सेट में न होने वाला मॉड्यूल ENOENT लौटाता है। गेस्ट थ्रेड पहले से चलते हुए उसे मैप नहीं किया जाता।

Unity प्लगइन

Unity प्लगइन अपने कंस्ट्रक्टर स्थगित करके मैप किए जा सकते हैं। फिर sceKernelLoadStartModule उन्हें ग्राफ़ आरंभीकरण के दौरान वे कंस्ट्रक्टर चलाने के बजाय गेम के असली आर्ग्युमेंट ब्लॉक के साथ एक बार शुरू करता है। यही क्रम उस प्लगइन में फ़र्क़ है जो अपने आर्ग्युमेंट देखता है और जो बहुत जल्दी शुरू हो जाता है।

लोडर रिटेल SELF को डिक्रिप्ट नहीं करता। इनपुट एक डिक्रिप्ट की गई इमेज है जिसे लोड करने का उपयोगकर्ता को अधिकार है। एन्क्रिप्टेड पैकेज PKG टूल का मामला हैं, और रिटेल एन्क्रिप्शन उस टूल के दायरे से भी बाहर है।

क्या लागू है

  • ELF64 और डिक्रिप्ट किए SELF की मैपिंग, रीलोकेशन, इम्पोर्ट और TLS।
  • पहले से लोड निर्भरता ग्राफ़ और स्थिर sceKernelLoadStartModule हैंडल।
  • अक्षरों के छोटे-बड़े होने से स्वतंत्र पथ मिलान के साथ चुने मॉड्यूल तक सीमित Dlsym।
  • Unity प्लगइन के लिए स्थगित कंस्ट्रक्टर ताकि वे असली आर्ग्युमेंट के साथ शुरू हों।

क्या अब भी बाक़ी है

  • जो मॉड्यूल केवल शुरुआत के बाद दिखता है और पहले से लोड नहीं था, वह ENOENT लौटाता है।
  • एन्क्रिप्टेड रिटेल SELF इमेज डिक्रिप्ट नहीं होतीं।
  • निरीक्षण बिल्ड Windows के अलावा होस्ट पर लोड इमेज नहीं चलाते।

संबंधित तंत्र

ये पेज क्या हैं

पाठ PS5PCEM रिपॉज़िटरी के आर्किटेक्चर नोट्स और अक्टूबर 2026 की रिपोर्टों पर आधारित है। किसी केंद्रित टेस्ट का पास होना नई फ़्रेम दर या गेम का नया समापन नहीं है।

सभी तकनीकें