यह निर्धारित करता है कि क्या iPhone जेल से प्रोग्रामिक रूप से टूटा हुआ है


79

यदि आप iPhone (iPod) निर्धारित करते हैं (प्रोग्रामेटिकली):

  1. जेल टूटी
  2. आपके सॉफ़्टवेयर की एक क्रैक की हुई कॉपी

पिंच मीडिया यह पता लगा सकता है कि क्या कोई फोन जेल टूट गया है या सॉफ्टवेयर चल रहा है, क्या किसी को पता है कि वे ऐसा कैसे करते हैं? क्या कोई पुस्तकालय हैं?


1
Apple जानता है कि यह कैसे निर्धारित किया जाए: p
जोश जोर्डन

2
इन्हें भी देखें: stackoverflow.com/questions/413242/…
e.James

2
यदि आपकी दिलचस्पी इस सवाल में है कि जेल-ब्रेकिंग स्टैक एक्सचेंज साइट के
रिचर्ड स्टेलिंग

जवाबों:


39

यहाँ पता लगाने के तरीकों में से एक है कि क्या आपके ऐप को क्रैक किया गया था।

संक्षेप में: क्रैकिंग में आमतौर पर Info.plist को बदलने की आवश्यकता होती है। चूंकि यह नियमित रूप से आपके पास पहुंच है, इसलिए इस तरह के बदलावों को निर्धारित करना बहुत आसान है।


1
दुर्भाग्य से, इस खोज तंत्र को तोड़ने वाला एक वर्कअराउंड है। एक बार ऐप इंस्टॉल हो जाने के बाद, SignerIdentity कुंजी अब आवश्यक नहीं है, इसलिए पटाखा बस अपने जेलब्रेक फोन में ssh कर सकते हैं और इसे हटाने के लिए प्लिस्ट को संपादित कर सकते हैं।
लिली बैलार्ड

@KevinBallard 2017 में आम जेलब्रेक का पता लगाने के लिए क्या आपके पास कोई सिफारिश है?
कूर

@ C @ur नहीं, मैंने उस टिप्पणी को लिखने के बाद से इस पर ध्यान नहीं दिया।
लिली बैलार्ड

25

जेलब्रेक फोन का पता लगाना उतना ही आसान है जितना की उपस्थिति के लिए जाँच करना /private/var/lib/apt/ फोल्डर । हालांकि यह इंस्टॉलर-केवल उपयोगकर्ताओं का पता नहीं लगाता है, अब तक अधिकांश ने Cydia, Icy या RockYourPhone (जिनमें से सभी apt का उपयोग करते हैं) स्थापित किए हैं

पायरेटेड उपयोगकर्ताओं का पता लगाने के लिए, सबसे आसान तरीका है कि SignerIdentityआप अपने ऐप में एक कुंजी की उपस्थिति की जांच करें Info.plist। चूंकि उन्नत पटाखे आसानी से मानक [[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]जांच पा सकते हैं , इसलिए #import <objc/runtime.h>वैकल्पिक कॉल रनटाइम का उपयोग करके या वैकल्पिक समकक्षों का उपयोग करके इन कॉलों को अस्पष्ट करना सबसे अच्छा है ।


10

बस ज़कोविआरी के जवाब पर विस्तार करने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं:

if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) {
  // Jailbroken
}

फिर भी, आपके एप्लिकेशन को जेलब्रेकिंग करने वाला व्यक्ति आपके प्रोग्राम को हेक्सिड कर सकता है और इस तरह, वे @ "साइनगैरनिटी" या कुछ और पढ़ने के लिए स्ट्रिंग @ "साइनरइंडेंटिटी" को संपादित कर सकते हैं या कुछ और कर सकते हैं जो शून्य पर लौटेगा, और इस तरह पास होगा।

