Android Testing via Synthetic Symbolic Execution

被引:0
|
作者
Gao, Xiang [1 ]
Tan, Shin Hwei [1 ,2 ]
Dong, Zhen [1 ]
Roychoudhury, Abhik [1 ]
机构
[1] Natl Univ Singapore, Singapore, Singapore
[2] Southern Univ Sci & Technol, Shenzhen, Peoples R China
基金
新加坡国家研究基金会;
关键词
Android testing; Symbolic execution; Program synthesis;
D O I
10.1145/32381417.3238225
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:419 / 429
页数:11
相关论文
共 50 条
  • [21] Hybrid Testing Based on Symbolic Execution and Fuzzing
    Xie X.-F.
    Li X.-H.
    Chen X.
    Meng G.-Z.
    Liu Y.
    Ruan Jian Xue Bao/Journal of Software, 2019, 30 (10): : 3071 - 3089
  • [22] Use of symbolic program execution in program testing
    Markoski, Branko
    Ivankovic, Zdravko
    Radosav, Dragica
    Milosevic, Zoran
    Obradovic, Borislav
    TECHNICS TECHNOLOGIES EDUCATION MANAGEMENT-TTEM, 2011, 6 (03): : 836 - 840
  • [23] Automated Regression Testing using Symbolic Execution
    Barisas, D.
    Milasius, T.
    Bareisa, E.
    ELEKTRONIKA IR ELEKTROTECHNIKA, 2011, (06) : 101 - 105
  • [24] CSEFuzz: Fuzz Testing Based on Symbolic Execution
    Xie, Zhangwei
    Cui, Zhanqi
    Zhang, Jiaming
    Liu, Xiulei
    Zheng, Liwei
    IEEE ACCESS, 2020, 8 : 187564 - 187574
  • [25] Automating Differential Testing with Overapproximate Symbolic Execution
    Rutledge, Richard
    Orso, Alessandro
    2022 IEEE 15TH INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION (ICST 2022), 2022, : 256 - 266
  • [26] Distributed Symbolic Execution for Binary Software Testing
    Wu, Bo
    Li, Mengjun
    Zhang, Bin
    Zhang, Quan
    Tang, Chaojing
    2014 IEEE WORKSHOP ON ELECTRONICS, COMPUTER AND APPLICATIONS, 2014, : 618 - 621
  • [27] PROGRAM TESTING USING SYMBOLIC EXECUTION.
    Borzov, Yu.V.
    Programming and Computer Software (English Translation of Programmirovanie), 1980, 6 (01): : 39 - 45
  • [28] Deferred Concretization in Symbolic Execution via Fuzzing
    Pandey, Awanish
    Kotcharlakota, Phani Raj Goutham
    Roy, Subhajit
    PROCEEDINGS OF THE 28TH ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON SOFTWARE TESTING AND ANALYSIS (ISSTA '19), 2019, : 228 - 238
  • [29] Fuzzing, Symbolic Execution, and Expert Guidance for Better Testing
    Kadron, Ismet Burak
    Noller, Yannic
    Padhye, Rohan
    Bultan, Tevfik
    Pasareanu, Corina S.
    Sen, Koushik
    IEEE SOFTWARE, 2024, 41 (01) : 98 - 104
  • [30] Symbolic Execution for Software Testing in Practice - Preliminary Assessment
    Cadar, Cristian
    Godefroid, Patrice
    Khurshid, Sarfraz
    Pasareanu, Corina S.
    Sen, Koushik
    Tillmann, Nikolai
    Visser, Willem
    2011 33RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2011, : 1066 - 1071