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
来源
PROCEEDINGS OF THE 2018 33RD IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMTED SOFTWARE ENGINEERING (ASE' 18) | 2018年
基金
新加坡国家研究基金会;
关键词
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 条
  • [41] Multi-Packet Symbolic Execution Testing for Network Protocol Binary Software
    Wen, Shameng
    Feng, Chao
    Meng, Qingkun
    Zhang, Bin
    Wu, Ligeng
    Tang, Chaojing
    PROCEEDINGS OF 2016 5TH INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND NETWORK TECHNOLOGY (ICCSNT), 2016, : 624 - 627
  • [42] make test-zesti: A Symbolic Execution Solution for Improving Regression Testing
    Marinescu, Paul Dan
    Cadar, Cristian
    2012 34TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2012, : 716 - 726
  • [43] TBFV-SE: Testing-Based Formal Verification with Symbolic Execution
    Wang, Rong
    Liu, Shaoying
    2018 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE QUALITY, RELIABILITY AND SECURITY (QRS 2018), 2018, : 59 - 66
  • [44] Monitor-based Testing of Network Protocol Implementations Using Symbolic Execution
    Asadian, Hooman
    Fiterau-Brostean, Paul
    Jonsson, Bengt
    Sagonas, Konstantinos
    19TH INTERNATIONAL CONFERENCE ON AVAILABILITY, RELIABILITY, AND SECURITY, ARES 2024, 2024,
  • [45] The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more
    Martin Hentschel
    Richard Bubel
    Reiner Hähnle
    International Journal on Software Tools for Technology Transfer, 2019, 21 : 485 - 513
  • [46] Automatically performing weak mutation with the aid of symbolic execution, concolic testing and search-based testing
    Mike Papadakis
    Nicos Malevris
    Software Quality Journal, 2011, 19
  • [47] Automatically performing weak mutation with the aid of symbolic execution, concolic testing and search-based testing
    Papadakis, Mike
    Malevris, Nicos
    SOFTWARE QUALITY JOURNAL, 2011, 19 (04) : 691 - 723
  • [48] The Symbolic Execution Debugger (SED): a platform for interactive symbolic execution, debugging, verification and more
    Hentschel, Martin
    Bubel, Richard
    Haehnle, Reiner
    INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2019, 21 (05) : 485 - 513
  • [49] Symbolic Execution for Randomized Programs
    Susag, Zachary
    Lahiri, Sumit
    Hsu, Justin
    Roy, Subhajit
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2022, 6 (OOPSLA):
  • [50] Specification Extraction by Symbolic Execution
    Pichler, Josef
    2013 20TH WORKING CONFERENCE ON REVERSE ENGINEERING (WCRE), 2013, : 462 - 466