ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] iOS 탈옥 감지 JailBreak 이렇게 쓰면 돼
    iOS/Swift 2021. 4. 1. 17:07

     

    iOS 의 탈옥감지는 근본적으로 단말기의 설치되어있는 파일을 검색하여 사용한다.

    탈옥 시켜주는 앱이 설치되어있는가, 그에 해당하는 파일이있는가를 검색 및 존재여부를 확인한다.

    class JailBreak: NSObject {
        func hasJailbreak() -> Bool {
                
                guard let cydiaUrlScheme = NSURL(string: "cydia://package/com.example.package") else { return false }
                if UIApplication.shared.canOpenURL(cydiaUrlScheme as URL) {
                    return true
                }
                #if arch(i386) || arch(x86_64)
                return false
                #endif
                
                let fileManager = FileManager.default
                if fileManager.fileExists(atPath: "/Applications/Cydia.app") ||
                    fileManager.fileExists(atPath: "/Library/MobileSubstrate/MobileSubstrate.dylib") ||
                    fileManager.fileExists(atPath: "/bin/bash") ||
                    fileManager.fileExists(atPath: "/usr/sbin/sshd") ||
                    fileManager.fileExists(atPath: "/etc/apt") ||
                    fileManager.fileExists(atPath: "/usr/bin/ssh") ||
                    fileManager.fileExists(atPath: "/private/var/lib/apt") {
                    return true
                }
                if canOpen(path: "/Applications/Cydia.app") ||
                    canOpen(path: "/Library/MobileSubstrate/MobileSubstrate.dylib") ||
                    canOpen(path: "/bin/bash") ||
                    canOpen(path: "/usr/sbin/sshd") ||
                    canOpen(path: "/etc/apt") ||
                    canOpen(path: "/usr/bin/ssh") {
                    return true
                }
                let path = "/private/" + NSUUID().uuidString
                do {
                    try "anyString".write(toFile: path, atomically: true, encoding: String.Encoding.utf8)
                    try fileManager.removeItem(atPath: path)
                    return true
                } catch {
                    return false
                }
            }
            func canOpen(path: String) -> Bool {
                let file = fopen(path, "r")
                guard file != nil else { return false }
                fclose(file)
                return true
            }
    
    }
    

     

     

    단말기에 탈옥여부를 추가하려면 코드를 추가하여

     

            let jailBreak = JailBreak.init()
            if jailBreak.hasJailbreak() == true {
    			
                //code
                
                return
            }
    

     

    이 형식으로 사용하면 된다.

     

    해당 파일이 궁금하다면 하단에 파일을 다운받도록 하자


    JailBreak.swift
    0.00MB

    댓글