इसलिए यदि आप इसका उपयोग करते हैं (या http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html से कोई अन्य सुझाव ):

  • यह हमेशा के लिए काम करने की उम्मीद मत करो
  • अपने ऐप को किसी भी तरह से तोड़ने / बाधा देने के लिए इस जानकारी का उपयोग न करें (अन्यथा उनके पास इसका कारण होगा, इसलिए आपका ऐप यह नहीं जान पाएगा कि यह जेलब्रेक है)
  • शायद कोड के इस बिट को बाधित करने के लिए बुद्धिमान है। उदाहरण के लिए, आप बेस 64 एनकोडेड रिवर्सल्ड स्ट्रिंग को अपने कोड में डाल सकते हैं, और फिर इसे प्रक्रिया को उल्टा करके ऐप में डीकोड कर सकते हैं।
  • अपने सत्यापन को बाद में अपने कोड में मान्य करें (जैसे जब मैंने साइनरइंटेंटिटी कहा था, तो क्या यह वास्तव में सिग्नेरिडिटी या सीएनजीग्रीनिटी कहा था?)
  • Stackoverflow जैसी सार्वजनिक वेबसाइट पर लोगों को यह न बताएं कि आप इसे कैसे करते हैं
  • ध्यान रखें कि यह केवल एक मार्गदर्शक है और मूर्ख-प्रमाण नहीं है (न ही पटाखा-सबूत!) - बड़ी शक्ति के साथ बड़ी जिम्मेदारी आती है।

तो यह आपके ऐप बंडल पर SignerIdentity को चेक करता है, लेकिन उस मामले के बारे में क्या है जो ऐप को हैक नहीं किया गया है या कुछ भी नहीं है, लेकिन डिवाइस JailBroken है, आप इसे कैसे पहचानेंगे?
एडवर्ड अश्क

इसे SO पर एक प्रश्न के रूप में पूछें और कोई उत्तर देगा :)
बेन्जी

5

ऊपर योन के और बेन्जी की टिप्पणियों पर विस्तार करने के लिए:

1) लोनन फुलर की विधि एन्क्रिप्शन चेक पर निर्भर करती है, जो योनेल से ऊपर से जुड़ा हुआ है, ऐसा प्रतीत होता है कि अभी भी स्वचालित खुर के उपकरणों से हार नहीं हुई है। मैं किसी भी समय जल्द ही LC_ENCRYPTION_INFO हेडर की स्थिति को बदलते हुए Apple के बारे में अधिक चिंतित नहीं होगा। ऐसा लगता है कि जेलबॉर्न आईफ़ोन पर कुछ अप्रत्याशित प्रभाव हुए हैं (तब भी जब उपयोगकर्ता ने एक प्रति खरीदी है ...)

किसी भी दर पर, मैं उस कोड के आधार पर किसी उपयोगकर्ता के खिलाफ कोई कठोर कार्रवाई नहीं करूंगा ...

2) बैंजी की टिप्पणी को फिर से पूरक करने के लिए। मोटापा (आपके एंटी-पायरेसी कोड में किसी भी स्ट्रिंग मान के साथ काम करते समय एक परम आवश्यकता): एक समान लेकिन शायद आसान तरीका यह है कि हमेशा नमकीन हैशेड की जांच करें कि आप जिस मूल्य की तलाश कर रहे हैं उसका संस्करण । उदाहरण के लिए (भले ही वह जाँच अब कुशल न हो), आप प्रत्येक MainBundle के प्रमुख नाम को md5 (कीनेम + "कुछ गुप्त नमक") के अनुसार उचित स्थिरांक की जाँच करेंगे ... बल्कि बुनियादी, लेकिन सुनिश्चित करने के किसी भी प्रयास को हराने के लिए तार।

बेशक, इसके लिए आपको अप्रत्यक्ष रूप से उस मूल्य की क्वेरी करने में सक्षम होना चाहिए जिसकी आप तुलना करना चाहते हैं (उदाहरण के लिए एक सरणी से होकर गुजरता है)। लेकिन यह सबसे अधिक बार होता है।


क्या आईओएस 7 के साथ आजकल लैंडन फुलर विधि अभी भी व्यावहारिक है?
बेसिल बॉर्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.