Flutter越狱检测插件root_jailbreak_sniffer的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter越狱检测插件root_jailbreak_sniffer的使用

root_jailbreak_sniffer 是一个用于在Flutter应用程序中检测iOS设备是否被越狱以及Android设备是否被获取Root权限(包括对Magisk隐藏的支持)的插件。该插件基于以下开源项目:

安装

添加依赖

根据你的Flutter SDK和Gradle版本,将下面相应的行添加到pubspec.yaml文件中的dependencies部分:

  • 如果你的Flutter SDK版本低于3.19.0且Gradle版本低于8.0,请使用:

    dependencies:
      root_jailbreak_sniffer: ^1.0.6
    
  • 如果你的Flutter SDK版本为3.19及以上,并支持Gradle 8(JAVA 17),请使用:

    dependencies:
      root_jailbreak_sniffer: ^1.0.9
    

然后运行命令以安装插件:

$ flutter pub add root_jailbreak_sniffer

平台配置

Android

无需额外配置。

iOS

需要向位于ios/Runner/目录下的Info.plist文件中添加如下代码段:

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

使用方法

以下是root_jailbreak_sniffer提供的主要功能及其调用方式:

import 'package:root_jailbreak_sniffer/rjsniffer.dart';

// 检测设备是否被越狱或获取了Root权限
bool amICompromised = await Rjsniffer.amICompromised() ?? false;

// 检测设备是否为模拟器环境
bool amIEmulator = await Rjsniffer.amIEmulator() ?? false;

// 检测当前应用是否正在被调试
bool amIDebugged = await Rjsniffer.amIDebugged() ?? false;

示例代码

下面是一个完整的示例程序,它展示了如何在一个Flutter应用中使用root_jailbreak_sniffer来检查设备状态并在界面上显示结果。

import 'package:flutter/material.dart';
import 'package:root_jailbreak_sniffer/rjsniffer.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  bool _amICompromised = false;
  bool _amIEmulator = false;
  bool _amIDebugged = false;

  @override
  void initState() {
    super.initState();
    initPlatformState();
    WidgetsBinding.instance.addObserver(this);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        initPlatformState();
        break;
      case AppLifecycleState.paused:
      case AppLifecycleState.inactive:
      case AppLifecycleState.detached:
      case AppLifecycleState.hidden:
        break;
    }
  }

  Future<void> initPlatformState() async {
    bool amICompromised = false;
    bool amIEmulator = false;
    bool amIDebugged = false;

    try {
      amICompromised = await Rjsniffer.amICompromised() ?? false;
      amIEmulator = await Rjsniffer.amIEmulator() ?? false;
      amIDebugged = await Rjsniffer.amIDebugged() ?? false;
    } on PlatformException {
      // platform call failed
    }

    if (!mounted) return;

    setState(() {
      _amICompromised = amICompromised;
      _amIEmulator = amIEmulator;
      _amIDebugged = amIDebugged;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text('Am I Compromised: $_amICompromised\n'),
              Text('Am I Emulator: $_amIEmulator\n'),
              Text('Am I Debugged: $_amIDebugged\n'),
            ],
          ),
        ),
      ),
    );
  }
}

通过上述步骤,你可以轻松地将root_jailbreak_sniffer集成到你的Flutter项目中,并利用其提供的API来增强你应用程序的安全性。


更多关于Flutter越狱检测插件root_jailbreak_sniffer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter越狱检测插件root_jailbreak_sniffer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用root_jailbreak_sniffer插件来进行越狱检测的一个代码示例。这个插件可以帮助你检测Android和iOS设备是否已经被越狱或root。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加root_jailbreak_sniffer的依赖:

dependencies:
  flutter:
    sdk: flutter
  root_jailbreak_sniffer: ^latest_version  # 请替换为最新的版本号

2. 导入插件

在你的Flutter项目中,导入root_jailbreak_sniffer插件。例如,在main.dart文件中:

import 'package:flutter/material.dart';
import 'package:root_jailbreak_sniffer/root_jailbreak_sniffer.dart';

3. 使用插件

接下来,你可以使用插件的checkDevice方法来进行越狱检测。下面是一个简单的示例,展示如何在应用启动时进行检测,并显示结果:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String deviceStatus = "Checking...";

  @override
  void initState() {
    super.initState();
    _checkDeviceStatus();
  }

  Future<void> _checkDeviceStatus() async {
    try {
      bool isRootedOrJailbroken = await RootJailbreakSniffer.checkDevice();
      setState(() {
        if (isRootedOrJailbroken) {
          deviceStatus = "Device is rooted or jailbroken.";
        } else {
          deviceStatus = "Device is not rooted or jailbroken.";
        }
      });
    } catch (e) {
      setState(() {
        deviceStatus = "Error checking device status: $e";
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Root/Jailbreak Detection'),
      ),
      body: Center(
        child: Text(deviceStatus),
      ),
    );
  }
}

4. 运行应用

现在,你可以运行你的Flutter应用。在设备或模拟器上启动应用后,它将检查设备是否已经被越狱或root,并在屏幕上显示结果。

注意事项

  • 确保你使用的root_jailbreak_sniffer插件版本是最新的,因为插件的API和功能可能会随着版本的更新而发生变化。
  • 在生产环境中,越狱检测通常只是安全策略的一部分。你可能需要结合其他安全措施来提高应用的安全性。
  • 对于iOS设备,越狱检测可能受到Apple政策的影响,因此在使用时需要谨慎。

希望这个示例能帮助你在Flutter项目中集成和使用root_jailbreak_sniffer插件。

回到顶部