ตัวอย่าง Flutter application สำหรับตรวจจับและป้องกันแอปจาก Accessibility Service ของแอปอื่นบน Android ที่อาจเข้ามาอ่านหน้าจอหรือควบคุมแอปของเราได้
มัลแวร์บน Android หลายตัวใช้ Accessibility Service เพื่อ:
- อ่าน OTP / รหัสผ่าน / ข้อมูลบัญชีจากหน้าจอ
- จำลองการแตะหน้าจอเพื่อทำธุรกรรมแทนผู้ใช้
- ดักจับข้อมูลส่วนบุคคลทุกอย่างที่แสดงบนหน้าจอ
แอปตัวอย่างนี้สาธิตวิธี ตรวจจับ และ บล็อก การใช้งานเมื่อพบ service ที่เป็นอันตราย
- ✅ ตรวจสอบ Accessibility Service ทุกครั้งที่ เปิดแอป (App Launch)
- ✅ ตรวจสอบซ้ำทุกครั้งที่ กลับมาใช้แอป (App Resume)
- ✅ แสดงหน้า บล็อกเต็มจอ เมื่อพบ service อันตราย (ป้องกันปุ่ม Back)
- ✅ แสดงรายละเอียด service — ชื่อ, package name, capabilities
- ✅ ปุ่มเปิด Accessibility Settings โดยตรง
- ✅ ใช้ MethodChannel สื่อสารระหว่าง Flutter กับ Android Native (Kotlin)
lib/
├── main.dart # Entry point
├── services/
│ └── accessibility_service.dart # Dart service + model class
└── screens/
├── home_screen.dart # หน้าหลัก + lifecycle observer
├── blocked_screen.dart # หน้าบล็อกเต็มจอ
└── service_list_screen.dart # หน้ารายละเอียด services
android/.../
└── MainActivity.kt # Android native accessibility detection
# Clone
git clone https://github.com/end1an/flutter-accessibility-guard.git
cd flutter-accessibility-guard
# Install dependencies
flutter pub get
# Run on Android device
flutter runหมายเหตุ: ต้องรันบนอุปกรณ์ Android จริงหรือ emulator เท่านั้น (ไม่รองรับ web/desktop สำหรับ feature นี้)
📖 อ่านเอกสารฉบับเต็มได้ที่ IMPLEMENTATION_GUIDE.md
เอกสารครอบคลุม:
- อธิบายโค้ดทุกไฟล์อย่างละเอียด
- ขั้นตอน step-by-step สำหรับนำไปใช้ในโปรเจคของคุณ
- Capabilities ที่ตรวจสอบและความเสี่ยงของแต่ละอัน
- Flow diagram การทำงาน
- วิธีปรับแต่ง (Dialog, Analytics, FLAG_SECURE, Whitelist)
- ข้อควรระวังสำคัญ
| ไฟล์ | หน้าที่ |
|---|---|
MainActivity.kt (โค้ดภายใน) |
ตรวจจับ accessibility service ฝั่ง Android |
lib/services/accessibility_service.dart |
Dart service เชื่อม MethodChannel |
lib/screens/blocked_screen.dart |
หน้าบล็อก UI |
- Flutter (Dart)
- Kotlin (Android Native)
- MethodChannel (Platform Communication)
- AccessibilityManager (Android System Service)
MIT