由于Android系统的事件驱动特性,应用程序中存在着大量的隐式调用,这是静态分析工具构建控制流图过程中面临的一个比较大的挑战。本文结合工具Edge Miner提供的描述框架层中隐式调用的API总结,利用过程内后向数据流分析技术,提取应用程序中所有与回调方法相关的隐式控制流。结合应用程序中的显式控制流,我们开发出了一款比较精确的,可扩展的原型工具用来构建Android应用程序的控制流图。实验结果表明,本文开发的控制流提取工具可以发现更多的隐式调用关系。
As the event-based feature of Android system, there are many implicit transitions in Android applications, and it poses great challenges for static program analysis to construct a precise control flow graph. We leverage the API summaries describing implicit flow transitions through the Android framework generated by the tool Edge Miner, and extract callback-related implicit transitions within the Android applications using intra-procedural backward data flow analysis techniques. We propose a precise, scalable and light-weight tool to construct the accurate control flow graphs for Android applications combining explicit control flow. The experimental results reveal that our tool found more implicit edges.