Information (Feb 2020)

Smali<sup>+</sup>: an Operational Semantics for Low-level Code Generated from Reverse Engineering Android Applications<sup>+</sup>

  • Marwa Ziadia,
  • Jaouhar Fattahi,
  • Mohamed Mejri,
  • Emil Pricop

DOI
https://doi.org/10.3390/info11030130
Journal volume & issue
Vol. 11, no. 3
p. 130

Abstract

Read online

Today, Android accounts for more than 80% of the global market share. Such a high rate makes Android applications an important topic that raises serious questions about its security, privacy, misbehavior and correctness. Application code analysis is obviously the most appropriate and natural means to address these issues. However, no analysis could be led with confidence in the absence of a solid formal foundation. In this paper, we propose a full-fledged formal approach to build the operational semantics of a given Android application by reverse-engineering its assembler-type code, called Smali. We call the new formal language Smali + . Its semantics consist of two parts. The first one models a single-threaded program, in which a set of main instructions is presented. The second one presents the semantics of a multi-threaded program which is an important feature in Android that has been glossed over in the-state-of-the-art works. All multi-threading essentials such as scheduling, threads communication and synchronization are considered in these semantics. The resulting semantics, forming Smali + , are intended to provide a formal basis for developing security enforcement, analysis and misbehaving detection techniques for Android applications.

Keywords