HOME | ENGLISH | IMPRESSUM | KIT

Bachelor-/Studienarbeit (abgeschlossen): Android Bytecode: Dalvik Frontend für Programmanalyse

Im Rahmen unseres Joana Projekts haben wir verschiedene Analysen für Javaprogramme entwickelt. Diese Analysen bauen auf dem Programmanalyseframework von IBM namens WALA auf. Im Moment kann man mit Hilfe von WALA normalen Java-Bytecode einlesen und analysieren. Da Android eine andere Form von Bytecode namens Dalvik verwendet, ist unser Ziel ein Frontend für WALA zu entwicklen womit Android Bytecode eingelesen werden kann. Dadurch könnte man unsere Programmanalysen auch auf Androidprogramme anwenden.

WALA verwendet eine registerbasierte SSA-Form deren Instruktionen weitgehend an Java Bytecode angelehnt sind. Deshalb sollen Sie im Rahmen dieser Arbeit den ersten Schritt zur Anbindung an WALA vollziehen: Das Einlesen von Dalvik Bytecode und die Konvertierung in SSA-Form (Eine weitere Arbeit wird sich dann anschliessend um die Anbindung an WALA kümmern). Geplant ist das Sie hierfür das bereits bestehende Projekt smali http://code.google.com/p/smali/ erweitern. Dieses Projekt bietet bereits eine Infrastruktur zum Einlesen von Dalvik Bytecode und rudimentäre Informationen über den Kontrollfluss.

Das Gute an Dalvik Bytecode ist, dass es im Gegensatz zum stackbasieren Java Bytecode, bereits registerbasiert ist. Bei der Umwandlung in SSA-Form müssen folglich nur die verwendeten Register intelligent ausgetauscht werden. Eine Umwandlung von Stackcode zu Registercode ist nicht nötig.

Aufgabe:

  • Einarbeitung in das Dalvik Bytecode Format und in smali
  • Erzeugen eines Kontrollflussgraphen mit Hilfe der vorhandenen Informationen in smali.
  • Berechnen der Dominatoren und Dominanzgrenzen auf dem Kontrollflussgraph.
  • Erzeugen der SSA-Form duch Umbenennung der Register und Platzierung der benötigten PHI-Funktionen.
  • Integrieren des Ergebnisses in das bestehende smali Projekt. Evtl. auch eine Erweiterung der Ausgabe für SSA-basierten Assemblercode.
  • Evaluierung der Eigenschaften von Dalvik Bytecode im Vergleich zu normalem Java Bytecode.

Voraussetzungen

  • Interesse an Programmiersprachen, Kenntnisse in Java
  • Kenntnisse von Java Bytecode oder sogar Dalvik Bytecode sind vorteilhaft, aber nicht notwendig

Arbeitsumgebung



Veröffentlichungen

Veröffentlichung
Towards a Dalvik Frontend for Programme Analysis

Betreuer

Ehemalige Mitarbeiter
Dr.-Ing. Jürgen Graf

Studenten

Ehemalige Studenten
Patrick Kuhn