패키지, 저장소 및 앱 카테고리 검색

패키지 상세v1.2.3

jailbreak_root_detection

Android 루트 감지를 위해 RootBeer + DetectFrida를, iOS 제일브레이크 감지를 위해 IOSSecuritySuite를 사용합니다.

AndroidiOS
30일 다운로드
2.3만
좋아요
71
Pub 점수
150

패키지 설치

flutter pub add jailbreak_root_detection

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

신뢰할 수 있는 라이브러리를 사용하여 Android에서 루트 액세스를 감지하고 iOS에서 잠금 해제 상태를 확인하는 플러터 패키지입니다: Android에는 RootBeer, iOS에는 IOSSecuritySuite를 사용합니다. 장치의 무결성을 검사하기 위한 통합 API를 제공하여 개발자가 변조된 환경으로부터 앱을 보호하는 데 도움을 줍니다. 간단한 추가 명령어로 플러터 프로젝트에 원활하게 통합되며, 주요 두 모바일 플랫폼 모두를 지원합니다. 은행 또는 인증 시스템과 같은 민감한 애플리케이션을 보호하는 데 이상적입니다.

사용 사례

  • 루트 또는 잠금 해제된 장치로부터 금융 앱 보호
  • 허가되지 않은 앱 수정 방지
  • 인증 흐름에서 보안 강화
  • 침해된 장치 환경 탐지
  • 안전한 실행 조건 강제 적용

주요 기능

  • Android용 RootBeer 및 DetectFrida 통합
  • iOS용으로 IOSSecuritySuite 사용
  • 크로스 플랫폼 감지 지원
  • 간단한 Flutter 통합
  • 경량이고 신뢰할 수 있음
  • 실시간 장치 무결성 검사

적합한 대상

  • 보안 중심의 모바일 애플리케이션
  • 높은 무결성 검증이 필요한 앱
  • 금융 및 기업용 앱
  • 변조 방지 기능을 구현하는 개발자
  • Android 및 iOS를 대상으로 하는 프로젝트

고려 사항

  • 일부 에뮬레이터에서 오진 양성 반응을 유발할 수 있습니다
  • 두 플랫폼 모두에서 네이티브 코드 실행이 필요합니다
  • 루트/재블랙 감지에만 제한됨
  • 런타임 완화가 포함되지 않았습니다
  • 제3자 라이브러리 업데이트에 의존

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

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

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.