一句话:提出 ApkDiffer,用两阶段分解对齐实现 Android 应用跨版本方法级差异分析,兼顾精度与可扩展性。
软件差异分析可用于 n-day 漏洞定位和抄袭检测,但现有二进制对齐工具难以应对现代 Android 应用的大规模代码库,跨版本应用差异分析研究不足。ApkDiffer 面向同一闭源 Android 应用的不同版本,提出基于分解的两阶段方法级对齐:先将各版本代码库分解为功能单元,再跨版本精确对齐实现等价功能的方法。评估表明,ApkDiffer 在精确率与召回率上明显优于现有对齐算法,且时间成本可接受;作者还用其追踪 100 个 Google Play 热门应用一年的演化,定位隐私收集行为变化的代码位置,揭示应用更新带来持续演变的隐私威胁。
Software diffing (a.k.a., code alignment) is a fundamental technique to differentiate similar and dissimilar code pieces between two given software products. It can enable various kinds of critical security analysis, e.g., n-day bug localization, software plagiarism detection, etc. To date, many diffing tools have been proposed dedicated to aligning binaries. However, few research efforts have elaborated on cross-version Android app diffing, largely hindering the security assessment of wild apps. To sum up, existing diffing works usually establish scalability-oriented alignment algorithms, and suffer from significant alignment errors when handling the large codebases of modern apps. To fill this gap, we propose A pk D iffer , a method-level (i.e., function-level) diffing tool dedicated to aligning versions of the same closed-source Android app. A pk D iffer achieves a good balance between scalability and effectiveness, by featuring a two-stage decomposition-based alignment solution. It first decomposes the codebase of each app version, respectively, into multiple functionality units; then tries to precisely align methods that serve equivalent app functionalities across versions. In evaluation, the results show that A pk D iffer noticeably outperforms existing alignment algorithms in precision and recall, while still having a satisfactory time cost. In addition, we used A pk D iffer to track the one-year evolution of 100 popular Google Play apps. By pinpointing the detailed code locations where app versions deviate in privacy collection, we convincingly revealed that app updates may pose ever-evolving privacy threats to end-users.
@article{paperbot2987,
title = {ApkDiffer: Accurate and Scalable Cross-Version Diffing Analysis for Android Applications},
author = {Jiarun Dai and Mingyuan Luo and Yuan Zhang and Min Yang and Minghui Yang},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {OOPSLA2},
year = {2025},
doi = {10.1145/3763141}
}