搜尋套件、儲存庫與 APP 分類

GitHub 儲存庫w3connext/jailbreak_root_detection

jailbreak_root_detection

w3connext/jailbreak_root_detection open-source repository details.

jailbreak_root_detection 專案封面
星標
20
分支
45
最近推送(UTC)
2026年8月15日
專案狀態
未封存

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

jailbreak_root_detection

pub package license

Detects rooted, jailbroken, tampered and otherwise untrusted devices from Flutter.

Uses RootBeer + Magisk and Frida checks for Android root detection, and IOSSecuritySuite (~> 1.9.10) for iOS jailbreak detection.

Requirements

Minimum
Flutter 3.44.0
Dart SDK 3.12.0
Android minSdk 21, compileSdk 34, Java/Kotlin 17
iOS 11.0

The iOS side ships as a Swift Package (Swift Package Manager). A CocoaPods podspec is still included, so both dependency managers work.

Getting started

Add the dependency to your pubspec.yaml:

dependencies:
  jailbreak_root_detection: "^1.2.3"

Or:

flutter pub add jailbreak_root_detection
iOS setup

To let the plugin probe for jailbreak-related URL schemes, add them to ios/Runner/Info.plist:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>undecimus</string>
    <string>sileo</string>
    <string>zbra</string>
    <string>filza</string>
    <string>activator</string>
    <string>cydia</string>
</array>

Without this entry iOS blocks the canOpenURL checks and jailbreak detection is less accurate.

Android setup

No extra configuration required.

Usage

import 'package:jailbreak_root_detection/jailbreak_root_detection.dart';

final detector = JailbreakRootDetection.instance;

// One combined verdict — the usual entry point.
final isNotTrust = await detector.isNotTrust;
if (isNotTrust) {
  // Block, warn, or degrade functionality.
}
API
Member Returns Android iOS Description
isNotTrust Future<bool> ✅ ✅ Combined verdict: jailbroken/rooted, not a real device, or (Android) installed on external storage. Returns true if any check throws.
isJailBroken Future<bool> ✅ ✅ Rooted (RootBeer, Frida, Magisk) on Android; jailbroken on iOS.
isRealDevice Future<bool> ✅ ✅ false on an emulator or simulator.
isDebugged Future<bool> ✅ ✅ A debugger is attached to the process.
isDevMode Future<bool> ✅ — Developer options are enabled.
isOnExternalStorage Future<bool> ✅ — The app is installed on external storage.
isTampered(String bundleId) Future<bool> — ✅ The app bundle/signature has been modified.
checkForIssues Future<List<JailbreakIssue>> ✅ ✅ All detected issues in one call.

Android-only members throw a MissingPluginException on iOS and vice versa, so guard them with Platform.isAndroid / Platform.isIOS:

if (Platform.isAndroid) {
  final isOnExternalStorage = await detector.isOnExternalStorage;
  final isDevMode = await detector.isDevMode;
}

if (Platform.isIOS) {
  const bundleId = 'com.w3conext.jailbreakRootDetectionExample';
  final isTampered = await detector.isTampered(bundleId);
}
checkForIssues

checkForIssues runs every check the platform supports and returns only the problems it found — an empty list means the device looks clean.

final issues = await detector.checkForIssues;
for (final issue in issues) {
  print('issue: $issue');
}
JailbreakIssue Android iOS Meaning
jailbreak ✅ ✅ Device is rooted or jailbroken.
notRealDevice ✅ ✅ Running on an emulator or simulator.
debugged ✅ ✅ A debugger is attached.
fridaFound ✅ ✅ The Frida instrumentation framework was detected.
devMode ✅ — Developer options are enabled.
onExternalStorage ✅ — App is installed on external storage.
proxied — ✅ An HTTP proxy is configured.
reverseEngineered — ✅ Reverse-engineering tooling was detected.
cydiaFound — ✅ Cydia was detected.
tampered — — Reported only by isTampered(bundleId), not by checkForIssues.
unknown ✅ ✅ An issue this Dart version doesn't recognise. Android currently reports Magisk detection here.

Handle unknown as untrusted rather than ignoring it.

Important: test on real devices only

This package must be tested on a physical device.

Running on an emulator or simulator may cause false positives — for example, detection may incorrectly report that the device is jailbroken or rooted.

Example

See example/lib/main.dart for a complete app that runs every check and prints the results.

Reference

License

MIT

w3connext GitHub avatar
GitHub 作者

w3connext ↗

語言KotlinSwiftC++DartCAssemblyRubyCMakeObjective-C

此儲存庫發佈的套件

使用的依賴

依賴清單 3 項

  • flutter{"sdk":"flutter"}
  • flutter_test開發依賴{"sdk":"flutter"}
  • flutter_lints開發依賴^5.0.0

如何選擇適合專案的儲存庫?

先依使用情境篩選,再比較專案活躍情況,最後到原始儲存庫確認使用要求。

  1. 透過儲存庫名稱、作者或描述搜尋,再依技術分類縮小範圍。
  2. 綜合星標、分支與最近推送比較專案;星標反映社群關注,不保證品質。
  3. 使用前在 GitHub 確認 README、授權條款與 Issues。

來源與維護

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