anti_hook_vpn 1.0.0
anti_hook_vpn: ^1.0.0 copied to clipboard
Flutter plugin phát hiện VPN, Proxy và Frida hook trên Android và iOS. Bảo vệ ứng dụng khỏi các công cụ tấn công runtime.
anti_hook_vpn #
Flutter plugin phát hiện VPN, Proxy và Frida hook framework đang hoạt động trên thiết bị Android và iOS — giúp bảo vệ ứng dụng khỏi các công cụ tấn công và phân tích runtime.
Tính năng #
| Tính năng | Android | iOS |
|---|---|---|
| Phát hiện Frida (port scan 27042/27043) | ✅ | ✅ |
| Phát hiện Frida (process/dylib injection) | ✅ | ✅ |
| Phát hiện VPN đang hoạt động | ✅ | ✅ |
| Phát hiện HTTP/HTTPS Proxy hệ thống | ✅ | ✅ |
| Dialog chặn không tắt được khi bị tấn công | ✅ | ✅ |
Yêu cầu hệ thống #
- Android: minSdk ≥ 24
- iOS: iOS ≥ 13.0
- Flutter: ≥ 3.3.0
- Dart: ≥ 3.0.0
Cài đặt #
dependencies:
anti_hook_vpn: ^1.0.0
Sau đó chạy:
flutter pub get
Quyền Android #
Thêm vào android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
Sử dụng #
1. Kiểm tra bảo mật và tự xử lý kết quả #
import 'package:anti_hook_vpn/anti_hook_vpn.dart';
Future<void> checkSecurity() async {
final SecurityStatus status = await AntiHookVpn.checkSecurity();
if (status.isFridaDetected) {
print('⚠️ Phát hiện Frida đang chạy!');
}
if (status.isProxyOrVpnDetected) {
print('⚠️ Phát hiện VPN hoặc Proxy!');
}
if (status.isAttacked) {
print('🚨 Thiết bị đang bị tấn công!');
} else {
print('✅ Thiết bị an toàn.');
}
}
2. Tự động hiện dialog chặn khi phát hiện tấn công #
Plugin có sẵn một dialog không thể tắt (dùng PopScope(canPop: false)), buộc người dùng phải thoát ứng dụng khi phát hiện mối đe dọa.
import 'package:anti_hook_vpn/anti_hook_vpn.dart';
class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
WidgetsBinding.instance.addPostFrameCallback((_) => _runSecurityCheck());
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
// Kiểm tra lại mỗi khi app được resume
if (state == AppLifecycleState.resumed) {
_runSecurityCheck();
}
}
Future<void> _runSecurityCheck() async {
await AntiHookVpn.checkAndBlockIfNeeded(
context,
onAttacked: (status) {
// Callback tuỳ chọn — ví dụ: gửi log lên server
print('Bị tấn công: $status');
},
);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
}
API #
AntiHookVpn.checkSecurity() #
static Future<SecurityStatus> checkSecurity()
Gọi native để kiểm tra Frida và VPN/Proxy. Ném PlatformException nếu không thể gọi native.
AntiHookVpn.checkAndBlockIfNeeded() #
static Future<void> checkAndBlockIfNeeded(
BuildContext context, {
void Function(SecurityStatus status)? onAttacked,
})
Kiểm tra bảo mật và tự động hiện dialog chặn toàn bộ tương tác nếu phát hiện mối đe dọa. Người dùng chỉ có thể bấm "Thoát Ứng Dụng".
SecurityStatus #
class SecurityStatus {
final bool isFridaDetected; // true nếu Frida đang hook
final bool isProxyOrVpnDetected; // true nếu có Proxy hoặc VPN
bool get isAttacked; // true nếu bất kỳ mối đe dọa nào được phát hiện
}
Cơ chế phát hiện #
Frida #
| Kỹ thuật | Android | iOS |
|---|---|---|
| Kết nối TCP tới port 27042/27043 | ✅ | ✅ |
Quét /proc/self/maps tìm frida-agent |
✅ | — |
| Quét danh sách dylib nạp vào process | — | ✅ |
VPN #
| Kỹ thuật | Android | iOS |
|---|---|---|
NetworkCapabilities.TRANSPORT_VPN |
✅ | — |
CFNetworkCopySystemProxySettings __SCOPED__ |
— | ✅ |
Proxy #
| Kỹ thuật | Android | iOS |
|---|---|---|
System.getProperty("http.proxyHost") |
✅ | — |
CFNetworkCopySystemProxySettings HTTPEnable/HTTPSEnable |
— | ✅ |
Ví dụ #
Xem thư mục example/ để chạy app demo đầy đủ với Security Scanner UI.
Đóng góp #
Pull requests luôn được chào đón. Vui lòng mở Issue trước khi thực hiện thay đổi lớn.
License #
MIT