আমি কীভাবে সনাক্ত করব যে একটি আইওএস অ্যাপ জেলব্রোকড ফোনে চলছে?


167

আমি যদি চাই যে আমার অ্যাপ্লিকেশনটি জেলব্রোকড আইফোনটিতে অন্যরকম আচরণ করতে পারে, তবে আমি কীভাবে এটি নির্ধারণ করব?


আপনি চলমান লক্ষ্য অনুসরণ করছেন, তবে আপনার কৌশলটি কতটা কার্যকর তা দেখার জন্য আপনি এই সংস্থানগুলির অগ্রগতি অনুসরণ করার চেষ্টা করতে পারেন: - theiphonewiki.com/wiki/Bypassing_ জেলব্রেক_ডেটিশন - theiphonewiki.com/wiki/XCon
মাইকেল বিশপ

উত্তর:


90

এটি জেলব্রেক বলতে কী বোঝায় তা নির্ভর করে। সাধারণ ক্ষেত্রে, আপনি সিডিয়া ইনস্টল করা আছে কিনা তা দেখতে সক্ষম হওয়া উচিত এবং এরকম কিছু করা উচিত something

NSString *filePath = @"/Applications/Cydia.app";
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
   // do something useful
}

হ্যাক করা কার্নেলগুলির জন্য, এটি আরও কিছুটা জড়িত involved


17
আপনার স্যান্ডবক্সের বাইরে কোনও ফাইল / দির সন্ধান করা কি যথেষ্ট হবে না ? পছন্দ / ইত্যাদি?
রিদমিক ফিস্টম্যান

58
নোট করুন যে সমস্ত ব্যবহারকারীর সিডিয়া ইনস্টল করা নেই - এটি ভাল চেক নয় এবং আপনার পরিবর্তে / বিন / ব্যাশের মতো / সমস্ত / ব্যবহারকারী / ইচ্ছামত / যাচাই করা উচিত।
অনুদান পল

2
অ্যাপটি কোথায় তার তথ্য সঞ্চয় করে? অথবা আমি কেবল একটি সিস্টেম () কমান্ড কল করে জানতে পারি। তাদের কিছু নির্দিষ্ট অ্যাপ রয়েছে কিনা তা আমি জানতে চাই এবং যদি সেগুলি সেগুলিতে থাকে তবে অ্যাপটি সীমাবদ্ধ করুন
কনরাদেব

2
@ রাজোরশার্প এই মুহুর্তে, প্রায় সকল ব্যবহারকারীর সিডিয়া রয়েছে। এখনই এটি পরীক্ষা করার পক্ষে এটি যথেষ্ট। তবে, আপনি যদি 100% নির্ভরযোগ্য চেক চান, আপনি নীচের মত কার্নেল ভিত্তিক চেক ব্যবহার করতে চাইবেন।
অনুদান পল

1
ফাইল চেকগুলি বাইপাসের জন্য তুচ্ছ F যে কেউ আপনার মোবাইলের সাবস্ক্রেটকে হুক করতে ব্যবহার করতে পারে fileExistsAtPath:এবং আপনার NOযে নির্দিষ্ট পথটি পরীক্ষা করে তা ফিরিয়ে আনতে পারে ।
toasted_flakes

55

এটি এমন একটি কোড যা এই প্রয়োজনের জন্য আমি পেয়েছি এমন কয়েকটি জবাব একত্রিত করে এবং আপনাকে অনেক বেশি সাফল্যের হার দেবে:

