Overt是一个功能强大的Android设备安全检测工具,采用Java + Native C++混合架构,提供全面的设备安全状态检测和分析功能。项目集成了先进的TEE(可信执行环境)证书解析技术,能够深度分析Android设备的安全状态。
- 设备锁定状态检测: 检查设备是否处于锁定状态
- 启动验证状态: 验证系统启动的完整性
- Verified: 已验证
- Self-signed: 自签名
- Unverified: 未验证
- Failed: 验证失败
- 安全级别评估: 评估设备的安全防护等级
- 硬件级安全验证: 基于Android KeyStore的硬件级安全检测
- 证书链解析: 深度解析X.509证书中的TEE扩展信息
- RootOfTrust验证: 验证可信根信息
- Root文件检测: 检测常见的root工具文件
/sbin/su
/system/bin/su
/system/xbin/su
/data/local/xbin/su
- 等多个路径
- Magisk检测: 检测Magisk等root管理工具
- 黑名单应用检测: 检测危险应用
- Hunter (反调试工具)
- MT管理器
- 抓包帮手
- 无线ADB工具
- 快应用调试器
- Apatch
- LSPosed
- KernelSU
- 等
- 白名单应用检测: 检查必要应用是否安装
- QQ、微信、支付宝
- 抖音等常用应用
- 系统属性检测: 检查系统关键属性
- 挂载点信息: 分析文件系统挂载状态
- 链接器信息: 检测动态链接库加载
- 内存映射检测: 分析进程内存映射
- 类加载器检测: 监控Java类加载情况
- 时间信息检测: 检查系统时间异常
- 端口信息检测: 检测网络端口使用情况
- 任务信息检测: 分析系统进程状态
- Frida检测: 检测Frida等动态分析工具
- 调试工具检测: 识别各种调试和分析工具
- 开发者模式检测: 检查是否启用开发者模式
- USB调试检测: 检查USB调试是否启用
- 代理设置检测: 检查网络代理配置
- VPN检测: 检查VPN连接状态
- 锁屏密码检测: 检查设备锁屏设置
- 充电状态检测: 检查设备充电状态
- SIM卡检测: 检查SIM卡状态
- 安装来源检测: 检查应用安装来源
┌─────────────────────────────────────┐
│ Java层 (UI层) │
│ ├── MainActivity │
│ ├── InfoCardContainer │
│ ├── InfoCard │
│ └── MainApplication │
├─────────────────────────────────────┤
│ JNI桥接层 │
│ ├── native-lib.cpp │
│ └── JNI接口函数 │
├─────────────────────────────────────┤
│ Native C++层 │
│ ├── 设备信息管理中心 │
│ │ └── zDevice │
│ ├── 检测模块 (_info结尾) │
│ │ ├── tee_info │
│ │ ├── root_file_info │
│ │ ├── package_info │
│ │ ├── system_prop_info │
│ │ ├── system_setting_info │
│ │ ├── mounts_info │
│ │ ├── maps_info │
│ │ ├── linker_info │
│ │ ├── class_loader_info │
│ │ ├── ssl_info │
│ │ ├── time_info │
│ │ ├── task_info │
│ │ └── port_info │
│ ├── 工具类 (z开头) │
│ │ ├── zJavaVm (JVM管理) │
│ │ ├── zLinker (动态链接器) │
│ │ ├── zClassLoader (类加载器) │
│ │ ├── zHttps (HTTPS客户端) │
│ │ ├── zTee (TEE检测) │
│ │ ├── zFile (文件操作) │
│ │ ├── zElf (ELF解析) │
│ │ ├── zJson (JSON处理) │
│ │ ├── zUtil (通用工具) │
│ │ ├── zCrc32 (CRC校验) │
│ │ └── zLog (日志记录) │
│ └── 自定义API层 │
│ ├── config.h (宏控制) │
│ ├── nonstd_libc (自定义库函数) │
│ ├── string (自定义字符串) │
│ ├── vector (自定义向量) │
│ └── map (自定义映射) │
└─────────────────────────────────────┘
- 混合架构: Java负责UI,C++负责核心检测逻辑
- 模块化设计: 每个检测功能独立成模块
- 单例模式: 统一管理设备信息
- 性能优化: Native层提供高性能检测
- 安全性: 核心逻辑在Native层,更难被反编译
- TEE深度解析: 基于mbedTLS的ASN.1解析技术
- 证书链验证: 完整的X.509证书解析流程
- AndroidX: AppCompat, Material Design, ConstraintLayout
- mbedTLS: 加密库 (libmbedtls.a, libmbedx509.a, libmbedcrypto.a)
- Native库: Android NDK, Log库
- DeviceLocked: 设备锁定状态
- VerifiedBootState: 启动验证状态
- Verified: 已验证
- Self-signed: 自签名
- Unverified: 未验证
- Failed: 验证失败
检测常见的root工具文件,如果存在则标记为高风险。
- 黑名单应用: 检测危险工具应用
- 白名单应用: 检查必要应用是否缺失
- 开发者模式: 检查是否启用开发者选项
- USB调试: 检查USB调试是否启用
- 代理设置: 检查网络代理配置
- VPN状态: 检查VPN连接状态
- 锁屏密码: 检查设备锁屏设置
- 充电状态: 检查设备充电状态
- SIM卡状态: 检查SIM卡是否存在
- 安装来源: 检查应用安装来源
项目实现了基于mbedTLS的TEE证书解析技术,能够:
- 证书获取: 通过Android KeyStore获取TEE证书
- ASN.1解析: 解析X.509证书中的TEE扩展
- RootOfTrust提取: 提取可信根信息
- 安全状态验证: 验证设备安全状态
- tee_cert_parser.cpp: C++实现的证书解析器
- tee_info.cpp: TEE信息获取和处理
1. 生成TEE密钥对
↓
2. 获取证书链
↓
3. 提取TEE扩展 (OID: 1.3.6.1.4.1.11129.2.1.17)
↓
4. 解析ASN.1结构
↓
5. 提取RootOfTrust信息
↓
6. 验证安全状态