AAU Student Projects - visit Aalborg University's student projects portal
A master's thesis from Aalborg University
Book cover


Static Analysis of Dalvik Bytecode and Reflection in Android

Authors

;

Term

4. term

Education

Publication year

2012

Submitted on

Pages

55

Abstract

Skadelige apps er et vigtigt problem på Android, verdens mest udbredte styresystem til smartphones. Android-apps er typisk skrevet i Java og kompileret til at køre på Dalvik, en virtuel maskine, der afvikler app-koden. Med statisk analyse kan man undersøge en app uden at køre den og danne et overblik over, hvad den kan gøre. Det kan afsløre skadelig adfærd, for eksempel at der i det skjulte sendes dyre sms’er. Denne afhandling forbedrer grundlaget for og den praktiske nytte af sådan analyse på Android. Vi forfiner vores operationelle semantik – en formel beskrivelse af, hvordan Dalvik-instruktioner opfører sig – så den bedre matcher Androids faktiske implementering. På den baggrund opdaterer vi vores kontrolflowanalyse (som følger mulige eksekveringsveje) for at gøre den mere præcis i virkelige apps. Derudover udvider vi analysen med støtte for to udbredte dynamiske funktioner: refleksion (kode, der kan inspicere eller kalde metoder ved kørsel) og JavaScript-grænseflader (broer mellem app-kode og indlejret webindhold). Til sidst implementerer vi en prototype, der kan konstruere kaldgrafer (oversigter over hvilke funktioner der kalder hinanden) og køre på apps fra den virkelige verden.

Malicious apps are a serious issue on Android, the world’s most widely used smartphone operating system. Android apps are typically written in Java and compiled to run on Dalvik, a virtual machine that executes app code. With static analysis, we can examine an app without running it and approximate what it may do. This can reveal harmful behavior, such as secretly sending costly text messages. This thesis strengthens both the foundations and practical usefulness of such analysis for Android. We refine our operational semantics—a formal description of how Dalvik instructions behave—to more closely match Android’s actual implementation. Building on this, we update our control-flow analysis (which tracks possible execution paths) to be more precise on real apps. We also extend the analysis to support two widely used dynamic features: reflection (code that inspects or invokes methods at runtime) and JavaScript interfaces (bridges between app code and embedded web content). Finally, we implement a prototype that constructs call graphs (maps of which functions call which) and runs on real-world apps.

[This abstract was generated with the help of AI]