AHS-Mobile-Labs/Permission_Scanner
GitHub: AHS-Mobile-Labs/Permission_Scanner
一款面向 Android 的隐私友好型权限扫描与分析工具,帮助用户识别与评估应用的风险等级与不合理权限。
Stars: 1 | Forks: 0
权限扫描器
## 功能特性 - **完整应用扫描** — 通过原生 `MethodChannel` 扫描每个已安装应用,返回权限、安装来源与系统标识 - **风险分析** — 根据危险权限数量,为每个应用分配隐私评分(0–100)与风险等级(安全 / 中等 / 危险) - **合理性引擎** — 将应用能力(例如“拍摄照片”)映射到所需权限,并标记不合理的访问 - **智能缓存** — 基于指纹的缓存失效机制,使界面在重复访问时即时加载;仅在应用变更时重新扫描 - **交互式仪表盘** — 动画安全评分环、风险分布柱状图、快速操作以及每个应用的磁贴卡片 - **权限数据库** — 可搜索的 Android 权限参考,按类别分组并附有描述 - **通知提醒** — 可选的本地警报,当新安装的应用请求大量危险权限时触发 - **筛选与排序** — 按用户应用、系统应用或未知来源分段;按名称或风险等级排序 - **开发者模式** — 切换以在详情页显示底层或非危险权限 - **验证对话框** — 标记应用能力并查看哪些权限由这些能力合理化 ## 截图 ## 架构 ``` lib/ ├── main.dart # App entry, splash → main flow ├── models/ │ ├── app_info.dart # AppInfo model with RiskLevel enum │ ├── permission_info.dart # PermissionInfo model │ └── permission_justification.dart # Capability → permission mapping ├── screens/ │ ├── splash_screen.dart # Animated splash with progress │ ├── home_screen.dart # App list with search & filters │ ├── app_detail_screen.dart # Per-app permission breakdown │ ├── permission_info_screen.dart # Permission reference database │ └── dashboard_screen.dart # Security overview dashboard ├── services/ │ ├── app_providers.dart # Riverpod state providers │ ├── cache_service.dart # Hive-backed cache (5 boxes) │ ├── notification_service.dart # Local notification service │ ├── permission_analyzer.dart # Risk scoring & analysis │ ├── permission_justification_service.dart │ └── permission_scanner_service.dart # Native bridge ├── utils/ │ ├── app_colors.dart # Material 3 theme & palette │ └── permission_database.dart # Permission definitions └── widgets/ ├── app_card.dart ├── filter_sort_bar.dart ├── permission_history_chart.dart ├── permission_item.dart ├── permission_verification_dialog.dart ├── risk_badge.dart └── stat_card.dart ``` ### 关键设计决策 | 模式 | 详情 | |---|---| | 状态管理 | `flutter_riverpod` — `AsyncNotifierProvider` 用于应用列表,`StateProvider` 用于过滤器 | | 缓存 | Hive 配合 5 个数据盒;指纹检查避免冗余原生调用 | | 后台任务 | `compute()` isolate 在主线程之外进行权限增强处理 | | 原生桥接 | `MethodChannel('permission_scanner')`,包含 `getInstalledApps` / `getAppsFingerprint` | | 风险评分 | 100 − (10 × 危险权限数量),限制在 0–100;合理性判定可降低一级风险 | ## 快速开始 ### 前置条件 - Flutter SDK ≥ 3.11.1 - Android SDK(minSdk 21 / targetSdk 35) - 一个 Android 设备或模拟器 ### 构建与运行 ``` git clone https://github.com/AHS-Mobile-Labs/Permission_Scanner.git cd Permission_Scanner flutter pub get flutter run ``` ### 生成启动器图标 ``` dart run flutter_launcher_icons ``` ## 权限 | 权限 | 用途 | |---|---| | `QUERY_ALL_PACKAGES` | 读取每个已安装应用的权限清单 | | `POST_NOTIFICATIONS` | 为高风险应用发送本地提醒(在运行时请求,非阻塞) | ## 依赖项 | 包 | 版本 | 用途 | |---|---|---| | `flutter_riverpod` | ^2.4.1 | 状态管理 | | `hive` / `hive_flutter` | ^2.2.3 / ^1.1.0 | 本地键值缓存 | | `fl_chart` | ^0.65.0 | 数据可视化 | | `flutter_local_notifications` | ^17.1.0 | 本地推送通知 | | `permission_handler` | ^11.0.0 | 运行时权限请求 | | `intl` | ^0.19.0 | 日期格式化 | ## 星标历史标签:Android安全, APP扫描, Flutter, MethodChannel, 交互式仪表盘, 功能验证, 原生桥接, 安全审计工具, 应用审计, 开发者模式, 智能缓存, 本地通知, 权限分析, 权限扫描, 权限数据库, 权限管理, 模型越狱, 目录枚举, 移动安全, 网络安全, 能力映射, 过滤排序, 隐私保护, 隐私安全, 隐私评分, 风险分析, 风险等级