面向 Android 安全研究 / CTF 训练的 Demo App。以 Jetpack Compose 作主界面挑战列表,逐项演示
Android 组件滥用、SSL Pinning、mTLS 双向认证、Frida Java/Native 对抗、硬件密钥认证、Cronet 网络栈、
Zygote 隔离进程等;配套 native 加解密与反检测代码,以及 secret.dex 运行时动态加载机制。
⚠️ 仅用于安全研究与教学,请勿用于非法用途。
- Kotlin + Java 混合;主界面 Jetpack Compose,各挑战页 View/XML
compileSdk 36 / minSdk 29 / targetSdk 36,ABI 仅arm64-v8a- NDK + CMake(C++17)native 层;AIDL;ViewBinding
- 依赖:Compose BOM、Material3、OkHttp、Cronet、Timber、Gson 等
- 配套后端 appdemo(Spring Boot):提供 mTLS flag 接口与 Android Key Attestation 验签接口
| 分组 | 挑战 | 入口 |
|---|---|---|
| Android 组件安全 | Activity / Service / 广播 / 内容提供者漏洞 | ui.demo.* |
| 逆向分析 | Smali 练习、Frida Java 层、Frida Native 层 | ui.reverse.* |
| 网络安全 | SSL Pinning、双向证书认证(mTLS)、Cronet 通信 | ui.security.*、ui.cronet.* |
| 系统对抗 | Zygote 隔离进程 / 脏 sepolicy、Bootloader 硬件认证检测 | env.*、Frida 关卡 12 |
挑战集中注册在 ui.main.ChallengeRegistry,主界面通过显式 Intent 启动对应 Activity。
./gradlew assembleRelease- 产物:
app/release/gagademo_v<versionName>_c<versionCode>_<buildType>.apk - 仅 arm64-v8a,模拟器需 ARM64 镜像
buildSecretDex任务会把src/secret/java单独 d8 为assets/secret.dex(运行时动态加载题材)
- 新增「双向证书认证 (mTLS)」关卡:客户端携带证书 + 服务端验签,目标是开启抓包后取得 flag
- 新增「Bootloader 状态检测」关卡(Frida 关卡 12):采集 Android Key Attestation 硬件认证证书链, 上传服务端 PKIX 验链(锚定 Google 硬件认证根)+ 解析 RootOfTrust 判定,本地不判定
- 主界面重构:移除登录 / 注册与「我的」页、移除底部导航,启动后直接进入关卡列表(Compose)
- 更新弹窗现代化:卡片式弹窗 + Material
LinearProgressIndicator进度 strings.xml标点规范化(全角 → 半角)- 清理 Compose 化后遗留的 View 适配器与孤儿资源
- 更新 Frida 检测逻辑;Zygote 隔离进程 / 脏 sepolicy 演示
- 新增 AES 加密与登录注册页
- Frida Java / Native 对抗关卡、Cronet 网络、SSL Pinning、Smali 与组件漏洞演示