BOOL isJailbroken()
{
#if !(TARGET_IPHONE_SIMULATOR)

   if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/MobileSubstrate.dylib"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/bin/bash"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/usr/sbin/sshd"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/etc/apt"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] ||
       [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://package/com.example.package"]])  {
         return YES;
   }

   FILE *f = NULL ;
   if ((f = fopen("/bin/bash", "r")) ||
      (f = fopen("/Applications/Cydia.app", "r")) ||
      (f = fopen("/Library/MobileSubstrate/MobileSubstrate.dylib", "r")) ||
      (f = fopen("/usr/sbin/sshd", "r")) ||
      (f = fopen("/etc/apt", "r")))  {
         fclose(f);
         return YES;
   }
   fclose(f);

   NSError *error;
   NSString *stringToBeWritten = @"This is a test.";
   [stringToBeWritten writeToFile:@"/private/jailbreak.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
   [[NSFileManager defaultManager] removeItemAtPath:@"/private/jailbreak.txt" error:nil];
   if(error == nil)
   {
      return YES;
   }

#endif

   return NO;
}

1
@ পরিজম, এটি আমার পাওয়া কয়েকটি উত্তরগুলির সংমিশ্রণ মাত্র। তাদের মধ্যে কিছু আমার পক্ষে কাজ করেনি, তবে অন্যের জন্য কাজ করেছেন .. সুতরাং এই কোডের সাহায্যে আপনি চান্স গ্রহণ করেন না .. আপনি যদি এটি ব্যবহার করেন তবে আপনি 99% নিশ্চিত হতে পারেন। পারফরম্যান্স সম্পর্কে, আপনি এটি প্রতিটি রানে একবারে চালাতে পারেন এবং উত্তরটি কোথাও সংরক্ষণ করতে পারেন, আপনাকে প্রতিবার এটি চালাতে হবে না ...
ইয়াসি

3
@Yossi এবং porizm আপেল আপনার অ্যাপ্লিকেশনটিকে অনুমোদন দিয়েছে যার উপরের কোডটি রয়েছে? দয়া করে জবাব দিন
কার্তিকপ্রভূ আলাগু

4
এই পদ্ধতি একটি inlined সি ফাংশন, হওয়া উচিত নয় উদ্দেশ্য সি। অবজেক্টিভ-সি পদ্ধতিগুলি আবিষ্কার এবং বাইপাস করা খুব সহজ, বিশেষত আপনি যদি এটি কল করেনisJailbroken
প্রোগ্রামার

2
@ ইয়াসি এই কভার ডিভাইসগুলি কি টইগ ব্যবহার করে জেলব্রোক করছে?
লক্ষী

3
@ লক্ষী আমি জানি না .. আপনি এখানে উত্তর চেক করার জন্য এবং আমন্ত্রণ যোগ করার চেয়ে বেশি নিমন্ত্রিত :)
ইয়াসি

54
+(BOOL)isJailbroken {
    NSURL* url = [NSURL URLWithString:@"cydia://package/com.example.package"];
    return [[UIApplication sharedApplication] canOpenURL:url];
}

/Applications/Cydia.appএকটি সাধারণ ফোনে ফাইলের পাথ চেক করার অনুমতি নেই? আমি অ্যাপল এটি সনাক্ত করার জন্য এবং এর জন্য একটি অ্যাপ্লিকেশনটি প্রত্যাখ্যান করার কথা কখনও শুনিনি, তবে অ্যাপল অনির্দেশ্য। হয় Cydia হয়েছে //: একটি URL স্কিম Cydia যা আইনত UIApplication সাথে চেক করা যাবেcanOpenURL:


1
এটি যাচাই করার দুর্দান্ত উপায় এবং এটি আপনার স্যান্ডবক্সের বাইরে যায় না। অবশ্যই, যদি জেলব্রেকার সিডিয়া ইনস্টল না করে থাকে তবে এটি কোনও ফিরিয়ে দেবে না, তবে আমি মনে করি বেশিরভাগ জেলব্রাইকগুলি সাইডিয়া ইনস্টল করে।
উইম হানস্ত্রা

অ্যাপটি ক্র্যাক হয়ে গেলে এই স্ট্রিংটি কী পরিবর্তন করা যাবে না?
এনএসআরওভার

8
আইওএস ৯.০ + এর জন্য আপনাকে অ্যাপ প্লাস্টে এলএসএপ্লিকেশন কুইরিশেমস কী যুক্ত করতে হবে। অন্যথায় canOpenURL সর্বদা মিথ্যা ফিরে আসবে।
ডেভিড ভি

