paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Android testing via synthetic symbolic execution

基于合成式符号执行的 Android 测试
ASE Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering2018匹配度 3/10 · 论文研究Android应用的符号执行,属于传统程序分析与测试领域,未涉及用户关注的LLM/Agent、浮点分析或贝叶斯程序分析等交叉方向,因此匹配度较低。引用 38 inbox
Xiang Gao, Shin Hwei Tan, Zhen Dong, Abhik Roychoudhury
crossref: 2026-09-12

AI 速览

一句话:用按需程序合成自动推断 Android 库模型,免除手工建模并缓解路径发散,提升符号执行的分支覆盖。

对 Android 应用做符号执行十分困难:要么构建定制 VM,要么对 Android 库进行建模;而 Android Runtime 不断演化,高保真地模拟库及其版本差异代价很高。若不模拟库行为,符号值流入 Android 框架后会丢失约束,进而引发路径发散。已有工作如 JPF-Android 依赖对库等执行环境的手工建模。本文在 JDART 之上构建了一个 Android 应用的动态符号执行引擎,完全不做执行环境的手工建模:当应用中出现依赖环境(库)的控制流决策时,按需触发程序合成步骤,自动推导库行为的表达式表示,并通过反复运行相应库在运行中对该表示进行精化,以提升行为覆盖并缓解路径发散。该库合成还可做到上下文相关,相比旨在合成完整库代码的传统方法,能为特定上下文生成更精确的表达式。评估表明,由程序合成得到的库模型往往比 JPF-Android 的半手工模型更准确,且该符号执行引擎能触达更多分支目标。

问题
Android 应用的符号执行需要高保真地建模不断演化的 Android 库,否则符号值进入框架后丢失约束会导致路径发散;已有方案依赖代价高昂的手工建模。
方法
在 JDART 之上构建动态符号执行引擎,遇到依赖库的控制流决策时按需调用程序合成自动推导库的表达式表示,并通过多次运行具体库在线精化,且支持上下文相关合成。
评估
与 JPF-Android 的半手工库模型对比,考察合成库模型的准确性以及符号执行能触达的分支目标数量。
原文摘要(Abstract)

Symbolic execution of Android applications is challenging as it involves either building a customized VM for Android or modeling the Android libraries. Since the Android Runtime evolves from one version to another, building a high-fidelity symbolic execution engine involves modeling the effect of the libraries and their evolved versions. Without simulating the behavior of Android libraries, path divergence may occur due to constraint loss when the symbolic values flow into Android framework and these values later affect the subsequent path taken. Previous works such as JPF-Android have relied on the modeling of execution environment such as libraries. In this work, we build a dynamic symbolic execution engine for Android apps, without any manual modeling of execution environment. Environment (or library) dependent control flow decisions in the application will trigger an on-demand program synthesis step to automatically deduce a representation of the library.This representation is refined on-the-fly by running the corresponding library multiple times.The overarching goal of the refinement is to enhance behavioral coverage and to alleviate the path divergence problem during symbolic execution. Moreover, our library synthesis can be made context-specific. Compared to traditional synthesis approaches which aim to synthesize the complete library code, our context-specific synthesis engine can generate more precise expressions for a given context. The evaluation of our dynamic symbolic execution engine, built on top of JDART, shows that the library models obtained from program synthesis are often more accurate than the semi-manual models in JPF-Android. Furthermore, our symbolic execution engine could reach more branch targets, as compared to using the JPF-Android models.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot4745,
  title = {Android testing via synthetic symbolic execution},
  author = {Xiang Gao and Shin Hwei Tan and Zhen Dong and Abhik Roychoudhury},
  booktitle = {ASE},
  year = {2018},
  doi = {10.1145/3238147.3238225}
}