VirusTotal 的开源 Android 客户端。扫描文件、URL 和已安装应用,使用 70 多个反病毒引擎。查看详细报告,包含哈希值、威胁分类、YARA 匹配和沙箱行为。无追踪或广告。
免费且开源。自带 VirusTotal API 密钥,即可扫描文件、链接和已安装应用,覆盖超过 70 个引擎,采用 Material 3 界面构建。无需账户、无追踪、无广告。
Veto 是 VirusTotal 的 Android 客户端。提交文件、链接或已安装应用,即可查看实时分析结果。应用会显示清晰的报告,从单一综合判定到服务返回的完整字段集一应俱全。
该项目免费且开源,不包含任何用户账户、追踪系统或广告。由于用户自带 VirusTotal API 密钥,所有扫描均直接在其个人账户下运行,不会经过任何第三方中间服务器转发。
![]() | ![]() | ![]() |
ScanManager 是所有扫描状态的集中数据源。这确保了无论应用处于前台活跃、后台挂起还是被操作系统销毁的状态,用户界面都能保持同步。/analyses/{id} 端点。若遇到速率限制响应,进程会等待而非直接失败。报告会被反复重新获取,直到结果填充完毕;若达到超时上限,则返回结构化失败状态。ScanState 驻留在 ScanManager 中以在 Activity 销毁后存活,而 ScanService 则在操作进行期间维持进程生命周期,并管理进行中及完成通知。attributes JSON 则通过自定义序列化器保留。这使得详细报告视图能够渲染所有返回字段,包括 API 载荷中随时间新增的任何字段。└── app/src/main/java/com/quantum_prof/vtscansuite/
├── data/ # 模型、远程 API 与仓库实现
├── domain/ # 仓库接口与业务用例
├── di/ # Hilt 依赖注入模块
├── scan/ # ScanManager、ScanService 与系统通知
└── ui/ # UI 组件与展示层
├── intro/ # 启动画面与 API 密钥配置
├── dashboard/ # 导航中心:链接、文件与应用扫描模块
├── results/ # 快速与详细报告可视化
├── components/# 可复用 UI 元素与布局
├── theme/ # 颜色、形状、字体与动效配置
└── util/ # 触觉反馈、手势与深度链接工具
fastlane/metadata/android/en-US/。docs/store/svg/。docs/store/export.html 导出为 PNG 格式。克隆仓库并使用命令行编译调试版本:
git clone https://github.com/ProfessorQuantumUniverse/VTScan.git
cd VTScan
./gradlew :app:assembleDebug
或者,在 Android Studio 中打开根目录并选择 Run 配置。
首次启动时,在引导设置界面输入你的 VirusTotal API 密钥。该密钥仅存储在你的设备本地,使用 Android Keystore 中的 AES-256-GCM 密钥加密,并排除在云备份和设备间传输之外。免费 API 密钥通常限制为每分钟四次查询。
该应用仅使用你提供的凭据与 VirusTotal API 通信。上传的文件、提交的 URL 及动态结果会直接发送至 VirusTotal 的服务器。API 密钥仅存储在你的设备本地,使用 Android Keystore 中的 AES-256-GCM 密钥加密,并排除在云备份和设备间传输之外,因此永远不会离开设备。HTTP 日志记录仅限于调试构建,并会对密钥头进行脱敏处理。Veto 不收集分析数据,也不包含任何广告 SDK。
本项目根据 GNU 通用公共许可证 v3.0 的条款进行许可。
更多详情,请参阅本仓库中的 LICENSE 文件。
![]() | ![]() |
| 层级 | 技术 | 项目中的作用 |
|---|
| 语言 | Kotlin | 主要编程语言 |
| UI 框架 | Jetpack Compose | 声明式 UI 结构 |
| 设计系统 | Material 3 | 视觉样式、动态系统配色及扩展图标 |
| 依赖注入 | Hilt | 依赖管理 |
| 网络通信 | Retrofit & OkHttp | 与 VirusTotal API 的 HTTP 通信 |
| 序列化 | kotlinx.serialization | 类型安全的 JSON 解析与自定义属性保留 |
| 异步处理 | Kotlin Coroutines | 异步编程与后台处理 |
| 持久化 | Jetpack DataStore | 动态设置存储与已保存的扫描报告 |
| 兼容性 | SDK 30 至 36 | 使用 JDK 17 编译,minSdk 30,targetSdk 36 |