engine_security 1.0.0
engine_security: ^1.0.0 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.
🛡️ Engine Security #
Sistema avançado de detecção de segurança para aplicações Flutter focado em Android e iOS
📋 Índice #
- Recursos
- Instalação
- Uso Rápido
- Detectores Disponíveis
- Modelos de Dados
- Interface
- Exemplos
- Desenvolvimento
- Qualidade e Testes
- Contribuição
- Licença
🚀 Recursos #
- ✅ 100% de Cobertura de Testes - Todos os componentes testados
- 🎯 Pontuação Pana 100/100 - Qualidade máxima no pub.flutter-io.cn
- 🔄 CI/CD Automatizado - Pipeline completo com GitHub Actions
- 📱 Android & iOS Exclusivo - Otimizado para dispositivos móveis
- 🛡️ 4 Detectores Especializados - Frida, Root/Jailbreak, Emulator, Debugger
- ⚡ Detecção Assíncrona - Performance otimizada
- 🎨 API Intuitiva - Fácil integração e uso
- 📊 Sistema de Confiança - Níveis de confiança calibrados
- 🔒 Zero Dependências Externas - Seguro e leve
📦 Instalação #
Adicione ao seu pubspec.yaml
:
dependencies:
engine_security: ^1.0.0
Execute:
flutter pub get
⚡ Uso Rápido #
import 'package:engine_security/engine_security.dart';
void main() async {
// Detectar Frida
final fridaDetector = EngineFridaDetector();
final fridaResult = await fridaDetector.performCheck();
if (!fridaResult.isSecure) {
print('⚠️ Frida detectado: ${fridaResult.details}');
print('🎯 Confiança: ${fridaResult.confidence}');
}
// Detectar Root/Jailbreak
final rootDetector = EngineRootDetector();
final rootResult = await rootDetector.performCheck();
if (!rootResult.isSecure) {
print('⚠️ Device comprometido: ${rootResult.details}');
}
// Verificação completa
await performFullSecurityCheck();
}
Future<void> performFullSecurityCheck() async {
final detectors = [
EngineFridaDetector(),
EngineRootDetector(),
EngineEmulatorDetector(),
EngineDebuggerDetector(),
];
print('🔍 Executando verificação completa de segurança...\n');
for (final detector in detectors) {
if (detector.isAvailable) {
final result = await detector.performCheck();
final status = result.isSecure ? '✅' : '❌';
print('$status ${detector.detectorName}');
print(' Confiança: ${(result.confidence * 100).toStringAsFixed(1)}%');
print(' Detalhes: ${result.details ?? 'N/A'}');
print('');
}
}
}
🛡️ Detectores Disponíveis #
1. 🔴 Frida Detector (EngineFridaDetector
) #
- Ameaça:
SecurityThreatType.frida
- Confiança: 95%
- Métodos: Detecção de processos, bibliotecas e portas
- Plataformas: Android, iOS
2. 🔑 Root/Jailbreak Detector (EngineRootDetector
) #
- Ameaça:
SecurityThreatType.rootJailbreak
- Confiança: 90%
- Métodos: Arquivos de sistema, apps instalados, permissões
- Plataformas: Android, iOS
3. 📱 Emulator Detector (EngineEmulatorDetector
) #
- Ameaça:
SecurityThreatType.emulator
- Confiança: 85%
- Métodos: Hardware, sensores, características do sistema
- Plataformas: Android, iOS
4. 🐛 Debugger Detector (EngineDebuggerDetector
) #
- Ameaça:
SecurityThreatType.debugger
- Confiança: 85%
- Métodos: Processos de debug, timing attacks
- Plataformas: Android, iOS
📊 Modelos de Dados #
SecurityCheckModel #
class SecurityCheckModel {
final bool isSecure;
final SecurityThreatType threatType;
final double confidence;
final String? details;
final String? detectionMethod;
final DateTime? timestamp;
// Factories
SecurityCheckModel.secure({...});
SecurityCheckModel.threat({required SecurityThreatType threatType, ...});
}
DetectorInfoModel #
class DetectorInfoModel {
final String name;
final SecurityThreatType threatType;
final bool enabled;
final String platform;
}
SecurityThreatType #
enum SecurityThreatType {
unknown, // Severidade: 5
frida, // Severidade: 9
emulator, // Severidade: 6
rootJailbreak,// Severidade: 8
debugger, // Severidade: 2
}
🔧 Interface #
ISecurityDetector #
abstract class ISecurityDetector {
SecurityThreatType get threatType;
String get detectorName;
Future<SecurityCheckModel> performCheck();
bool get isAvailable;
DetectorInfoModel get detectorInfo;
}
📱 Exemplos #
Execute o exemplo interativo:
cd examples/security_demo
flutter run
Implementação Personalizada #
class MySecurityManager {
final List<ISecurityDetector> _detectors = [
EngineFridaDetector(),
EngineRootDetector(),
EngineEmulatorDetector(),
EngineDebuggerDetector(),
];
Future<List<SecurityCheckModel>> scanAllThreats() async {
final results = <SecurityCheckModel>[];
for (final detector in _detectors) {
if (detector.isAvailable) {
try {
final result = await detector.performCheck();
results.add(result);
} catch (e) {
results.add(SecurityCheckModel(
isSecure: false,
threatType: detector.threatType,
confidence: 0.5,
details: 'Erro na detecção: $e',
));
}
}
}
return results;
}
Future<bool> isDeviceSecure({double minimumConfidence = 0.8}) async {
final results = await scanAllThreats();
for (final result in results) {
if (!result.isSecure && result.confidence >= minimumConfidence) {
return false;
}
}
return true;
}
}
🔧 Desenvolvimento #
Estrutura do Projeto #
lib/
├── engine_security.dart # Ponto de entrada principal
└── src/
├── src.dart # Exportações centralizadas
├── detectors/ # Detectores de segurança
│ ├── i_security_detector.dart # Interface base
│ ├── engine_frida_detector.dart # Detector Frida
│ ├── engine_root_detector.dart # Detector Root/Jailbreak
│ ├── engine_emulator_detector.dart # Detector Emulator
│ └── engine_debugger_detector.dart # Detector Debugger
├── models/ # Modelos de dados
│ ├── security_check_model.dart # Modelo de resultado
│ └── dector_info_model.dart # Informações do detector
└── enums/ # Enumerações
└── security_threat_type.dart # Tipos de ameaças
test/
├── all_tests.dart # Suite completa de testes
├── models/ # Testes dos modelos
├── enums/ # Testes dos enums
├── interface/ # Testes da interface
└── detectors/ # Testes dos detectores
examples/
└── security_demo/ # App demonstrativo
scripts/
├── test_coverage.sh # Script de cobertura
└── pana_analysis.sh # Script de análise Pana
Scripts de Desenvolvimento #
# Executar testes com cobertura
./scripts/test_coverage.sh
# Análise de qualidade Pana
./scripts/pana_analysis.sh
# Análise estática
dart analyze
# Formatação de código
dart format .
# Publicar (dry-run)
dart pub publish --dry-run
🧪 Qualidade e Testes #
Cobertura de Testes: 100% #
- ✅ Todos os modelos testados
- ✅ Todos os enums testados
- ✅ Interface completamente testada
- ✅ Casos de borda cobertos
- ✅ Tratamento de erros validado
Pipeline CI/CD #
- 🔍 Análise Estática - dart analyze com warnings fatais
- 🧪 Testes Unitários - 100% de cobertura obrigatória
- 📊 Codecov Integration - Relatórios automáticos de cobertura
- 📝 Pana Analysis - Pontuação 100/100 obrigatória
- 🔒 Security Scan - Verificação de vulnerabilidades
- 🏗️ Build Test - Compilação e teste dos exemplos
- 📦 Auto Publish - Publicação automática em tags
Comandos de Qualidade #
# Executar todos os testes
dart test
# Testes com cobertura
dart test --coverage=coverage
dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --report-on=lib
# Verificar cobertura mínima
dart pub global activate test_coverage
dart pub global run test_coverage --min-coverage=100
# Análise Pana
dart pub global activate pana
dart pub global run pana
🔄 CI/CD Status #
Pipeline | Status | Descrição |
---|---|---|
Build | Análise, testes e build | |
Coverage | Cobertura de testes | |
Quality | Qualidade do código | |
Publish | Versão publicada |
🤝 Contribuição #
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
) - Commit suas mudanças (
git commit -am 'Adiciona nova feature'
) - Push para a branch (
git push origin feature/nova-feature
) - Abra um Pull Request
Diretrizes de Contribuição #
- ✅ Manter 100% de cobertura de testes
- ✅ Seguir as convenções Dart/Flutter
- ✅ Adicionar documentação para APIs públicas
- ✅ Testar em Android e iOS
- ✅ Garantir pontuação Pana 100/100
📄 Licença #
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
🏆 Reconhecimentos #
- Framework Flutter team
- Comunidade Dart/Flutter
- Contribuidores do projeto