ios - 在 iOS 11 或更高版本中检测越狱
<p><p>使用“<a href="https://github.com/leecrossley/cordova-plugin-jailbreak-detection" rel="noreferrer noopener nofollow">https://github.com/leecrossley/cordova-plugin-jailbreak-detection</a>”,但它仍然没有检查越狱,因为 Cydia 和其他选项在最新的 11+ iOS 版本中被绕过</p>
<p>如何使用 Cordova 或原生代码处理最新的 iOS?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><strong>2021 年更新:</strong>
您可以在本文中使用 UIDevice 上的扩展:
<a href="https://developerinsider.co/best-way-to-check-if-your-ios-app-is-running-on-a-jailbroken-phone/" rel="noreferrer noopener nofollow">https://developerinsider.co/best-way-to-check-if-your-ios-app-is-running-on-a-jailbroken-phone/</a> </p>
<p>我在这里复制了所有代码。</p>
<p>你可以在 Github 上找到最新版本的代码(作者是@vineetchoudhary):
<a href="https://github.com/developerinsider/isJailBroken/blob/master/IsJailBroken/Extension/UIDevice%2BJailBroken.swift" rel="noreferrer noopener nofollow">https://github.com/developerinsider/isJailBroken/blob/master/IsJailBroken/Extension/UIDevice%2BJailBroken.swift</a> </p>
<p>完整代码:</p>
<pre><code>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: {
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: {
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"
]
}
}
</code></pre>
<p>另外,您需要在 <code>Info.plist</code> 内的 <code>LSApplicationQueriesSchemes</code> 键中添加 <code>cydia</code>。 <code>canOpenURL</code> 需要它才能工作。</p>
<pre><code><key>LSApplicationQueriesSchemes</key>
<array>
<string>cydia</string>
</array>
</code></pre></p>
<p style="font-size: 20px;">关于ios - 在 iOS 11 或更高版本中检测越狱,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/49194968/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/49194968/
</a>
</p>
页:
[1]