<summary><strong>AWS हैकिंग सीखें शुरुआत से लेकर एक्सपर्ट तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**.
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
**सामग्री कॉपी की गई** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions) से
* **कस्टम कीबोर्ड**: iOS सिस्टम कीबोर्ड को कस्टम कीबोर्ड से बदल देता है जिसका उपयोग सभी ऐप्स में किया जा सकता है।
* **शेयर**: एक शेयरिंग वेबसाइट पर पोस्ट करें या दूसरों के साथ कंटेंट शेयर करें।
* **टुडे**: जिसे **विजेट्स** भी कहा जाता है, वे नोटिफिकेशन सेंटर के टुडे व्यू में कंटेंट प्रदान करते हैं या त्वरित कार्य करते हैं।
उदाहरण के लिए, यूजर _होस्ट ऐप_ में टेक्स्ट सेलेक्ट करता है, "शेयर" बटन पर क्लिक करता है और सूची से एक "ऐप" या एक्शन चुनता है। इससे _कंटेनिंग ऐप_ का _ऐप एक्सटेंशन_ ट्रिगर होता है। ऐप एक्सटेंशन अपना व्यू होस्ट ऐप के संदर्भ में प्रदर्शित करता है और होस्ट ऐप द्वारा प्रदान की गई आइटम्स का उपयोग करता है, इस मामले में चयनित टेक्स्ट, एक विशिष्ट कार्य करने के लिए (उदाहरण के लिए, इसे एक सोशल नेटवर्क पर पोस्ट करना)। इस [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW13) से ली गई यह तस्वीर इसे बहुत अच्छे से सारांशित करती है:
* एक **ऐप एक्सटेंशन कभी भी अपने कंटेनिंग ऐप के साथ सीधे संवाद नहीं करता** (आमतौर पर, जब ऐप एक्सटेंशन चल रहा होता है तो कंटेनिंग ऐप चल नहीं रहा होता)।
* एक **ऐप एक्सटेंशन** और **होस्ट ऐप****इंटर-प्रोसेस** संचार के माध्यम से **संवाद करते हैं**।
* एक **ऐप एक्सटेंशन** का कंटेनिंग ऐप और **होस्ट ऐप बिलकुल भी संवाद नहीं करते**।
* एक **टुडे****विजेट** (और कोई अन्य ऐप एक्सटेंशन प्रकार नहीं) `NSExtensionContext` क्लास के `openURL:completionHandler:` मेथड को कॉल करके सिस्टम से अपने कंटेनिंग ऐप को खोलने के लिए कह सकता है।
* कोई भी **ऐप एक्सटेंशन** और इसका **कंटेनिंग ऐप** एक निजी रूप से परिभाषित साझा कंटेनर में **साझा डेटा तक पहुंच सकते हैं**।
* ऐप एक्सटेंशन्स **कुछ APIs तक पहुंच नहीं सकते**, उदाहरण के लिए, HealthKit।
* वे **AirDrop का उपयोग करके डेटा प्राप्त नहीं कर सकते** लेकिन डेटा भेज सकते हैं।
* **कोई लंबे समय तक चलने वाले बैकग्राउंड कार्य** अनुमति नहीं हैं लेकिन अपलोड या डाउनलोड शुरू किए जा सकते हैं।
* ऐप एक्सटेंशन्स **iOS डिवाइस पर कैमरा या माइक्रोफोन तक पहुंच नहीं सकते** (iMessage ऐप एक्सटेंशन्स को छोड़कर)।
यदि आपके पास मूल स्रोत कोड है तो आप Xcode (cmd+shift+f) का उपयोग करके `NSExtensionPointIdentifier` की सभी घटनाओं की खोज कर सकते हैं या "Build Phases / Embed App extensions" में देख सकते हैं:
आप SSH के माध्यम से भी पहुँच सकते हैं, ऐप बंडल को ढूँढ सकते हैं और सभी अंदर के PlugIns की सूची बना सकते हैं (वे डिफ़ॉल्ट रूप से वहाँ रखे जाते हैं) या इसे objection के साथ कर सकते हैं:
यह होस्ट ऐप्स के साथ साझा किए जा रहे डेटा के लिए महत्वपूर्ण है (उदाहरण के लिए Share या Action Extensions के माध्यम से)। जब उपयोगकर्ता होस्ट ऐप में किसी डेटा प्रकार का चयन करता है और यह यहां परिभाषित डेटा प्रकारों से मेल खाता है, तो होस्ट ऐप एक्सटेंशन की पेशकश करेगा। `UIActivity` के माध्यम से डेटा साझा करने और यहां के अंतर को देखना महत्वपूर्ण है जहां हमें दस्तावेज़ प्रकारों को परिभाषित करना था, UTIs का उपयोग करके भी। इसके लिए ऐप को एक्सटेंशन की आवश्यकता नहीं होती है। केवल `UIActivity` का उपयोग करके डेटा साझा करना संभव है।
ऐप एक्सटेंशन की `Info.plist` फ़ाइल का निरीक्षण करें और `NSExtensionActivationRule` के लिए खोज करें। वह कुंजी समर्थित डेटा को निर्दिष्ट करती है और उदाहरण के लिए, समर्थित आइटमों की अधिकतम संख्या भी। उदाहरण के लिए:
केवल यहाँ प्रस्तुत डेटा प्रकार और जिनका `MaxCount``0` नहीं है, उन्हें समर्थन दिया जाएगा। हालांकि, एक तथाकथित प्रेडिकेट स्ट्रिंग का उपयोग करके अधिक जटिल फिल्टरिंग संभव है जो दिए गए UTIs का मूल्यांकन करेगा। इसके बारे में अधिक विस्तृत जानकारी के लिए कृपया [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8) देखें।
याद रखें कि ऐप एक्सटेंशन और उनके मुख्य ऐप्स के पास एक दूसरे के कंटेनरों तक सीधी पहुंच नहीं होती है। हालांकि, डेटा साझा करना सक्षम किया जा सकता है। यह ["App Groups"](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19) और [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) API के माध्यम से किया जाता है। [Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW11) से इस चित्र को देखें:
गाइड में भी उल्लेखित है, यदि ऐप एक्सटेंशन `NSURLSession` क्लास का उपयोग करके पृष्ठभूमि अपलोड या डाउनलोड करने के लिए करता है, तो ऐप को एक साझा कंटेनर सेट अप करना चाहिए, ताकि एक्सटेंशन और उसके मुख्य ऐप दोनों ही स्थानांतरित डेटा तक पहुंच सकें।
हालांकि, यह वर्तमान में केवल "कस्टम कीबोर्ड" ऐप एक्सटेंशन के लिए संभव है (और जब कीबोर्ड के माध्यम से संवेदनशील डेटा को संभालने वाले ऐप्स का परीक्षण करते समय सत्यापित किया जाना चाहिए जैसे कि बैंकिंग ऐप्स)।
पिछले उदाहरण के अनुसार टेलीग्राम का उपयोग करते हुए हम अब एक टेक्स्ट फाइल पर "Share" बटन का उपयोग करेंगे (जो एक चैट से प्राप्त हुई थी) ताकि उसके साथ नोट्स ऐप में एक नोट बनाया जा सके:
* यह XPC के माध्यम से अंतर्निहित रूप से हुआ, विशेष रूप से यह `NSXPCConnection` के माध्यम से लागू किया गया है जो `libxpc.dylib` फ्रेमवर्क का उपयोग करता है।
*`NSItemProvider` में शामिल UTIs `public.plain-text` और `public.file-url` हैं, बाद वाला `NSExtensionActivationRule` में शामिल है जो [Telegram के "Share Extension" के `Info.plist`](https://github.com/TelegramMessenger/Telegram-iOS/blob/master/Telegram/Share/Info.plist) से है।
यदि आप XPC के अंतर्गत क्या हो रहा है, इसके बारे में और जानना चाहते हैं, तो हम "libxpc.dylib" से आंतरिक कॉल्स पर नजर डालने की सलाह देते हैं। उदाहरण के लिए आप [`frida-trace`](https://www.frida.re/docs/frida-trace/) का उपयोग कर सकते हैं और फिर आपको जो मेथड्स अधिक रोचक लगें उनमें गहराई से जाने के लिए स्वचालित रूप से उत्पन्न स्टब्स का विस्तार कर सकते हैं।
<summary><strong>Learn AWS hacking from zero to hero with</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) देखें!
* [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें।
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह।
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का पालन करें**।
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।