iOS ऐप्स में Jailbreak Detection: सार, पहचान के तरीके और जाँच

लेखक: IT Sectr प्रकाशित: 2026-04-03 पढ़ने का समय: 10 मिनट

Jailbreak Detection उन तंत्रों का समूह है जो iOS डिवाइस पर जेलब्रेक की उपस्थिति का पता लगाते हैं और प्रतिबंध हटाए गए वातावरण में ऐप को चलने से रोकते हैं। जेलब्रेक सैंडबॉक्स के बाहर फ़ाइल सिस्टम तक पहुँच प्रदान करता है, संशोधित लाइब्रेरी स्थापित करने और सिस्टम कॉल को इंटरसेप्ट करने की अनुमति देता है। Apple Security Documentation (2024) के अनुसार, जेलब्रेक वाले डिवाइस Secure Boot सुरक्षा मॉडल का पालन नहीं करते हैं। Jailbreak Detection फ़ाइल संकेतक जाँच, रनटाइम कॉल विश्लेषण और सैंडबॉक्स हस्ताक्षर अखंडता सत्यापन को जोड़ता है।

मुख्य बिंदु

  • Jailbreak Detection — Apple के प्रतिबंध हटाए गए डिवाइसों पर iOS ऐप संचालन को अवरुद्ध करता है, जहाँ डेटा और ट्रैफ़िक इंटरसेप्शन संभव है
  • फ़ाइल जाँच जेलब्रेक के विशिष्ट निशान खोजती है: Cydia.app, Sileo.app, MobileSubstrate dylibs और /usr/bin में उपयोगिताएँ
  • रनटाइम विश्लेषण fork(), posix_spawn() निष्पादित करने और सैंडबॉक्स-अपवाद पथों तक पहुँचने की क्षमता की जाँच करता है
  • अस्पष्टीकरण (Obfuscation) और Objective-C/C में मूल कोड अनिवार्य है — Swift में जेलब्रेक जाँच Cydia Substrate के माध्यम से आसानी से बायपास हो जाती है
  • DeviceCheck और Apple का App Attest क्लाइंट-साइड जाँच को पूरक करते हुए सर्वर-साइड डिवाइस अखंडता प्रमाणन प्रदान करते हैं

Jailbreak Detection क्या है?

Jailbreak Detection उन iOS डिवाइसों की पहचान करने की प्रक्रिया है जिनसे ऑपरेटिंग सिस्टम के प्रतिबंध हटा दिए गए हैं। जेलब्रेक iOS कर्नेल को संशोधित करता है, कोड साइनिंग को निष्क्रिय करता है, पूर्ण फ़ाइल सिस्टम तक पहुँच प्रदान करता है और अनधिकृत लाइब्रेरी लोड करने की अनुमति देता है। ऐसे डिवाइस पर चलने वाले ऐप के लिए, रनटाइम वातावरण की अखंडता की कोई गारंटी नहीं है: कोई भी प्रक्रिया ऐप की मेमोरी पढ़ सकती है, सिस्टम ट्रस्ट स्टोर में अपने स्वयं के प्रमाणपत्र स्थापित करके SSL/TLS ट्रैफ़िक को इंटरसेप्ट कर सकती है, और Cydia Substrate या Substitute के माध्यम से कोड इंजेक्ट कर सकती है।

iOS पर वित्तीय ऐप्स को PCI DSS मानकों की आवश्यकताओं के अनुसार Jailbreak Detection लागू करना आवश्यक है — प्रमाणन के लिए, ऐप को यह साबित करना होगा कि वह समझौता किए गए डिवाइस पर नहीं चल रहा है। OWASP Mobile Security (2024) Jailbreak Detection की अनुपस्थिति को M8 भेद्यता के रूप में वर्गीकृत करता है। App Store ऐप्स के लिए, Apple जेलब्रेक वाले डिवाइसों पर कार्यक्षमता को अवरुद्ध करने पर प्रतिबंध नहीं लगाता है, लेकिन केवल क्लाइंट कोड पर निर्भर न होने के लिए क्लाइंट-साइड और सर्वर-साइड जाँचों को संयोजित करने की सिफारिश करता है जिसे संशोधित किया जा सकता है।