1
এটি যদি কোনও ইনস্টল ইনস্টল করে ইনস্ট্যান্টটিভির মতো সাইডিয়া: // স্কিমের সাথে মানানসই অ্যাপ ইনস্টল করে থাকে তবে এটি একটি মিথ্যা-ইতিবাচক সরবরাহ করবে।
থ্যাটসন

@ থ্যাটিসন ধন্যবাদ! আমি কেন ভ্রান্ত
ধনাত্মকতা

52

কার্নেলটি নষ্ট হয়ে গেছে কিনা তা পরীক্ষা করা আরও বেশি জড়িত নয়।

জেলব্রেকিং কর্নেলের স্বাক্ষরিত কোডের স্বাক্ষর চেককে সর্বদা রিপোর্ট করে যে কোডটি সঠিকভাবে স্বাক্ষরিত হয়েছে, অখণ্ডিত ফোনগুলি একটি খারাপ স্বাক্ষর সহ কোড চালাতে পারে না।

সুতরাং, খারাপ স্বাক্ষর সহ অ্যাপ্লিকেশনটিতে একটি পৃথক নির্বাহযোগ্যকে অন্তর্ভুক্ত করুন। এটি কেবলমাত্র একটি 3-লাইনের প্রোগ্রাম হতে পারে যার মূল () এবং একটি ফেরতের মান থাকে। কোড সাইনিং ছাড়াই এক্সিকিউটেবলকে কম্পাইল করুন (এটিকে প্রজেক্ট সেটিংস-> বিল্ডে বন্ধ করুন) এবং "কোডসাইন" কমান্ডলাইন ইউটিলিটিটি ব্যবহার করে এটি একটি ভিন্ন কী দিয়ে সাইন করুন।

আপনার অ্যাপ্লিকেশনটি পৃথক সম্পাদনযোগ্যকে কার্যকর করুন। খারাপ সিগের সাথে পৃথক এক্সিকিউটেবল চলার সময় যদি আপনার প্রোগ্রামটি রিটার্নের মানটি না পান তবে অবশ্যই জেল হয়ে গেছে। পৃথক এক্সিকিউটেবল যদি এ-ওকে ফেরত দেয় তবে ফোনটি অবশ্যই জেলব্রোকেড।


13
অ্যাপ স্টোরের মাধ্যমে আপনি কী এমন (উপ-) কার্যকর করতে পারবেন যার স্বাক্ষরটি এর মতো অবৈধ?
ফ্রেব্রেটো

34
সম্ভবত জিনিসগুলি পরিবর্তিত হয়েছে তবে একটি পৃথক নির্বাহযোগ্য কার্যকর করা অ্যাপ্লিকেশন স্টোরটিতে অনুমোদিত হতে বাধা দেবে না?
পিটার জিচ

4
কেউ কি পূর্বের মন্তব্যে উত্তর দিতে পারে? এটি গুরুত্বপূর্ণ প্রশ্ন।
পেট্র

কোনও অবৈধ স্বাক্ষর সহ ডিস্কে মাচ-ও লিখতে সত্যিই কেউ আপনাকে থামাতে যাচ্ছে না। তবে, আমি এই উত্তরের সাথে একমত নই যে কার্নেলটি নষ্ট হয়েছে কিনা তা যাচাইয়ের সাথে জড়িত নয় বা এটি কোনও উপায়েই একটি চূড়ান্ত চেক।
সাগরঝা

20
BOOL isJailbroken()
{
#if TARGET_IPHONE_SIMULATOR
    return NO;
#else
    FILE *f = fopen("/bin/bash", "r");

    if (errno == ENOENT)
    {
        // device is NOT jailbroken
        fclose(f);
        return NO;
    }
    else {
        // device IS jailbroken
        fclose(f);
        return YES;
    }
#endif
}

এটি একটি ভাল সমাধান, তবে এক্সকন এবং অন্যান্য সরঞ্জামগুলি সহজেই এই চেকটিকে বাইপাস করতে পারে। সুতরাং, আমি আরও ভাল সমাধান খুঁজছি।
আলেক্সি রবস্কি

