engine_security 1.2.1 copy "engine_security: ^1.2.1" to clipboard
engine_security: ^1.2.1 copied to clipboard

Advanced security detection system for Flutter applications focused on Android and iOS. Detects Frida, Root/Jailbreak, Emulator, and Debugger threats with high precision.

example/lib/main.dart

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Engine Security GPS Fake Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'GPS Fake Detection Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final EngineGpsFakeDetector _gpsDetector = EngineGpsFakeDetector();
  EngineSecurityCheckModel? _lastResult;
  bool _isChecking = false;

  Future<void> _checkGpsFake() async {
    setState(() {
      _isChecking = true;
    });

    try {
      final result = await _gpsDetector.performCheck();
      setState(() {
        _lastResult = result;
        _isChecking = false;
      });
    } catch (e) {
      setState(() {
        _lastResult = EngineSecurityCheckModel.threat(
          threatType: EngineSecurityThreatType.gpsFake,
          details: 'Erro ao verificar GPS Fake: $e',
          detectionMethod: 'Error Handler',
        );
        _isChecking = false;
      });
    }
  }

  Widget _buildResultCard() {
    if (_lastResult == null) {
      return const Card(
        child: Padding(
          padding: EdgeInsets.all(16.0),
          child: Text('Nenhuma verificação realizada ainda'),
        ),
      );
    }

    final result = _lastResult!;
    final isSecure = result.isSecure;

    return Card(
      color: isSecure ? Colors.green[50] : Colors.red[50],
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              children: [
                Icon(
                  isSecure ? Icons.security : Icons.warning,
                  color: isSecure ? Colors.green : Colors.red,
                ),
                const SizedBox(width: 8),
                Text(
                  isSecure ? 'GPS Seguro' : 'GPS Fake Detectado!',
                  style: Theme.of(context).textTheme.titleMedium?.copyWith(
                    color: isSecure ? Colors.green[700] : Colors.red[700],
                    fontWeight: FontWeight.bold,
                  ),
                ),
              ],
            ),
            const SizedBox(height: 12),
            if (result.details != null) ...[
              Text(
                'Detalhes:',
                style: Theme.of(context).textTheme.titleSmall,
              ),
              const SizedBox(height: 4),
              Text(
                result.details!,
                style: Theme.of(context).textTheme.bodyMedium,
              ),
              const SizedBox(height: 8),
            ],
            if (result.detectionMethod != null) ...[
              Text(
                'Método de Detecção:',
                style: Theme.of(context).textTheme.titleSmall,
              ),
              const SizedBox(height: 4),
              Text(
                result.detectionMethod!,
                style: Theme.of(context).textTheme.bodyMedium,
              ),
              const SizedBox(height: 8),
            ],
            Row(
              children: [
                Text(
                  'Confiança: ',
                  style: Theme.of(context).textTheme.titleSmall,
                ),
                Text(
                  '${(result.confidence * 100).toStringAsFixed(1)}%',
                  style: Theme.of(context).textTheme.bodyMedium?.copyWith(
                    fontWeight: FontWeight.bold,
                  ),
                ),
              ],
            ),
            if (result.timestamp != null) ...[
              const SizedBox(height: 4),
              Text(
                'Verificado em: ${result.timestamp!.toLocal().toString().split('.')[0]}',
                style: Theme.of(context).textTheme.bodySmall,
              ),
            ],
          ],
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Card(
              child: Padding(
                padding: const EdgeInsets.all(16.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Text(
                      'Detector de GPS Fake',
                      style: Theme.of(context).textTheme.headlineSmall,
                    ),
                    const SizedBox(height: 8),
                    Text(
                      'Este detector verifica se o usuário está usando aplicativos de GPS falso ou manipulando a localização do dispositivo.',
                      style: Theme.of(context).textTheme.bodyMedium,
                    ),
                    const SizedBox(height: 16),
                    Row(
                      children: [
                        Icon(
                          _gpsDetector.isAvailable ? Icons.check_circle : Icons.error,
                          color: _gpsDetector.isAvailable ? Colors.green : Colors.red,
                        ),
                        const SizedBox(width: 8),
                        Text(
                          _gpsDetector.isAvailable
                              ? 'Detector disponível nesta plataforma'
                              : 'Detector não disponível nesta plataforma',
                        ),
                      ],
                    ),
                  ],
                ),
              ),
            ),
            const SizedBox(height: 16),
            ElevatedButton.icon(
              onPressed: _isChecking || !_gpsDetector.isAvailable ? null : _checkGpsFake,
              icon: _isChecking
                  ? const SizedBox(
                      width: 16,
                      height: 16,
                      child: CircularProgressIndicator(strokeWidth: 2),
                    )
                  : const Icon(Icons.gps_fixed),
              label: Text(_isChecking ? 'Verificando...' : 'Verificar GPS Fake'),
            ),
            const SizedBox(height: 24),
            Text(
              'Resultado da Verificação',
              style: Theme.of(context).textTheme.titleMedium,
            ),
            const SizedBox(height: 8),
            _buildResultCard(),
          ],
        ),
      ),
    );
  }
}
6
likes
160
points
340
downloads

Publisher

verified publisherstmr.tech

Weekly Downloads

Advanced security detection system for Flutter applications focused on Android and iOS. Detects Frida, Root/Jailbreak, Emulator, and Debugger threats with high precision.

Homepage
Repository (GitHub)
View/report issues

Topics

#security #detection #frida #mobile #android

Documentation

Documentation
API reference

Funding

Consider supporting this project:

github.com

License

MIT (license)

Dependencies

crypto, device_info_plus, flutter, geolocator, location, package_info_plus, permission_handler

More

Packages that depend on engine_security