iOS पर Jailbreak Detection की वास्तुकला सैंडबॉक्स मॉडल के कारण Android पर Root Detection से अधिक जटिल है। Android पर, कोई ऐप सिस्टम का विश्लेषण करने के लिए /proc पढ़ सकता है। iOS सैंडबॉक्स अधिकांश सिस्टम संकेतकों तक सीधी पहुँच को अवरुद्ध करता है। डेवलपर्स को canAccessFile API के माध्यम से प्रतिबंधित क्षेत्रों में फ़ाइल उपलब्धता की जाँच करने या exit कोड सत्यापन के साथ fork() के माध्यम से चाइल्ड प्रक्रियाएँ लॉन्च करने जैसी वैकल्पिक तकनीकों का उपयोग करने के लिए मजबूर किया जाता है। आधुनिक जाँच केवल जेलब्रेक के तहत उपलब्ध कार्रवाइयों को आज़माने और परिणाम का विश्लेषण करने पर बनाई गई हैं।

फ़ाइल-आधारित पहचान विधियाँ

सबसे सरल और ऐतिहासिक रूप से पहला दृष्टिकोण उन फ़ाइलों और ऐप्स की जाँच करना है जो केवल जेलब्रेक वाले डिवाइसों पर स्थापित होते हैं। अपनी सरलता के बावजूद, फ़ाइल जाँच रक्षा की एक बुनियादी परत बनी हुई है, क्योंकि उन्हें बायपास करने के लिए उपयोगकर्ता से सक्रिय कार्रवाई की आवश्यकता होती है।

जेलब्रेक पैकेजों की जाँच

