Class Loaders in the Middle: Confusing Android Static Analyzers
When executing a mobile application, Android executes either the classes provided by the developer or the ones provided by the operating system. The dynamic linking and loading of the different classes is a complex task that may be exploited by an attacker. In particular, if the developer adds a class whose name collides with another class of Android, they may confuse a reverse engineer. In this article, we explore the possible collisions that can occur between classes defined multiple times at different locations, i.e., multiple times in the APK file or, at the same time, in the APK and the operating system. We highlight three attacks that we call shadow attacks. In particular, we show that static analysis tools used by a reverse engineer choose the shadow implementation for most of the evaluated tools, and output a wrong result. In particular, the flow analysis of Androguard or Flowdroid can be fooled by an attacker. In a dataset of 49,975 applications, we also explored if shadow attacks are used in the wild and found that most of the time, there is no malicious behavior behind them. The main results are that 23.52% of applications shadow a class of the SDK and 3.11% a hidden class of the system.
Authors
- Jean-François Lalande (ORCID: https://orcid.org/0000-0003-4984-2199)
- Jean-Marie Mineau (ORCID: https://orcid.org/0009-0001-5233-3056)
Institutions
- Centre National de la Recherche Scientifique (FR)
- CentraleSupélec (FR)
Publication Details
- Journal
- Digital Threats Research and Practice
- Published
- 2025-07-24
- DOI
- https://doi.org/10.1145/3754457
- Citations
- 1
- Primary Topic
- Advanced Malware Detection Techniques
- Type
- article
- Field-Weighted Citation Impact
- 1.49