7
@ আলেক্সিরোবস্কি- এর নিখুঁত কোনও সমাধান নেই। সর্বদা এমন কেউ আছেন যিনি আপনার সুরক্ষা বাইপাস করার কোনও উপায় খুঁজে পাবেন, এটি কেবল একটি সত্য।
রিচার্ড জে রস তৃতীয়

14

নিম্নলিখিত ডিভাইসগুলি পরীক্ষা করে কোনও ডিভাইস জেলব্রোকন কিনা তা আপনি সনাক্ত করতে পারেন:

  • সাইডিয়া ইনস্টল করা আছে
  • সিস্টেমের কয়েকটি পথ যাচাই করুন
  • একটি স্যান্ডবক্স সততা পরীক্ষা করুন
  • সিমলিংক যাচাই সম্পাদন করুন
  • আপনি আপনার স্যান্ডবক্সের বাইরে ফাইল তৈরি এবং লেখেন কিনা তা যাচাই করুন

আমি বিভিন্ন নিবন্ধ এবং বই থেকে তৈরি একটি ওপেন সোর্স লাইব্রেরি আছে। গিটহাবে এটি ব্যবহার করে দেখুন !


14

আমি সুইট ২.৩-এ পুনরায় কাজ করেছি @ ইয়াসি দ্বারা প্রদত্ত সমাধানটি

public static func jailbroken(application: UIApplication) -> Bool {
    guard let cydiaUrlScheme = NSURL(string: "cydia://package/com.example.package") else { return isJailbroken() }
    return application.canOpenURL(cydiaUrlScheme) || isJailbroken()
}


static func isJailbroken() -> Bool {

    if isSimulator {
        return false
    }

    let fileManager = NSFileManager.defaultManager()
    if fileManager.fileExistsAtPath("/Applications/Cydia.app") ||
        fileManager.fileExistsAtPath("/Library/MobileSubstrate/MobileSubstrate.dylib") ||
        fileManager.fileExistsAtPath("/bin/bash") ||
        fileManager.fileExistsAtPath("/usr/sbin/sshd") ||
        fileManager.fileExistsAtPath("/etc/apt") ||
        fileManager.fileExistsAtPath("/usr/bin/ssh") {
        return true
    }

    if canOpen("/Applications/Cydia.app") ||
        canOpen("/Library/MobileSubstrate/MobileSubstrate.dylib") ||
        canOpen("/bin/bash") ||
        canOpen("/usr/sbin/sshd") ||
        canOpen("/etc/apt") ||
        canOpen("/usr/bin/ssh") {
        return true
    }

    let path = "/private/" + NSUUID().UUIDString
    do {
        try "anyString".writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding)
        try fileManager.removeItemAtPath(path)
        return true
    } catch {
        return false
    }
}

static func canOpen(path: String) -> Bool {
    let file = fopen(path, "r")
    guard file != nil else { return false }
    fclose(file)
    return true
}

6

আমি জানি সবচেয়ে পরিশীলিত পদ্ধতি হ'ল objc_copyImageNames()ফাংশন ব্যবহার করা। এটি বর্তমানে লোড হওয়া লাইব্রেরিগুলির একটি তালিকা ফেরত দেয় এবং যেহেতু বেশিরভাগ লোকেরা জেলব্রোকেন ডিভাইসে মোবাইলসুবস্ট্রেট রয়েছে এবং বেশিরভাগ আইএপি ক্র্যাক সরঞ্জাম এটির উপর নির্ভরশীল, তাই কমপক্ষে কিছু মোবাইলসবস্ট্রেট লাইব্রেরি প্রদর্শিত হবে।


