首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iOS 11或更高版本中检测越狱

在iOS 11或更高版本中检测越狱
EN

Stack Overflow用户
提问于 2018-03-09 21:32:28
回答 2查看 16.1K关注 0票数 9

使用了"https://github.com/leecrossley/cordova-plugin-jailbreak-detection“,但它仍然没有检查越狱,因为Cydia和其他选项在最新的11+ iOS版本中被绕过了

如何使用Cordova或原生代码处理最新的iOS?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-09 22:07:38

更新2021:您可以在UIDevice上使用本文中的扩展:https://developerinsider.co/best-way-to-check-if-your-ios-app-is-running-on-a-jailbroken-phone/

我把所有的代码都复制到这里了。

你可以在Github上找到最新版本的代码(作者是@vineetchoudhary):https://github.com/developerinsider/isJailBroken/blob/master/IsJailBroken/Extension/UIDevice%2BJailBroken.swift

完整代码:

代码语言:javascript
运行
复制
import Foundation
import UIKit

extension UIDevice {
    var isSimulator: Bool {
        return TARGET_OS_SIMULATOR != 0
    }
    
    var isJailBroken: Bool {
        get {
            if UIDevice.current.isSimulator { return false }
            if JailBrokenHelper.hasCydiaInstalled() { return true }
            if JailBrokenHelper.isContainsSuspiciousApps() { return true }
            if JailBrokenHelper.isSuspiciousSystemPathsExists() { return true }
            return JailBrokenHelper.canEditSystemFiles()
        }
    }
}
    
private struct JailBrokenHelper {
    static func hasCydiaInstalled() -> Bool {
        return UIApplication.shared.canOpenURL(URL(string: "cydia://")!)
    }
    
    static func isContainsSuspiciousApps() -> Bool {
        for path in suspiciousAppsPathToCheck {
            if FileManager.default.fileExists(atPath: path) {
                return true
            }
        }
        return false
    }
    
    static func isSuspiciousSystemPathsExists() -> Bool {
        for path in suspiciousSystemPathsToCheck {
            if FileManager.default.fileExists(atPath: path) {
                return true
            }
        }
        return false
    }
    
    static func canEditSystemFiles() -> Bool {
        let jailBreakText = "Developer Insider"
        do {
            try jailBreakText.write(toFile: jailBreakText, atomically: true, encoding: .utf8)
            return true
        } catch {
            return false
        }
    }
    
    /**
     Add more paths here to check for jail break
     */
    static var suspiciousAppsPathToCheck: [String] {
        return ["/Applications/Cydia.app",
                "/Applications/blackra1n.app",
                "/Applications/FakeCarrier.app",
                "/Applications/Icy.app",
                "/Applications/IntelliScreen.app",
                "/Applications/MxTube.app",
                "/Applications/RockApp.app",
                "/Applications/SBSettings.app",
                "/Applications/WinterBoard.app"
        ]
    }
    
    static var suspiciousSystemPathsToCheck: [String] {
        return ["/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
                "/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
                "/private/var/lib/apt",
                "/private/var/lib/apt/",
                "/private/var/lib/cydia",
                "/private/var/mobile/Library/SBSettings/Themes",
                "/private/var/stash",
                "/private/var/tmp/cydia.log",
                "/System/Library/LaunchDaemons/com.ikey.bbot.plist",
                "/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
                "/usr/bin/sshd",
                "/usr/libexec/sftp-server",
                "/usr/sbin/sshd",
                "/etc/apt",
                "/bin/bash",
                "/Library/MobileSubstrate/MobileSubstrate.dylib"
        ]
    }
}

此外,您还需要在Info.plist内部的LSApplicationQueriesSchemes密钥中添加cydia。这是canOpenURL工作所必需的。

代码语言:javascript
运行
复制
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>cydia</string>
</array>
票数 25
EN

Stack Overflow用户

发布于 2018-03-09 22:08:46

在本机代码中:您可以使用DTTJailbreakDetection,它是Objective-C语言。如果你使用swift,你需要使用bridging header

Objective-C:

代码语言:javascript
运行
复制
if ([DTTJailbreakDetection isJailbroken]) {

    // your code
}

Swift:

代码语言:javascript
运行
复制
if DTTJailbreakDetection.isJailbroken() {

    // your code 
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49194968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档