CLAPP: characterizing loops in Android applications
Authors:
Open Access
- 30 August 2015
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 687-697
Abstract
When performing program analysis, loops are one of the most important aspects that needs to be taken into account. In the past, many approaches have been proposed to analyze loops to perform different tasks, ranging from compiler optimizations to Worst-Case Execution Time (WCET) analysis. While these approaches are powerful, they focus on tackling very specific categories of loops and known loop patterns, such as the ones for which the number of iterations can be statically determined. In this work, we developed a static analysis framework to characterize and analyze generic loops, without relying on techniques based on pattern matching. For this work, we focus on the Android platform, and we implemented a prototype, called CLAPP, that we used to perform the first large-scale empirical study of the usage of loops in Android applications. In particular, we used our tool to analyze a total of 4,110,510 loops found in 11,823 Android applications. As part of our evaluation, we provide the detailed results of our empirical study, we show how our analysis was able to determine that the execution of 63.28% of the loops is bounded, and we discuss several interesting insights related to the performance issues and security aspects associated with loops.Keywords
Funding Information
- Air Force (FA8750-12-2-0101)
This publication has 18 references indexed in Scilit:
- Execute This! Analyzing Unsafe and Malicious Dynamic Code Loading in Android Applications2014
- An empirical study of cryptographic misuse in android applications2013
- RiskRanker2012
- Automated Detection of Non-termination and NullPointerExceptions for Java BytecodeLecture Notes in Computer Science, 2012
- Symbolic Loop Bound Computation for WCET AnalysisLecture Notes in Computer Science, 2012
- aiT: Worst-Case Execution Time Prediction by Static Program Analysis2008
- A New Algorithm for Identifying Loops in Decompilation2007
- A loop transformation theory and an algorithm to maximize parallelismIEEE Transactions on Parallel and Distributed Systems, 1991
- Efficiently computing static single assignment form and the control dependence graphACM Transactions on Programming Languages and Systems, 1991
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987