মোবাইলসাবস্ট্রেট / সাইডিয়া সাবস্ট্রেট লাইব্রেরিগুলির মতো দেখতে আপনার কোনও লিঙ্ক আছে? "অন্ধ" চালাচ্ছি এবং গুগল অনুসন্ধানগুলি মূলত উপরে আপনার মন্তব্যটি নিয়ে আসে তার সাথে আমার চারপাশে খেলতে জেলব্রুক ফোন নেই।
চাদবাগ

@ চ্যাডব্যাগ আমার কাছে একটিও নেই তবে আপনি debমোবাইলসাবস্ট্রেটের ফাইলটি সন্ধান করতে পারেন , এটি আনপ্যাক এবং ব্ল্যাকলিস্টে (প্রায়) সমস্ত কিছু .dylibএটি প্যাক করা আছে।
ম্যাক্সথন চ্যান

ধন্যবাদ, আমি কিছু কোড বের করেছি এবং আপনার মন্তব্যের ভিত্তিতে আমি আরও কিছু স্টাফ যুক্ত করতে পারি। অনেক ধন্যবাদ!
চাদবাগ

4

আমি এর জন্য বিদ্যমান কোন "এপিআই" সম্পর্কে অবগত নই। যদি সেখানে থাকে, তবে একটি জেলব্র্যাক-মাস্কিং পণ্যগুলি তাদের তাড়াতাড়ি coverেকে রাখে।

যেহেতু প্রচুর লোক দেখায়, এটি একটি বিড়াল এবং মাউস খেলা। এবং উভয় খেলোয়াড়ই বিশেষজ্ঞ হওয়ার পরে, সবার প্রথমে কে নেমে আসে প্রথম পদক্ষেপটি পান। (ডিভাইসটি ধারণকারী ব্যক্তি))

