-
[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 }
이 형식으로 사용하면 된다.
해당 파일이 궁금하다면 하단에 파일을 다운받도록 하자
'iOS > Swift' 카테고리의 다른 글
[프로그래머스] 부족한 금액 계산하기 (0) 2021.09.13 [Swift] isEmpty 사용법 (String 의 값이 있는가 판별) (0) 2021.06.14 [Swift] StatusBar 높이 구하기 (0) 2021.04.29 [Swift] iOS 내부저장 UserDefaults 이렇게 쓰면 돼 (0) 2021.02.08 [Swift] 버전 컨트롤 (0) 2020.07.06