justfeelsth/5EPlay-Splash-Ad-Fraud-Technical-Analysis
GitHub: justfeelsth/5EPlay-Splash-Ad-Fraud-Technical-Analysis
通过对 5EPlay App 的反编译代码进行静态分析,揭示了其开屏广告跳过按钮可点击区域被故意缩小并由远程配置控制的技术证据,为识别和举证移动端欺诈性 UI 设计提供了完整的方法论和报告模板。
Stars: 2 | Forks: 0
# 5EPlay App 开屏广告跳过按钮欺诈性设计 - 技术调查报告
## **5EPlay 的开屏广告"跳过"按钮故意将可点击区域缩小至 30%~60%,用户点击按钮边缘会触发广告跳转而非关闭广告,且该行为由远程配置控制、设有专用数据统计代码——这不是 Bug,是有意为之。**
请注意,项目内的法律依据信息仅可作为参考,实际请咨询律师;我没有将反编译后的代码上传,你们可自行下载对应版本后反编译对照查看。
*不同渠道下载的版本sdk可能不一致,部分sdk不存在这种情况。
## 目录
- [核心发现](#核心发现)
- [技术原理简述](#技术原理简述)
- [证据摘要](#证据摘要)
- [报告文件](#报告文件)
- [独立验证方法](#独立验证方法)
- [相关说明](#相关说明)
## 核心发现
| 项目 | 内容 |
| -------- | ----------------------------- |
| 应用名称 | 5EPlay |
| 应用包名 | `com.fiveplay` |
| 应用版本 | 7.1.0 |
| 问题类型 | 开屏广告跳过按钮欺诈性设计 |
| 涉及代码 | 广告聚合 SDK(`cn.jy.ad` 包) |
**用户实际体验:**
1. 打开 App → 显示全屏广告,右上角有"跳过 5"按钮
2. 点击"跳过" → **广告没有关闭,反而跳转到广告落地页**
3. 返回 App → 再次点击"跳过" → **这次才成功关闭**
## 技术原理简述
跳过按钮由两层重叠构成:
┌──────────────────────┐
│ 视觉层(你看到的) │ ← 显示"跳过 5",覆盖 100%,但点击无响应
│ ┌──────────────────┐ │
│ │ 点击捕获层(隐藏) │ │ ← 只有 30%~60%,点击这里才能真正跳过
│ └──────────────────┘ │
└──────────────────────┘
↓ 点击边缘区域穿透到下方
┌──────────────────────┐
│ 广告交互层(全屏) │ ← 点击任意位置 → 跳转广告落地页
└──────────────────────┘
**为什么说是故意的:**
| 判断依据 | 代码证据 |
| ---------------------------- | ---------------------------------------- |
| 可点击区域比例可配置 | `t8.java`:从 `ycVar.i` 读取百分比值 |
| 专门为缩小场景设计了检测机制 | `r7.java`:仅当 `i < 100` 时设置加密标签 |
| 精确识别"用户想跳过但失败" | `ja.java`:四重条件判断 + 上报事件 13 |
| 区分"跳过失败"和"点广告" | `ja.java`:分别上报事件 13 和事件 12 |
| 首次点击后自动恢复 | `xc.java`:`l()` 方法将 `i` 重置为 100 |
## 证据摘要
### 硬证据(代码直接可见)
- 可点击区域被人为缩小(`t8.java` 第 34-47 行)
- 加密标签检测机制(`r7.java` 第 44-52 行)
- 规避事件上报(`ja.java` 第 140-166 行,事件代码 13)
- 首次点击后自动恢复至 100%(`xc.java` 第 176-199 行)
### 间接推理(需补充验证)
- 配置参数 `yc.i` 通过 JSON 解析加载(`yc` 类存在 `a(JSONObject)` 方法签名,但方法体反编译失败)
- 推断该配置来自远程服务器下发(基于广告 SDK 标准架构推理,**暂无直接抓包证据**)
### 关于"程序缺陷"的排除
代码中存在以下特征,排除了"写错了"的可能性:
- 预设了 `i < 100` 的条件分支
- 有加密标签和视图追踪系统
- 有专门的数据统计事件(区分事件 12 和 13)
- 在广告点击后自动执行"修复"操作
## 报告文件
| 文件 | 说明 |
| ------------------------------------------------------- | ---------------------------------- |
| [技术调查报告](evidence/01-技术调查报告.md) | 完整技术分析,含代码引用和行号对照 |
| [法律适用与维权指引](evidence/02-法律适用与维权指引.md) | 法律依据、证据清单和维权渠道 |
| [公众版说明](evidence/03-公众版说明.md) | 面向普通用户的通俗说明 |
## 独立验证方法
本报告的所有代码引用均可独立验证:
1. **获取 APK**:从应用商店下载 5EPlay App(版本 7.1.0)
2. **提取 DEX**:从 APK 的 `assets/jy.jar` 中解压 `classes.dex`
3. **反编译**:使用 [jadx](https://github.com/skylot/jadx)(开源,Apache 2.0 许可证)反编译
4. **核对代码**:对照报告中的文件路径和行号验证
**工具版本**:jadx 1.5.5,OpenJDK 21.0.10 (Temurin)
## 相关说明
### 关于代码归属
欺诈代码位于广告聚合 SDK(`cn.jy.ad` 包),而非 5EPlay 自身代码。但:
- 5EPlay 作为 App 运营者选择接入并启用了该 SDK
- SDK 的行为配置(如可点击区域比例)需要 App 方配合或默许
### 关于配置来源
本报告推断配置参数来自远程服务器下发,但**目前缺乏直接证据**(如网络抓包数据)。建议通过以下方式补强:
- 使用抓包工具(如 Charles、mitmproxy)捕获 App 启动时的网络请求
- 在返回的 JSON 数据中查找包含 `i` 字段的配置
### 法律依据
- 《互联网广告管理办法》第十条:不得设置虚假的关闭标志,不得为关闭广告设置两次或两次以上的操作
- 《消费者权益保护法》第八条、第九条:知情权、自主选择权
- 《广告法》第四十四条:互联网广告应确保一键关闭
*本报告基于对应用安装包的技术分析。所有引用的源代码文件均可通过开源工具独立验证。*
标签:5EPlay, APP安全, cn.jy.ad, JS文件枚举, UI欺骗, URL提取, 反编译, 安卓逆向, 广告SDK, 广告欺诈, 开屏广告, 恶意代码, 技术调查报告, 暗黑模式, 欺诈性设计, 点击劫持, 用户体验, 用户隐私, 目录枚举, 移动安全, 远程配置