菜鸟教程小白 发表于 2022-12-13 15:55:33

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() -&gt; Bool {
      return UIApplication.shared.canOpenURL(URL(string: &#34;cydia://&#34;)!)
    }
   
    static func isContainsSuspiciousApps() -&gt; Bool {
      for path in suspiciousAppsPathToCheck {
            if FileManager.default.fileExists(atPath: path) {
                return true
            }
      }
      return false
    }
   
    static func isSuspiciousSystemPathsExists() -&gt; Bool {
      for path in suspiciousSystemPathsToCheck {
            if FileManager.default.fileExists(atPath: path) {
                return true
            }
      }
      return false
    }
   
    static func canEditSystemFiles() -&gt; Bool {
      let jailBreakText = &#34;Developer Insider&#34;
      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 [&#34;/Applications/Cydia.app&#34;,
                &#34;/Applications/blackra1n.app&#34;,
                &#34;/Applications/FakeCarrier.app&#34;,
                &#34;/Applications/Icy.app&#34;,
                &#34;/Applications/IntelliScreen.app&#34;,
                &#34;/Applications/MxTube.app&#34;,
                &#34;/Applications/RockApp.app&#34;,
                &#34;/Applications/SBSettings.app&#34;,
                &#34;/Applications/WinterBoard.app&#34;
      ]
    }
   
    static var suspiciousSystemPathsToCheck: {
      return [&#34;/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist&#34;,
                &#34;/Library/MobileSubstrate/DynamicLibraries/Veency.plist&#34;,
                &#34;/private/var/lib/apt&#34;,
                &#34;/private/var/lib/apt/&#34;,
                &#34;/private/var/lib/cydia&#34;,
                &#34;/private/var/mobile/Library/SBSettings/Themes&#34;,
                &#34;/private/var/stash&#34;,
                &#34;/private/var/tmp/cydia.log&#34;,
                &#34;/System/Library/LaunchDaemons/com.ikey.bbot.plist&#34;,
                &#34;/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist&#34;,
                &#34;/usr/bin/sshd&#34;,
                &#34;/usr/libexec/sftp-server&#34;,
                &#34;/usr/sbin/sshd&#34;,
                &#34;/etc/apt&#34;,
                &#34;/bin/bash&#34;,
                &#34;/Library/MobileSubstrate/MobileSubstrate.dylib&#34;
      ]
    }
}
</code></pre>
<p>另外,您需要在 <code>Info.plist</code> 内的 <code>LSApplicationQueriesSchemes</code> 键中添加 <code>cydia</code>。 <code>canOpenURL</code> 需要它才能工作。</p>
<pre><code>&lt;key&gt;LSApplicationQueriesSchemes&lt;/key&gt;
&lt;array&gt;
    &lt;string&gt;cydia&lt;/string&gt;
&lt;/array&gt;
</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]
查看完整版本: ios - 在 iOS 11 或更高版本中检测越狱