XPC, जिसका पूरा नाम XNU (macOS द्वारा प्रयुक्त कर्नेल) inter-Process Communication है, macOS और iOS पर प्रक्रियाओं के बीच संचार के लिए एक फ्रेमवर्क है। XPC एक तंत्र प्रदान करता है जो सुरक्षित, असिंक्रोनस मेथड कॉल्स को विभिन्न प्रक्रियाओं के बीच बनाने के लिए है। यह Apple की सुरक्षा पैराडाइम का एक हिस्सा है, जो विशेषाधिकार-विभाजित अनुप्रयोगों के निर्माण की अनुमति देता है जहां प्रत्येक घटक केवल उन्हीं अनुमतियों के साथ चलता है जो उसे अपना काम करने के लिए आवश्यक हैं, इस प्रकार समझौता की गई प्रक्रिया से संभावित क्षति को सीमित करता है।
XPC एक प्रकार का Inter-Process Communication (IPC) का उपयोग करता है, जो एक ही सिस्टम पर चल रहे विभिन्न प्रोग्रामों के बीच डेटा भेजने और प्राप्त करने के लिए तरीकों का एक सेट है।
XPC के प्राथमिक लाभ हैं:
सुरक्षा: अलग-अलग प्रक्रियाओं में काम को विभाजित करके, प्रत्येक प्रक्रिया को केवल वही अनुमतियां दी जा सकती हैं जो उसे चाहिए। इसका मतलब है कि यदि कोई प्रक्रिया समझौता की जाती है, तो उसकी हानि करने की क्षमता सीमित होती है।
स्थिरता: XPC दुर्घटनाओं को उस घटक तक सीमित करने में मदद करता है जहां वे होते हैं। यदि कोई प्रक्रिया क्रैश होती है, तो इसे बिना सिस्टम के बाकी हिस्सों को प्रभावित किए बिना पुनः आरंभ किया जा सकता है।
प्रदर्शन: XPC आसान समानांतरता की अनुमति देता है, क्योंकि विभिन्न कार्य विभिन्न प्रक्रियाओं में एक साथ चलाए जा सकते हैं।
एकमात्र दोष यह है कि एक अनुप्रयोग को कई प्रक्रियाओं में विभाजित करना और उन्हें XPC के माध्यम से संवाद करना कम कुशल है। लेकिन आज की प्रणालियों में यह लगभग ध्यान देने योग्य नहीं है और लाभ बेहतर हैं।
अनुप्रयोग विशिष्ट XPC सेवाएँ
एक अनुप्रयोग के XPC घटक अनुप्रयोग स्वयं के अंदर होते हैं। उदाहरण के लिए, Safari में आप उन्हें /Applications/Safari.app/Contents/XPCServices में पा सकते हैं। उनका एक्सटेंशन .xpc होता है (जैसे com.apple.Safari.SandboxBroker.xpc) और वे बंडल भी होते हैं मुख्य बाइनरी के साथ इसके अंदर: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker और एक Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist
जैसा कि आप सोच रहे होंगे एक XPC घटक के अलग अधिकार और विशेषाधिकार होंगे अन्य XPC घटकों या मुख्य अनुप्रयोग बाइनरी से। इसके अलावा अगर XPC सेवा JoinExistingSession को इसकी Info.plist फाइल में "True" के रूप में सेट किया गया है। इस मामले में, XPC सेवा उसी सुरक्षा सत्र में चलेगी जैसे अनुप्रयोग जिसने इसे कॉल किया।
XPC सेवाएँ शुरू की जाती हैंlaunchd द्वारा जब आवश्यक होती हैं और बंद कर दी जाती हैं एक बार सभी कार्य पूरे हो जाने के बाद सिस्टम संसाधनों को मुक्त करने के लिए। अनुप्रयोग-विशिष्ट XPC घटक केवल अनुप्रयोग द्वारा ही उपयोग किए जा सकते हैं, इस प्रकार संभावित कमजोरियों से जुड़े जोखिम को कम करते हैं।
सिस्टम वाइड XPC सेवाएँ
सिस्टम-वाइड XPC सेवाएँ सभी उपयोगकर्ताओं के लिए सुलभ होती हैं। ये सेवाएँ, चाहे launchd हों या Mach-प्रकार की, उन्हें plist फाइलों में परिभाषित किया जाना चाहिए जो निर्दिष्ट निर्देशिकाओं जैसे /System/Library/LaunchDaemons, /Library/LaunchDaemons, /System/Library/LaunchAgents, या /Library/LaunchAgents में स्थित होती हैं।
इन plist फाइलों में एक कुंजी MachServices होगी जिसमें सेवा का नाम होगा, और एक कुंजी Program जिसमें बाइनरी का पथ होगा:
LaunchDameons में जो होते हैं वे root द्वारा चलाए जाते हैं। इसलिए यदि कोई अनाधिकृत प्रक्रिया इनमें से किसी से बात कर सकती है, तो वह संभवतः अधिकार बढ़ा सकती है।
XPC इवेंट संदेश
एप्लिकेशन विभिन्न इवेंट संदेशों की सदस्यता ले सकते हैं, जिससे वे ऐसी घटनाओं के होने पर मांग पर प्रारंभ किए जा सकते हैं। इन सेवाओं की सेटअपlaunchd plist फाइलों में की जाती है, जो पिछले वालों के समान निर्देशिकाओं में स्थित होती हैं और इनमें एक अतिरिक्त LaunchEvent कुंजी होती है।
XPC कनेक्टिंग प्रक्रिया जांच
जब कोई प्रक्रिया XPC कनेक्शन के माध्यम से किसी मेथड को कॉल करने का प्रयास करती है, तो XPC सेवा को जांचना चाहिए कि उस प्रक्रिया को कनेक्ट करने की अनुमति है या नहीं। यहाँ उसे जांचने के सामान्य तरीके और सामान्य गलतियाँ हैं:
Apple एप्लिकेशन को कुछ अधिकारों को कॉन्फ़िगर करने और उन्हें प्राप्त करने का तरीका भी अनुमति देता है, इसलिए यदि कॉल करने वाली प्रक्रिया के पास वे होते हैं तो उसे XPC सेवा से मेथड कॉल करने की अनुमति होगी:
XPC संदेशों को स्निफ करने के लिए आप xpcspy का उपयोग कर सकते हैं जो Frida का उपयोग करता है।
# Installpip3installxpcspypip3installxpcspy--no-deps# To not make xpcspy install Frida 15 and downgrade your Frida installation# Start sniffingxpcspy-U-r-W<bundle-id>## Using filters (i: for input, o: for output)xpcspy-U<prog-name>-t'i:com.apple.*'-t'o:com.apple.*'-r
The provided text appears to be part of a markdown file used for documentation or instructional content, specifically it seems to be closing syntax for tabbed content. Since there is no actual content to translate, only markdown syntax is present, which should not be translated. Therefore, there is nothing to translate in the provided text. If you have any actual English content that needs translation into Hindi, please provide the text.
# Compile the server & clientgccxpc_server.c-oxpc_servergccxpc_client.c-oxpc_client# Save server on it's locationcpxpc_server/tmp# Load daemonsudocpxyz.hacktricks.service.plist/Library/LaunchDaemonssudolaunchctlload/Library/LaunchDaemons/xyz.hacktricks.service.plist# Call client./xpc_client# Cleansudolaunchctlunload/Library/LaunchDaemons/xyz.hacktricks.service.plistsudorm/Library/LaunchDaemons/xyz.hacktricks.service.plist/tmp/xpc_server
```bash # Compile the server & client gcc -framework Foundation oc_xpc_server.m -o oc_xpc_server gcc -framework Foundation oc_xpc_client.m -o oc_xpc_client