투케이2K

538. (ios/swift5) [유틸 파일] isJailbreak : 앱 탈옥 여부 상태 확인 본문

IOS

538. (ios/swift5) [유틸 파일] isJailbreak : 앱 탈옥 여부 상태 확인

투케이2K 2024. 8. 11. 15:39

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [앱 탈옥 여부 상태 확인]
    // -----------------------------------------------------------------------------------------
    func isJailbreak() -> Bool {
        
        /*
        // -----------------------------------------
        [isJailbreak 메소드 설명]
        // -----------------------------------------
        1. 앱 탈옥 여부 상태 확인 실시
        // -----------------------------------------
        2. 호출 방법 :
         
         C_StateCheck().isJailbreak()
        // -----------------------------------------
        3. 리턴 데이터 :
         
         시뮬레이터에서 동작 중인 경우 및 탈옥 패키지가 설치 된 경우 true, 아닌 경우 false
        // -----------------------------------------
        4. 참고 내용 :
         
         TARGET_IPHONE_SIMULATOR : iOS 9.0 beta 부터 deprecated
        // -----------------------------------------
        */
        
        
        // [초기 리턴 데이터 변수 선언 실시]
        var returnData = false
        

        // [시뮬레이터 체크 수행 실시]
        let modelName = ProcessInfo.processInfo.environment["SIMULATOR_DEVICE_NAME"] ?? ""
        if modelName != nil && modelName.isEmpty == false && modelName.count>0 {
            S_Log._D_(description: "시뮬레이터 동작 상태 확인 :: true", data: nil)

            // [리턴 변수 변경]
            returnData = true
            
            // [리턴 반환 실시]
            return returnData
        }
        
        
        // [탈옥 앱 설치 여부 확인]
        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") {
            
            S_Log._D_(description: "탈옥 설치 여부 상태 확인 :: true", data: nil)

            // [리턴 변수 변경]
            returnData = true
            
            // [리턴 반환 실시]
            return returnData
        }
        

        // [로그 출력 실시]
        S_Log._D_(description: "탈옥 설치 여부 상태 확인 :: false", data: nil)
        

        // [리턴 반환 실시]
        return returnData
    }
 

[결과 출력]

 

반응형
Comments