জেডজিয়ার্সকির নতুন বই "হ্যাকিং এবং সুরক্ষা আইওএস অ্যাপস" -তে জেলব্রেক সনাক্তকরণের জন্য আমি অনেক ভাল পরামর্শ পেয়েছি। (ব্যক্তিগতভাবে আমি ও'রিলি ইবুকের জন্য আরও বেশি অর্থ প্রদান করেছি কারণ তারা অনুলিপি এবং পেস্টের অনুমতি দেয়))

না, আমি প্রকাশকদের সাথে অনুমোদিত নয়। তবে আমি এটি একটি ভাল বই পেয়েছি। আমি কেবল হ্যাকারদের ভুলগুলি প্রকাশ করতে পছন্দ করি না যাতে তারা সেগুলি ঠিক করতে পারে, তাই আমি ভেবেছিলাম বইটিতে ইঙ্গিত করব।


4

আপনার অ্যাপ্লিকেশন মাধ্যমে স্বাক্ষরবিহীন কোড কার্যকর করার চেষ্টা করুন।

জেলব্রোকড ডিভাইসে সাধারণত নিম্নলিখিত বৈশিষ্ট্য থাকে:

  • স্বাক্ষরবিহীন কোড চালান
  • Cydia ইনস্টল করা আছে
  • জেলব্রেক ফাইল আছে
  • পুরো ফাইল সিস্টেমে সম্পূর্ণ r / w অ্যাক্সেস
  • কিছু সিস্টেম ফাইল সংশোধন করা হবে (সামগ্রী এবং তাই sha1 মূল ফাইলের সাথে মেলে না)
  • নির্দিষ্ট সংস্করণে আটকে (জেলব্রেকযোগ্য সংস্করণ)

জেলব্রেক সনাক্তকরণের জন্য কেবল ফাইলের অস্তিত্ব পরীক্ষা করা ব্যর্থ হওয়ার সাথে সাথে ডুমমড। এই চেকগুলি বাইপাস করা সহজ।


3
স্বাক্ষরবিহীন কোড সম্পাদন করার চেষ্টা করা আপনার অ্যাপ্লিকেশনটিকে অ্যাপস্টোর থেকে প্রত্যাখ্যানযোগ্য করে তুলবে
ফ্রেডেরিক

4

পরীক্ষা করার জন্য কয়েকটি সাধারণ ফাইল: /Library/MobileSubstrate/MobileSubstrate.dylib

/Applications/Cydia.app

/var/cache/apt

/var/lib/apt

/var/lib/cydia

/var/log/syslog

/var/tmp/cydia.log

/bin/bash

/bin/sh

/usr/sbin/sshd

/usr/libexec/ssh-keysign

/etc/ssh/sshd_config

/etc/apt

সাইডিয়া সম্পর্কিত ফাইলগুলির সর্বাধিক পরীক্ষা করুন।


3

আমি এমন ফাইলগুলি সন্ধান করার পরামর্শ দেব যা "ভ্যানিলা" আইফোনে উপস্থিত নেই। সমস্ত জালব্রেক কিট আমি ইনস্টল ssh দেখেছি। এটি জেলব্রোকড ফোনের একটি ভাল সূচক হতে পারে।


18
ssh কখনই স্বয়ংক্রিয়ভাবে ইনস্টল হয় না, ব্যবহারকারীদের এটিকে নিজেরাই ইনস্টল করতে হবে।
অনুদান পল

1
আমি সত্যিই জেলব্রেকের দৃশ্যের সাথে আপ রাখি নি। তবে আমার মনে আছে, আমি যখন এটি লিখেছিলাম (জানুয়ারী'৯৯), জিফন এবং অন্যরা ডিফল্টরূপে এসএসএস এবং বিএসডি সাবসিস্টেম ইনস্টল করেছিলেন। সম্ভবত এটি আর সত্য নয়।
গর্ডন উইলসন

12
আমার বিশ্বাস করুন যখন আমি বলি যে chpwn জেলব্রেকের দৃশ্যের সাথে তাল মিলিয়েছে।
উইনফিল্ড ট্রেল

3

আমরা যা করেছি তা হ'ল, আমাদের ব্যবহারকারীদের ( স্টকস লাইভ ) সাথে যোগাযোগের জন্য ইতিমধ্যে আমাদের কাছে আরএসএস ফিড রয়েছে , আমরা একটি নিউজ আইটেম রাখি যাতে এরকম কিছু বলা আছে:

কিছু জেলব্রোকন ডিভাইসগুলির ব্লে ব্ল্যাক ব্লকের সমস্যা রয়েছে, আমরা এই সমস্যাগুলি সমাধান করার জন্য একটি হ্যাক তৈরি করেছি তবে আমাদের এটি জানতে হবে এটি জেলব্রোকন ডিভাইস কিনা বা না, এখানে চাপুন যাতে অ্যাপটি সমস্যার সমাধান করে। আপনি যদি কখনও স্বাভাবিক অবস্থায় ফিরে যান, অর্থাত্ জেলবন্ধটি সরিয়ে ফেলেন তবে এখানে টিপুন।

তারপরে আপনি ব্যবহারকারীর মিথস্ক্রিয়া প্রক্রিয়াকরণ করুন এবং যথাযথ করুন যা বিভিন্ন ইত্যাদি আচরণ করার মতো ...


3

কোন ফাইলটি সাইডিয়া বা জেলব্রোকড ডিভাইস তৈরি করে তা সন্ধান করার চেষ্টা করুন। অথবা অ্যাপ্লিকেশনটির ব্ল্যাকবক্সের বাইরে কোনও ফাইলে লেখার চেষ্টা করুন। আপনি যদি এটি করতে সফল হন তবে ডিভাইসটি আপোস / জেলব্রোকড :)

- (BOOL)jailbroken
{
    NSFileManager * fileManager = [NSFileManager defaultManager];
    return [fileManager fileExistsAtPath:@"/private/var/lib/apt/"];
}

2
অ্যাপল আপনার অ্যাপ্লিকেশনটি অনুমোদন করেছে যার উপরের কোডটি রয়েছে?
কার্তিকপ্রভূ আলাগু

3

দয়া করে সুইফট 4 এবং তদূর্ধ্বের জন্য নিম্নলিখিত কোডটি ব্যবহার করুন: অ্যাপিলেজিতে নিম্নলিখিত কোড যুক্ত করুন:

private func getJailbrokenStatus() -> Bool {
    if TARGET_IPHONE_SIMULATOR != 1 {
        // Check 1 : existence of files that are common for jailbroken devices
        if FileManager.default.fileExists(atPath: "/Applications/Cydia.app")
            || FileManager.default.fileExists(atPath: "/Library/MobileSubstrate/MobileSubstrate.dylib")
            || FileManager.default.fileExists(atPath: "/bin/bash")
            || FileManager.default.fileExists(atPath: "/usr/sbin/sshd")
            || FileManager.default.fileExists(atPath: "/etc/apt")
            || FileManager.default.fileExists(atPath: "/private/var/lib/apt/")
            || UIApplication.shared.canOpenURL(URL(string:"cydia://package/com.example.package")!) {
            return true
        }
        // Check 2 : Reading and writing in system directories (sandbox violation)
        let stringToWrite = "Jailbreak Test"
        do {
            try stringToWrite.write(toFile:"/private/JailbreakTest.txt", atomically:true, encoding:String.Encoding.utf8)
            //Device is jailbroken
            return true
        } catch {
            return false
        }
    }
    else {
        return false
    }
}

ফানক অ্যাপ্লিকেশনডিডকোম্যাক্টিভ (_ অ্যাপ্লিকেশন: ইউআইএএপ্লিকেশন) {

    if getJailbrokenStatus() {
        let alert = UIAlertController(title: LocalizedKeys.Errors.jailbreakError, message: LocalizedKeys.Errors.jailbreakErrorMessage, preferredStyle: UIAlertController.Style.alert)
        let jailBrokenView = UIViewController()

        jailBrokenView.view.frame = UIScreen.main.bounds
        jailBrokenView.view.backgroundColor = .white
        self.window?.rootViewController = jailBrokenView
        jailBrokenView.present(alert, animated: true, completion: nil)
    }

    if #available(iOS 11.0, *) {
        if !UIScreen.main.isCaptured {
            DispatchQueue.main.async {
                self.blockImageView.removeFromSuperview()
            }
        }
    }
}

