2016-08-24 6 views
15

मैं जेलब्रोकन आईओएस उपकरणों पर लक्षित एक ऐप विकसित कर रहा हूं। यह कुछ कार्यों को स्वचालित करने में सहायता करना है। मुझे/निजी/var/मोबाइल/लाइब्रेरी में एक साधारण टेक्स्ट फ़ाइल (वास्तव में एक .lua फ़ाइल) बनाने की आवश्यकता है। जाहिर है, डीबगर एक पहुंच अस्वीकार अपवाद फेंकता है। परीक्षण के प्रयोजनों के लिए अब ऐप को 'CreateFile' नाम दिया गया है।आईओएस ऐप के लिए रूट विशेषाधिकार

  1. सामान्य रूप से एप्लिकेशन बिल्ड:

    मैं निम्नलिखित कदम जड़ पहुँच प्राप्त करने का प्रयास किया है।

  2. ऐप बंडल में निष्पादन योग्य फ़ाइल की एक प्रति बनाएं।
  3. ओपन मूल निष्पादन योग्य फ़ाइल और इस स्क्रिप्ट के साथ अपनी सामग्री को बदल दें:

    #!/bin/bash 
    dir=$(dirname "$0") 
    exec "${dir}"/CreateFile "[email protected]" 
    

    सीधे शुरू करने एक रूट एप्लिकेशन iOS पर विफल रहता है। इसलिए हम ऐप के मुख्य निष्पादन योग्य को उस स्क्रिप्ट के साथ प्रतिस्थापित करते हैं जो रूट निष्पादन योग्य लॉन्च करता है।

  4. टर्मिनल में, ऐप बंडल पर नेविगेट करें।

  5. chmod 0775 मूल निष्पादन योग्य फ़ाइल और chmod 6775 प्रतिलिपि निष्पादन योग्य फ़ाइल।
  6. ऐप बंडल को किसी डिवाइस पर/एप्लिकेशन पर कॉपी करें। स्प्रिंगबोर्ड को पुनरारंभ करें और आपको जाने के लिए अच्छा होना चाहिए। यदि ऐप लॉन्च नहीं होता है तो डिवाइस पर चरण 5 & 6 दोहराएं।

इस विधि का उपयोग मैं सफलतापूर्वक/अनुप्रयोग फ़ोल्डर करने के लिए एप्लिकेशन इंस्टॉल करें और लॉन्च करने के लिए मिल सकता है, लेकिन मैं उम्मीद करते हैं कि मैं अभी भी जड़ अनुमतियों क्योंकि जैसे ही एप्लिकेशन लिखने आपरेशन यह दुर्घटनाओं की कोशिश करता है नहीं है।

यदि कोई इस स्थिति पर कुछ प्रकाश डाल सकता है तो मैं बहुत आभारी रहूंगा!

संपादित करें:

@creker की सलाह पर कुछ अतिरिक्त परीक्षण किया। जब मैं ऐप के दस्तावेज़ों की अनुमति वाली निर्देशिका में फ़ाइल बनाने का प्रयास करता हूं, तो यह कोई समस्या नहीं होने पर ठीक बनाता है। इस वजह से, मुझे यकीन है कि फ़ाइल निर्माण क्रैश नहीं कर रहा है और यह पूरी तरह से पहुंचने योग्य फ़ोल्डर पथ है।

इसके अलावा @creker की सलाह पर मैंने ऐप को किसी भी लॉन्च स्क्रिप्ट के बिना एप्लिकेशन इंस्टॉल करने का प्रयास किया। ऐप इस तरह से खुलने पर दुर्घटनाग्रस्त हो जाता है। अगर मैं स्थापना के बाद 775 पर निष्पादन योग्य अनुप्रयोग को chmod करता हूं, तो ऐप खुल जाएगा लेकिन फ़ाइल बनाने की कोशिश करते समय भी क्रैश हो जाएगा।

मैंने क्रैश रिपोर्टर से syslog में देखा। यहां क्रैश लाइन है:

System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Library/test.txt" is denied 

अभी भी इस मुद्दे को हल करने की उम्मीद है, किसी भी विचार का स्वागत है!

+0

ऊपर आईओएस में इस का उपयोग करने की होगी आपको '/ var/mobile/Library' में फ़ाइल बनाने के लिए रूट अनुमतियों की आवश्यकता नहीं है। '/ var/mobile'' मोबाइल' उपयोगकर्ता के लिए एक होम निर्देशिका है। जब तक आप सैंडबॉक्स नियमों तक सीमित न हों, वह निर्देशिका पूरी तरह से पहुंच योग्य नहीं है। – creker

+0

तब मुझे सैंडबॉक्स नियमों द्वारा सीमित किया जाना चाहिए क्योंकि जब मैं उस निर्देशिका में लिखने का प्रयास करता हूं तो मुझे पहुंच से वंचित कर दिया जाता है। क्या कोई भी अलग होने के लिए कदम हैं? – Kikootwo

+1

नहीं, आपको बस 'एप्लिकेशन' निर्देशिका में होना चाहिए। आपको लॉन्च स्क्रिप्ट की भी आवश्यकता नहीं है। शायद आपका ऐप एक अलग कारण के लिए दुर्घटनाग्रस्त हो जाता है। – creker

उत्तर

0

आईओएस पर रूट पहुंच प्राप्त करना तेजी से कठिन है क्योंकि सुरक्षा उपाय बढ़ते हैं, यहां तक ​​कि एक जेल्रैक के साथ भी। रूट खाते को प्रत्येक रिलीज के साथ कम विशेषाधिकार मिल रहा है, लेकिन इस खाते का उपयोग करना अभी भी संभव है। आप यह सुनिश्चित करके ऐसा कर सकते हैं कि आपकी ऐप बाइनरी रूट के स्वामित्व में है: व्हील, और फिर सेट सेट बिट सेट है।

chown root:wheel app_binary 
chmod +s app_binary 

और उसके बाद अपने अनुप्रयोग में जोड़ने यह का लाभ लेने के

@autoreleasepool 
{ 
    // Set uid and gid 
    if (!(setuid(0) == 0 && setgid(0) == 0)) 
    { 
     NSLog(@"Failed to gain root privileges, aborting..."); 
     exit(EXIT_FAILURE); 
    } 

    // Launch app 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class])); 
    /* you'll need to modify this return line to match your app */ 
} 

तुम भी एक प्रक्षेपण स्क्रिप्ट की जरूरत है संस्करण 6

#!/bin/bash 
myAppPath=$(dirname "$0") 
exec "$myAppPath"/myApp_ "[email protected]" 
संबंधित मुद्दे