[Paper] GAPS:通过静态路径合成引导动态 Android 分析

发布: (2025年11月28日 GMT+8 22:19)
6 min read
原文: arXiv

Source: arXiv - 2511.23213v1

概览

本文介绍了 GAPS(基于图的自动路径合成器),这是一种新颖的系统,能够将静态代码分析与动态 UI 驱动测试相结合,可靠地到达 Android 应用中的任意方法。通过自动从应用的调用图中合成执行路径,GAPS 使开发者和安全分析师能够将运行时引导至传统仅 GUI 测试无法触及的代码——例如库函数或后台服务。

关键贡献

  • 首个混合框架,将轻量级的静态逆向调用图遍历与数据流引导相结合,生成具体的交互脚本。
  • 路径合成算法,将静态调用图边缘转换为可在运行时执行的 UI 操作(点击、Intent 等)。
  • 全面评估:在 AndroTest 基准和 50 款流行的真实应用上进行实验,显示出 5‑6 倍 的方法可达性提升,优于现有的所有动态工具。
  • 性能感知设计:静态分析在基准上的平均耗时为 4.27 秒(在大型真实应用上为 278.9 秒),同时保持高精度。
  • 开源实现(GAPS),可集成到现有的 Android 测试流水线中。

方法论

  1. 静态调用图构建 – GAPS 使用快速、流不敏感的分析器构建方法级调用图。
  2. 逆向遍历 – 从 目标方法(例如疑似漏洞的 API)出发,系统向后遍历图,收集可能调用目标的前置方法。
  3. 数据流过滤 – 轻量级的数据流分析通过检查前置代码是否能够实际生成所需的对象/参数,剪枝不可行的分支。
  4. 路径翻译 – 将保留下来的调用图边缘映射为具体的 UI 事件(按钮点击、Intent 启动、服务启动),GAPS 生成兼容 Android UI‑Automator 框架的指令脚本。
  5. 动态执行 – 将脚本交给运行时引擎,在模拟器/设备上与应用交互,尝试沿合成路径前进并触发目标方法。
  6. 反馈循环 – 若执行失败,GAPS 可回溯、尝试其他分支,或回退到通用的 GUI‑fuzzer。

整个流水线全自动化:开发者只需指定想要到达的方法。

结果与发现

评估项目静态可达性静态耗时(每个应用)动态可达性
AndroTest 基准88.24 % 的目标被识别4.27 s57.44 % 实际执行
最先进的动态工具(3 次运行平均)APE 12.82 %,GoalExplorer 9.69 %,Guardian 17.12 %
静态工具FlowDroid 58.81 %(35.06 s),DroidReach 9.48 %(23.46 s)
50 款流行的真实应用62.03 % 的目标被识别278.9 s59.86 % 执行

要点:GAPS 显著优于纯动态 UI 测试器,甚至超过仅静态分析的工具,在真实应用上实现 超过 50 % 的动态可达性,且分析时间仅为数分钟。

实际意义

  • 安全审计 – 渗透测试人员可以在无需手动编写 UI 流的情况下直接定位特定的加密或权限检查 API,加速漏洞验证。
  • 自动化回归测试 – CI 流水线可嵌入 GAPS 脚本,确保关键代码路径(如支付流程)在每次构建中都被执行。
  • 调试与崩溃复现 – 开发者可让 GAPS 到达抛出异常的方法,自动生成在设备上复现该 bug 的步骤。
  • 库集成检查 – 在集成第三方 SDK 时,团队可以验证 SDK 的初始化和使用路径是否真的在目标设备上可达。
  • 工具链兼容性 – GAPS 输出 UI‑Automator/ADB 命令,可直接与现有 Android 测试框架(Espresso、Robotium 等)配合使用。

局限性与未来工作

  • 静态近似 – 调用图是流不敏感的;高度动态的特性(反射、动态类加载)仍可能被遗漏,导致对某些混淆应用的可达性受限。
  • 环境依赖 – 某些路径需要特定的设备状态(如网络、传感器),而 GAPS 目前未建模,可能导致执行失败。
  • 对超大应用的可扩展性 – 虽然对大多数市场应用已可接受,但分析时间随应用规模增长;未来工作将探索增量或并行图构建。
  • 用户自定义约束 – 计划扩展合成引擎以接受自定义前置条件(如已登录用户、特定语言环境)等。

总体而言,GAPS 在让深层、方法级别的 Android 分析对开发者和安全专业人士变得实用方面迈出了重要一步。

作者

  • Samuele Doria
  • Eleonora Losiouk

论文信息

  • arXiv ID: 2511.23213v1
  • 分类: cs.SE
  • 发布时间: 2025 年 11 月 28 日
  • PDF: Download PDF
Back to Blog

相关文章

阅读更多 »

[Paper] Kubernetes 配置缺陷

Kubernetes 是一种帮助快速部署软件的工具。不幸的是,配置 Kubernetes 容易出错。配置缺陷并不少见。