1

এখানে আমার সমাধানগুলি: পদক্ষেপ 1

extension UIDevice {
    func isJailBroken() -> Bool {
        let cydiaPath = "/Applications/Cydia.app"
        let aptPath = "/private/var/lib/apt/"
        if FileManager.default.fileExists(atPath: cydiaPath) || FileManager.default.fileExists(atPath: aptPath) {
            return true
        }
        return false
    }
}

পদক্ষেপ 2: viewDidLoad()আপনার লঞ্চ স্ক্রিন ভিউ কন্ট্রোলারের ভিতরে এটি কল করুন (বা আপনি যে ভিসি প্রথমবারের জন্য কল করছেন):

       // show a blank screen or some other view controller
       let viewController = UIDevice.current.isJailBroken() ? JailBrokenViewController() : NextViewController()
       self.navigationController?.present(viewController, animated: true, completion:nil)

-2

অ্যাক্সেস / অ্যাপ্লিকেশন / প্রিফারেন্স.অ্যাপ / জেনারেল.পিলিস্টে চেষ্টা করার চেষ্টা করুন আপনার জেলব্রোকড আইফোন নন-জেবি ফোনে এটি করতে সক্ষম হওয়া উচিত আপনি এতে অ্যাক্সেস করতে সক্ষম হবেন না


3
এই উত্তরটি উত্স কোডের সাথে আরও আকর্ষণীয় হবে। আইএমএইচও: এটি আপনাকে উপার্জন করবে।
জোহান কার্লসন

5
-1 = আনজেলব্রোকড ডিভাইসগুলিও এই ফাইলটি খুলতে এবং পড়তে পারে। (পরীক্ষিত)
স্প্যানিশস

@ জোহানকার্লসন আমি ধরে নিয়েছি যে এখানে পাঠকরা তাদের নিজস্ব উত্স কোড লিখতে পারেন। যদি তারা না পারে - তারা এখানে কী করছে?
gnasher729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.