जेलब्रेक वाले डिवाइस पर, Cydia, Sileo, Zebra या Installer जैसे ऐप्स मौजूद होते हैं। उनकी उपस्थिति NSFileManager के माध्यम से जाँची जाती है: [[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"]। unc0ver, checkra1n, Taurine और Chimera के पैकेज समान रूप से जाँचे जाते हैं। ये जाँचें HideJB ट्वीक्स के माध्यम से बायपास की जा सकती हैं जो NSFileManager कॉल को इंटरसेप्ट करते हैं।

/usr/bin में उपयोगिताओं की जाँच

जेलब्रेक स्टॉक iOS में अनुपलब्ध UNIX उपयोगिताएँ स्थापित करता है: apt, dpkg, ssh, rsync, sftp, dd, readlink और अन्य। /usr/bin/ssh, /bin/bash, /bin/sh और /usr/libexec/sftp-server के अस्तित्व की जाँच की जाती है। यदि इनमें से कोई भी फ़ाइल सफलतापूर्वक पाई जाती है, तो जेलब्रेक की संभावना अधिक है। iOS 13–17 के लिए, /var/jb की उपस्थिति की जाँच करना भी प्रासंगिक है — unc0ver और Taurine के लिए बूटस्ट्रैप रूट निर्देशिका।

गतिशील लाइब्रेरी की जाँच

MobileSubstrate (CydiaSubstrate.dylib) और Substitute प्रक्रियाओं में कोड इंजेक्शन के लिए लाइब्रेरी हैं। उनकी उपस्थिति RTLD_NOLOAD फ्लैग के साथ dlopen() के माध्यम से जाँची जाती है। यदि लाइब्रेरी एड्रेस स्पेस में लोड है — तो प्रक्रिया जेलब्रेक वाले वातावरण में चल रही है। यह अधिक विश्वसनीय जाँच है, क्योंकि HideJB किसी प्रक्रिया में पहले से लोड लाइब्रेरी को अनलोड नहीं कर सकता है।

objective-c
- (BOOL)isJailbrokenByFiles {
    NSArray *paths = @[
        @"/Applications/Cydia.app",
        @"/Applications/Sileo.app",
        @"/Applications/Zebra.app",
        @"/usr/bin/ssh",
        @"/bin/bash",
        @"/var/jb",
        @"/etc/apt"
    ];

    for (NSString *path in paths) {
        if ([[NSFileManager defaultManager]
            fileExistsAtPath:path]) {
            return YES;
        }
    }
    return NO;
}

- (BOOL)isSubstrateLoaded {
    void *handle = dlopen(
        "/Library/MobileSubstrate/MobileSubstrate.dylib",
        RTLD_NOLOAD | RTLD_LAZY
    );
    if (handle) {
        dlclose(handle);
        return YES;
    }
    return NO;
}

गतिशील रनटाइम जाँच

गतिशील जाँचें ऐसी कार्रवाइयाँ करती हैं जो iOS सैंडबॉक्स में निषिद्ध हैं और परिणाम का विश्लेषण करती हैं। यदि कार्रवाई अवरुद्ध नहीं है — तो डिवाइस संभवतः जेलब्रेक किया गया है।

fork() और posix_spawn() की जाँच

स्टॉक iOS में, fork() कॉल errno = EPERM के साथ -1 लौटाता है। जेलब्रेक वाले डिवाइस पर, fork() सफल हो सकता है क्योंकि सैंडबॉक्स प्रतिबंध हटा दिए गए हैं। यह जाँच विश्वसनीय है लेकिन कुछ iOS संस्करणों पर गलत सकारात्मक परिणाम उत्पन्न कर सकती है। fork() को चाइल्ड प्रक्रिया लॉन्च करने की क्षमता की जाँच करने के लिए posix_spawn() से भी बदला जा सकता है।

सैंडबॉक्स सिस्टम हस्ताक्षर की जाँच

प्रतिबंधित क्षेत्रों में फ़ाइलें पढ़ने का प्रयास: /etc/master.passwd, /var/log/system.log, /private/var/cache। स्टॉक iOS में, ये रीड त्रुटि लौटाती हैं। यदि ऐप इन फ़ाइलों को सफलतापूर्वक पढ़ता है — तो सैंडबॉक्स अक्षम है। इसके अतिरिक्त, /private/ में लिखने की क्षमता की जाँच की जाती है — सैंडबॉक्स में, सभी सिस्टम विभाजन सामान्य ऐप्स के लिए केवल-पढ़ने के रूप में माउंट किए जाते हैं।

सिस्टम प्रतीकों की जाँच

जेलब्रेक सिस्टम लाइब्रेरी को संशोधित करता है, जिसमें dyld शेयर्ड कैश शामिल है। सिस्टम फ्रेमवर्क या व्यक्तिगत प्रतीकों के हैश की जाँच संशोधन को प्रकट कर सकती है। iOS 14+ के लिए, sysctl kern.version पढ़कर कर्नेल एड्रेस स्पेस में jit_region_create प्रतीक या Fugu14/checkra1n संचालन के अन्य संकेतों की उपस्थिति की जाँच की जाती है।

objective-c
- (BOOL)isJailbrokenByRuntime {
    // fork() की जाँच
    int pid = fork();
    if (pid == 0) {
        exit(0);
    }
    if (pid > 0) {
        waitpid(pid, NULL, 0);
        return YES;
    }

    // सिस्टम फ़ाइलों तक पहुँच की जाँच
    FILE *f = fopen("/etc/master.passwd", "r");
    if (f) {
        fclose(f);
        return YES;
    }

    // sysctl kern.version की जाँच
    size_t size = 0;
    sysctlbyname("kern.version", NULL, &size, NULL, 0);
    if (size > 0) {
        char *version = malloc(size);
        sysctlbyname("kern.version", version, &size, NULL, 0);
        NSString *str = [NSString stringWithUTF8String:version];
        free(version);
        if ([str containsString:"pwned"]) {
            return YES;
        }
    }

    return NO;
}

Objective-C में मूल कार्यान्वयन

Swift कोड आसानी से डिसएसेंबल किया जाता है और Substrate के माध्यम से बायपास किया जाता है। libobjc और C सिस्टम फ़ंक्शन के सीधे कॉल के साथ Objective-C में मूल कार्यान्वयन जाँच को बायपास करने के लिए काफी अधिक प्रतिरोधी बनाता है।

NSFileManager के बजाय stat() का उपयोग

libc से stat() कॉल को Objective-C स्तर पर इंटरसेप्ट नहीं किया जा सकता है। NSFileManager विधियों को इंटरसेप्ट करने वाले HideJB ट्वीक्स stat() को प्रभावित नहीं करते हैं। stat() का उपयोग करने वाली मूल जाँच HideJB मॉड्यूल स्थापित डिवाइसों पर भी फ़ाइल संकेतकों का पता लगाती है। फ़ाइलों के लिए stat() और लाइब्रेरी के लिए RTLD_NOLOAD के साथ dlopen() का संयोजन दो गैर-अतिव्यापी पहचान चैनल प्रदान करता है।

कोड हस्ताक्षर अखंडता जाँच

मूल फ़ंक्शन SecStaticCodeCheckValidity Apple प्रमाणपत्र के विरुद्ध ऐप के कोड हस्ताक्षर को सत्यापित करता है। जेलब्रेक वाले डिवाइस पर, यह जाँच कर्नेल पैच के माध्यम से नकली हो सकती है। नकली को रोकने के लिए, जाँच Swift Bridge के बजाय Security.framework से dlopen() के माध्यम से कॉल के साथ मूल कोड से की जानी चाहिए।

objective-c
#import <sys/stat.h>
#import <dlfcn.h>

- (BOOL)nativeCheckForJailbreak {
    // stat() NSFileManager हुक को बायपास कर रहा है
    struct stat st;
    if (stat("/Applications/Cydia.app", &st) == 0) {
        return YES;
    }

    // लोड किए बिना Substrate की जाँच के लिए dlopen
    void *substrate = dlopen(
        "/Library/MobileSubstrate/MobileSubstrate.dylib",
        RTLD_NOLOAD
    );
    if (substrate) {
        dlclose(substrate);
        return YES;
    }

    return NO;
}

Jailbreak Detection बायपास विधियाँ

मजबूत सुरक्षा बनाने के लिए बायपास तकनीकों को समझना आवश्यक है। आधुनिक बायपास उपकरण सक्रिय रूप से विकसित हो रहे हैं, और जाँच का एक स्थिर सेट महीनों के भीतर अप्रभावी हो जाता है।

HideJB और Shadow

HideJB एक ट्वीक है जो NSFileManager, stat(), dlopen() और fork() पर कॉल को इंटरसेप्ट करता है और वापसी मान बदल देता है। HideJB Cydia Substrate स्तर पर काम करता है, Objective-C और C दोनों फ़ंक्शन को इंटरसेप्ट करता है। iOS 15–16 के लिए HideJB (Shadow) का संस्करण कर्नेल-स्तरीय हुक पद्धति का उपयोग करता है। प्रतिउपाय: जाँच को एक अलग प्रक्रिया में IPC के माध्यम से परिणाम वितरण के साथ करें, जो हुक श्रृंखला को तोड़ता है।

Choicy और Liberty Lite

Choicy विशिष्ट प्रक्रियाओं के लिए Substrate को अक्षम करने की अनुमति देता है। उपयोगकर्ता सुरक्षित ऐप के लिए इंजेक्शन बंद कर देता है — सभी लाइब्रेरी जाँच false लौटाती हैं। Liberty Lite एक व्यापक बायपास है जो लोकप्रिय सुरक्षा लाइब्रेरी की अधिकांश जाँचों को कवर करता है। प्रतिउपाय: DeviceCheck और App Attest के माध्यम से सर्वर-साइड सत्यापन — सर्वर सत्यापित करता है कि डिवाइस के पास वैध Apple प्रमाणपत्र है जिसे जेलब्रेक वाले डिवाइस पर नकली नहीं बनाया जा सकता है।

Fugu14 और KFD के माध्यम से बायपास

कर्नेल एक्सप्लॉइट जैसे Fugu14 और KFD कर्नेल स्पेस में कोड निष्पादित करते हैं, जिससे ऐप के देखने से पहले सिस्टम कॉल को इंटरसेप्ट करना संभव हो जाता है। इस स्तर पर, stat() और fork() जाँच अप्रभावी हो जाती हैं। एकमात्र विश्वसनीय प्रतिउपाय सर्वर-साइड प्रमाणन है जिसमें सत्यापन किया जाता है कि डिवाइस ने Apple Attestation प्रक्रिया पास की है। यह प्रोटोकॉल Secure Enclave के अंदर क्रिप्टोग्राफ़िक कुंजियों पर आधारित है, जो कर्नेल-स्तरीय एक्सप्लॉइट के साथ भी पढ़ने योग्य नहीं हैं।

iOS सुरक्षा वास्तुकला और जेलब्रेक की भूमिका

प्रभावी Jailbreak Detection बनाने के लिए, यह समझना आवश्यक है कि जेलब्रेक के दौरान कौन से iOS सुरक्षा तंत्र अक्षम हो जाते हैं।

सुरक्षित बूट श्रृंखला (Secure Boot Chain)

iOS हस्ताक्षर जाँच के अनुक्रम के माध्यम से बूट होता है: Boot ROM → iBoot → iOS Kernel। यदि जेलब्रेक bootrom एक्सप्लॉइट (checkra1n) का उपयोग करता है, तो पूरी Secure Boot Chain से समझौता हो जाता है — एप्लिकेशन स्तर पर जाँच बेकार हैं। यदि केवल-सॉफ़्टवेयर एक्सप्लॉइट (unc0ver, Taurine, Fugu14) का उपयोग किया जाता है, तो बूट श्रृंखला टूटी नहीं है, और App Attest जैसी Apple सेवाएँ विश्वसनीय रहती हैं।

कर्नेल पैच प्रोटेक्शन (KPP)

iOS 10 से शुरू करके, Apple ने KPP पेश किया — हार्डवेयर सुरक्षा जो हर 200 मिलीसेकंड में कर्नेल अखंडता को पुनः सत्यापित करती है। सभी आधुनिक जेलब्रेक (iOS 14–17) PAC या APRR के माध्यम से KTRR बायपास का उपयोग करते हैं, लेकिन KPP संशोधित sysctl सिस्टम तालिकाओं के रूप में निशान छोड़ता है। pwned, prod, या गैर-मानक संस्करण के साथ xnu जैसे स्ट्रिंग की उपस्थिति के लिए kern.version की जाँच करना कर्नेल पैच को प्रकट कर सकता है।

सैंडबॉक्स अखंडता (Sandbox Integrity)

iOS सैंडबॉक्स एंटाइटलमेंट का उपयोग करके TrustedBSD स्तर पर काम करता है। जेलब्रेक सैंडबॉक्स प्रोफ़ाइल को allow-all से बदल देता है। एक ऐप अपने Documents निर्देशिका के बाहर किसी भी फ़ाइल को पढ़ने का प्रयास करके सैंडबॉक्स को सत्यापित कर सकता है। यदि सफल होता है — तो सैंडबॉक्स संशोधित किया गया है। सैंडबॉक्स अखंडता उन कुछ संकेतकों में से एक है जिसे कर्नेल-स्तरीय एक्सप्लॉइट के बिना नकली नहीं बनाया जा सकता है, क्योंकि अनुमति जाँच कर्नेल में इसे इंटरसेप्ट करने से पहले की जाती है।

अक्सर पूछे जाने वाले प्रश्न

Jailbreak Detection Root Detection से कैसे अलग है?

Android के लिए Root Detection su बाइनरी और Magisk की उपस्थिति की जाँच करता है। iOS के लिए Jailbreak Detection Cydia, Sileo, MobileSubstrate की खोज करता है, fork() निष्पादित करने की क्षमता की जाँच करता है और सिस्टम फ़ाइलें पढ़ता है। iOS सैंडबॉक्स वास्तुकला Android की तुलना में अधिक सख्त है, इसलिए iOS जाँच सिस्टम संकेतकों को पढ़ने के बजाय निषिद्ध कार्रवाइयाँ करने के प्रयास पर अधिक निर्भर करती हैं।

क्या Jailbreak Detection iOS 16 और 17 पर काम करता है?

हाँ, iOS 16–17 के लिए Dopamine, palera1n और checkra1n जेलब्रेक प्रासंगिक हैं। Jailbreak Detection काम करता है लेकिन नए उपकरणों के लिए जाँच को अपडेट करने की आवश्यकता होती है। iOS 17 में, Apple ने सैंडबॉक्स को मजबूत किया, और XNU में बदलावों के कारण कई पुरानी जाँचें (उदाहरण के लिए, fork()) अविश्वसनीय हो गई हैं।

किसी ऐप में Jailbreak Detection को कैसे बायपास करें?

सबसे आसान तरीका HideJB या Shadow है, जो लाइब्रेरी स्तर पर जाँच को इंटरसेप्ट करते हैं। अधिक जटिल सुरक्षा के लिए, किसी विशिष्ट ऐप के लिए इंजेक्शन अक्षम करने के लिए Frida या Choicy का उपयोग किया जाता है। सर्वर-साइड प्रमाणन (App Attest) को केवल Secure Enclave हार्डवेयर कुंजी को बदलने वाले कर्नेल-स्तरीय एक्सप्लॉइट के माध्यम से बायपास किया जा सकता है, जो व्यावहारिक रूप से असंभव है।

जेलब्रेक वाले डिवाइस पर ऐप चलाने के क्या परिणाम हैं?

जेलब्रेक वाले डिवाइस पर कोई भी ऐप निम्न के अधीन हो सकता है: विश्वसनीय स्टोर के संशोधन के माध्यम से SSL ट्रैफ़िक इंटरसेप्शन, फ़ाइल सिस्टम पहुँच के माध्यम से Keychain पढ़ना, टोकन हैंडलिंग विधियों के इंटरसेप्शन के साथ Substrate के माध्यम से कोड इंजेक्शन, और एन्क्रिप्शन कुंजियाँ प्राप्त करने के लिए मेमोरी डंपिंग।

App Attest क्या है और यह कैसे मदद करता है?

App Attest ऐप और डिवाइस की अखंडता को सत्यापित करने के लिए Apple की सेवा है। स्टार्टअप पर, ऐप Apple सर्वर से एक प्रमाणन चुनौती (attestation challenge) प्राप्त करता है, इसे Secure Enclave से निजी कुंजी के साथ हस्ताक्षरित करता है और अपने सर्वर को भेजता है। यदि डिवाइस जेलब्रेक किया गया है, तो Secure Enclave प्रमाणन विफलता लौटाता है, जो संरक्षित कार्यों तक पहुँच को अवरुद्ध करता है।

सारांश

  • Jailbreak Detection वित्तीय और व्यक्तिगत डेटा संसाधित करने वाले iOS ऐप्स के लिए एक अनिवार्य सुरक्षा तंत्र है, जो प्रतिबंध हटाए गए डिवाइसों पर निष्पादन को अवरुद्ध करता है
  • फ़ाइल जाँच HideJB NSFileManager हुक को बायपास करते हुए stat() और dlopen() के माध्यम से Cydia, Sileo, Zebra और /usr/bin में उपयोगिताओं की खोज करती है
  • गतिशील जाँच सैंडबॉक्स अक्षमता को सत्यापित करने के लिए fork(), posix_spawn() निष्पादित करती हैं और /etc/master.passwd पढ़ने का प्रयास करती हैं
  • Objective-C में मूल कार्यान्वयन सीधे libc कॉल के साथ Swift जाँच की तुलना में Substrate बायपास के लिए काफी अधिक प्रतिरोधी है
  • HideJB और Shadow मुख्य प्रक्रिया-स्तरीय बायपास उपकरण हैं, जो सर्वर-साइड प्रमाणन द्वारा निष्प्रभावी हो जाते हैं
  • Apple का App Attest Secure Enclave का उपयोग करके क्रिप्टोग्राफ़िक डिवाइस सत्यापन प्रदान करता है जिसे केवल-सॉफ़्टवेयर जेलब्रेक में बायपास नहीं किया जा सकता है
  • अनुशंसित वास्तुकला: मूल फ़ाइल जाँच + रनटाइम विश्लेषण + व्यापक iOS ऐप सुरक्षा के लिए DeviceCheck सर्वर-साइड प्रमाणन

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें