जबकि आपका उत्तर सही है, मैं सिर्फ इस पर और अधिक विशिष्ट होना चाहता हूं ताकि लोग जानना चाहते हैं कि वास्तव में क्या get_task_allow
मतलब है, क्या कर सकते हैं।
get_task_allow
एक एंटाइटेलमेंट है जो अन्य ऐप्स को आपके ऐप के कार्य पोर्ट को प्राप्त करने की अनुमति देता है। इसका मतलब यह है कि यदि कोई अन्य ऐप task_for_pid()
आपके ऐप प्रोसेस आईडी के साथ चलता है तो उन्हें आपके ऐप का टास्क पोर्ट मिल जाएगा, इसलिए वे मेमोरी पर चीजों को लिखने और पढ़ने जैसे काम कर सकते हैं, इसलिए चीजों को पैच करना और व्यवहार को संशोधित करना आपका ऐप।
यदि आप एक नज़र डालते हैं कि एक जेलब्रेक कैसे काम करता है, तो आप पहली चीज़ जो वे कर रहे हैं, उस पर ध्यान देंगे task_for_pid(mach_task_self(),0,&kernel_task);
जो कि kernel_task
एक mach_port_t
मूल्य के साथ है 0
, इसलिए वे कर्नेल की मेमोरी को छूने में सक्षम हैं।
चूंकि कर्नेल एंटाइटेलमेंट में एंटाइटेलमेंट नहीं है get_task_allow
, और Apple ने भी करने की संभावना को हटा दिया है tfp0
( task_for_pid 0
), उन्हें एक पैच की आवश्यकता है।
तो मूल रूप से Xcode को आपके ऐप की मेमोरी को छूने और इसे डीबग करने के लिए इसके साथ काम करने की आवश्यकता है, आपको इसे डीबगिंग के लिए सक्षम करने की आवश्यकता होगी, लेकिन आपको अपने ऐप को वितरित करने के लिए इसे अक्षम करने की आवश्यकता होगी या फिर कोई भी ऐप आपको प्राप्त करने में सक्षम होगा कार्य बंदरगाह।