iOS UIActivity Sharing

iOS UIActivity Sharing

Support HackTricks

UIActivity Sharing Simplified

iOS 6 से शुरू होकर, तीसरे पक्ष के अनुप्रयोगों को डेटा साझा करने की अनुमति दी गई है जैसे कि टेक्स्ट, URL, या छवियाँ, एयर्ड्रॉप जैसी तंत्रों का उपयोग करके, जैसा कि एप्पल के Inter-App Communication guide में वर्णित है। यह सुविधा एक प्रणाली-व्यापी शेयर गतिविधि शीट के माध्यम से प्रकट होती है जो "Share" बटन के साथ बातचीत करने पर प्रकट होती है।

सभी अंतर्निहित साझा करने के विकल्पों की एक व्यापक सूची UIActivity.ActivityType पर उपलब्ध है। डेवलपर्स विशिष्ट साझा करने के विकल्पों को बाहर करने का विकल्प चुन सकते हैं यदि वे उन्हें अपने अनुप्रयोग के लिए अनुपयुक्त मानते हैं।

How to Share Data

ध्यान निम्नलिखित पर केंद्रित होना चाहिए:

  • साझा किए जा रहे डेटा की प्रकृति।

  • कस्टम गतिविधियों का समावेश।

  • कुछ गतिविधि प्रकारों का बहिष्कार।

साझा करना UIActivityViewController के निर्माण के माध्यम से सुगम बनाया गया है, जिसमें साझा करने के लिए इच्छित आइटम पास किए जाते हैं। यह निम्नलिखित द्वारा प्राप्त किया जाता है:

$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

Developers को UIActivityViewController की गतिविधियों और कस्टम गतिविधियों की जांच करनी चाहिए जिनसे इसे प्रारंभ किया गया है, साथ ही किसी भी निर्दिष्ट excludedActivityTypes की भी।

डेटा प्राप्त करने का तरीका

डेटा प्राप्त करते समय निम्नलिखित पहलू महत्वपूर्ण हैं:

  • कस्टम दस्तावेज़ प्रकारों की घोषणा।

  • दस्तावेज़ प्रकारों का निर्दिष्ट करना जिन्हें ऐप खोल सकता है।

  • प्राप्त डेटा की अखंडता की पुष्टि करना।

स्रोत कोड तक पहुंच के बिना, कोई Info.plist में UTExportedTypeDeclarations, UTImportedTypeDeclarations, और CFBundleDocumentTypes जैसे कुंजी की जांच कर सकता है ताकि यह समझ सके कि एक ऐप किन दस्तावेज़ प्रकारों को संभाल और घोषित कर सकता है।

इन कुंजी पर एक संक्षिप्त मार्गदर्शिका Stackoverflow पर उपलब्ध है, जो सिस्टम-व्यापी पहचान के लिए UTIs को परिभाषित और आयात करने के महत्व को उजागर करती है और "Open With" संवाद में आपके ऐप के साथ दस्तावेज़ प्रकारों को जोड़ती है।

डायनामिक परीक्षण दृष्टिकोण

गतिविधियों को भेजने के लिए, कोई:

  • साझा की जा रही वस्तुओं और गतिविधियों को कैप्चर करने के लिए init(activityItems:applicationActivities:) विधि में हुक कर सकता है।

  • excludedActivityTypes प्रॉपर्टी को इंटरसेप्ट करके बाहर की गई गतिविधियों की पहचान कर सकता है।

वस्तुओं को प्राप्त करने के लिए, इसमें शामिल है:

  • किसी अन्य स्रोत (जैसे, AirDrop, ईमेल) से ऐप के साथ एक फ़ाइल साझा करना जो "Open with..." संवाद को प्रेरित करता है।

  • ऐप की प्रतिक्रिया को देखने के लिए स्थैतिक विश्लेषण के दौरान पहचानी गई अन्य विधियों के बीच application:openURL:options: में हुक करना।

  • ऐप की मजबूती का मूल्यांकन करने के लिए गलत फ़ाइलों या फज़िंग तकनीकों का उपयोग करना।

संदर्भ

Support HackTricks

Last updated