Flutter越狱检测插件root_jailbreak_sniffer的使用
Flutter越狱检测插件root_jailbreak_sniffer的使用
root_jailbreak_sniffer
是一个用于在Flutter应用程序中检测iOS设备是否被越狱以及Android设备是否被获取Root权限(包括对Magisk隐藏的支持)的插件。该插件基于以下开源项目:
- RootBeer、RootInspector 和 DetectMagiskHide,针对Android平台
- IOSSecuritySuite,针对iOS平台
安装
添加依赖
根据你的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
更多关于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
插件。