一句话:提出基于数据流分析与保存-恢复二分图的静态方法 DDLDroid,高效检测 Android 应用的数据丢失问题。
Android 应用因 activity 重启或应用重新启动导致的数据丢失问题会显著降低用户体验并损害应用质量。尽管已有较多数据丢失检测研究,现有技术仍因静态分析不精确或动态探索覆盖不足而漏检大量问题。本文提出 DDLDroid——一种静态分析方法及开源工具,基于数据流分析系统而高效地检测数据丢失问题。该方法首先构建“保存-恢复二分图”,依据变量所属的载体 widget 将需要保存的变量与需要恢复的变量关联起来;随后通过数据流分析识别缺失或断裂的保存/恢复数据流,这些即对应数据丢失问题。作者在 66 个 Android 应用上进行了实验评估,DDLDroid 在 73 分钟内成功检测出 302 个真实数据丢失问题,其中 180 个为此前未知问题,验证了方法的有效性与效率。
Data loss issues in Android apps triggered by activity restart or app relaunch significantly reduce the user experience and undermine the app quality. While data loss detection has received much attention, the state-of-the-art techniques still miss many data loss issues due to the inaccuracy of the static analysis or the low coverage of the dynamic exploration. To this end, we present DDLDroid, a static analysis approach and an open-source tool, to systematically and efficiently detect data loss issues based on the data flow analysis. DDLDroid is bootstrapped by a saving-restoring bipartite graph which correlates variables that need saving to the corresponding variables that need restoring according to their carrier widgets. The missed or broken saving or restoring data flows lead to data loss issues. The experimental evaluation on 66 Android apps demonstrates the effectiveness and efficiency of our approach: DDLDroid successfully detects 302 true data loss issues in 73 minutes, 180 of which are previously unknown.