Instrumentation von Android Anwendungen mit ExplorViz

Ähnliche Dokumente
Kollaboratives Erkunden von Software mithilfe virtueller Realität 28. September in ExplorViz / 33

Vulnerability Recognition by Execution Trace Differentiation

Quellcode-unterstützte Musterdefinition für Systemabhängigkeitsgraphen

1 Motivation und Einleitung

Instrumentierung von Android Anwendungen in ExplorViz

spectj AOP mit Java, Konzepte und Beispiele

Build Management Tool?

Build Management Tool

Bytecode-Manipulation leicht gemacht. Christian Kumpe, JavaLand 14. März 2018

Bytecode-Manipulation leicht gemacht. Christian Kumpe, Entwicklertag Karlsruhe 20. Juni 2018

Fehlertoleranz durch aspektorientierte Programmierung

Android Testautomatisierung mit dem Framework Robotium

Profiling in Python. Seminar: Effiziente Programmierung. Jan Pohlmann. November Jan Pohlmann Profiling in Python November / 32

Build Management Tool?

Mobile App development mit Xamarin. Christian Hassa Andreas Willich TechTalk Software AG

OOP. Tagesprogramm. Aspektorientierte Programmierung. Annotationen

Mobile Development in.net mit Xamarin

Android-Testautomatisierung mit Robotium

Aspektorientierte Programmierung

SW-Archäologie mit AspectJ

Modellierung CORBA-basierter Anwendungssysteme mit der UML

CLICK TO EDIT MASTER TITLE STYLE

Android GUI Entwicklung

Smartphone Entwicklung mit Android und Java

Lehrstuhl 1 / Fakultät für Informatik. Haskell. Karsten Lettow

Behutsame Modernisierung

Agile Testautomatisierung im XING Mobile Team

Hauptseminar AOSD. Design-by-Contract

Agile Testautomatisierung im XING Mobile Team

Einführung in AOP. Rico Schiekel rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung

Aspektorientierte Programmierung mit.net

AOP Day 07. eine Veranstaltung der SIG AspectJ. organisiert vom AOP-Komitee. und der guten Fee. powered by. Oliver Böhm Darko Palic Ludger Solbach

Mit Cloud Power werden Sie zum

3. GI-Workshop EPK 2004 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten Luxemburg. ARIS meets RUP

Rekonfiguration durch dynamische aspektorientierte Programmierung

Bestandsaufnahme und Arbeit an einer Alpha-Version des Saros- Plugins für die IntelliJ-Plattform

ASPECT-ORIENTED DESIGN PATTERNS

Application Frameworks

Klappe auf! Was macht die JVM denn da?

Intel Thread Checker

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Aspektorientierte Middleware Florian Wagner

AOP by Examples. JavaLand, 25. März 2015, Oliver Böhm. Photo from

EIN NEUER SMARTPHONE-BASIERTER ANSATZ ZUM LEHREN VON JAVA MIT EINEM LERNSPIEL. 14. Oktober 2016, Tobias Jordine

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

JavaFX auf Mobile. von Stefan Barth und Stefan Heinze

Olaf Seng Thomas Genßler Benedikt Schulz. Forschungszentrum Informatik, Karlsruhe

Schneller mit AspectJ

Programmierkurs C++ Abstrakte Klassen und Methoden

ung AOP und AspectJ 2005 agentes AG

Automatisierung von SAM-FS Abläufen mit Python Python Binding für die SAM-FS API

Softwareprojekte mit Kultur

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

Abacus Formula Compiler (AFC)

App-Entwicklung mit Titanium

Maven 2 Softwareprojekte mit Kultur

Configurable Embedded Systems

Objektorientiertes Programmieren

Einführung in Google Web Toolkit

Informatik II (D-ITET)

Dynamisches Aspektweben in C und C++: DAO C++ und µdyner

Mixed Language Programming POLINA RAJKO - MIXED LANGUAGE PROGRAMMING 1/35

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks

CiAO (CiAO is Aspect-Oriented)

Bessere Software durch AOP? Achim Demelt OOP 2008

Softwareproduktlinien Teil 4: Versionsverwaltungs- und Buildsysteme

Memory Models Frederik Zipp

NetBSD Projekt Jahresbericht 2001

Endlich! Mission Control und Flight Recorder für Hotspot

Analyse der Verwendung des Eventlistener-Konzepts einer objektrelationalen Persistenzschicht

Anwendungsentwicklung mit Spring

Einstieg in die Informatik mit Java

Usability-Test für mobile Java-Anwendungen

<Insert Picture Here> Performance Tests in der Praxis am Beispiel von Oracle BPM/BPEL

Sommersemester Implementierung I: Struktur

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

App-Entwicklung für das iphone. Von der Idee bis in den App Store

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Testen von sicherheitskritischer Embedded Software mit frei verfügbaren Tools. - ein Erfahrungsbericht

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

SW-Archäologie mit AOP (Praxisbericht)

Modularisierung und Inversion of Control mit Spring done right

Das a-kernel Projekt

Effiziente Überwachung von Laufzeiteigenschaften in Soft- und Hardware

Languages and Tools for Object-Oriented Development Klausur Wintersemester 2007/2008

GraphHopper-Routing mit Maut-Erweiterung

9. Ausnahmebehandlung

Java Reflection. Andreas Lochbihler. 15. Mai Lehrstuhl Programmierparadigmen Universität Karlsruhe

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Kurzanleitung Eclipse

C++ Templates - eine kleine Einführung. Funktionstemplates. Fabian Scheler, Peter Ulbrich, Niko Böhm. 20. Oktober 2008

Technologische Analysen im Umfeld Sozialer Netzwerke

Fuzzing. Robert Buchholz, Kai Dietrich, Björn Lohrmann. 26. Januar Rechnersicherheit Praktikum WS Fuzzing

Evaluation der Leistungsfähigkeit ausgewählter Mutationstestwerkzeuge

Transkript:

Instrumentation von Android Anwendungen mit ExplorViz Jan Witzany 28. September 2016 Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 1 / 19

Gliederung 1. Motivation 2. Ziele 3. Grundlagen 4. Entwurf 5. Implementierung 6. Evaluation 7. Ausblick Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 2 / 19

Motivation Monitoring Android Motivation Android Marktanteil: >85% Viele Applikationen Mangelhafte o. fehlende Dokumentation Programmiersprache: Java 2,000 1,500 1,000 500 2012 2013 2014 2015 2016 Abbildung: Anzahl von Apps im Play Store https://www.statista.com/statistics/266210/ Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 3 / 19

Ziele Ziele Instrumentierung von Android Anwendungen Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 4 / 19

Ziele Ziele Instrumentierung von Android Anwendungen Sourcecode Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 4 / 19

Ziele Ziele Instrumentierung von Android Anwendungen Sourcecode APK Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 4 / 19

Ziele Ziele Instrumentierung von Android Anwendungen Sourcecode APK Monitoring mit ExplorViz Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 4 / 19

Ziele Ziele Instrumentierung von Android Anwendungen Sourcecode APK Monitoring mit ExplorViz Android Apps in Java kein JavaScript/HTML kein C/C++ Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 4 / 19

Grundlagen ExplorViz Grundlagen Live Trace Visualisierung von Programmen Packages und Klassen in einer 3D-Softwarestadtmetapher Java Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 5 / 19

Grundlagen ExplorViz II Grundlagen Abbildung: Live Trace Visualization for System and Program Comprehension in Large Software Landscapes, Fittkau, F. (2015) Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 6 / 19

Grundlagen ExplorViz III Grundlagen Abbildung: Live Trace Visualization for System and Program Comprehension in Large Software Landscapes, Fittkau, F. (2015) Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 7 / 19

Grundlagen Android Grundlagen Java als Programmiersprache Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 8 / 19

Grundlagen Android Grundlagen Java als Programmiersprache Dalvik VM/ART Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 8 / 19

Grundlagen Android Grundlagen Java als Programmiersprache Dalvik VM/ART Anroid Versionen Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 8 / 19

Grundlagen Android Grundlagen Java als Programmiersprache Dalvik VM/ART Anroid Versionen Berechtigungen Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 8 / 19

Grundlagen Android Grundlagen Java als Programmiersprache Dalvik VM/ART Anroid Versionen Berechtigungen kein Netzwerkverbindung im Main Thread Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 8 / 19

Grundlagen Android Grundlagen Java als Programmiersprache Dalvik VM/ART Anroid Versionen Berechtigungen kein Netzwerkverbindung im Main Thread ProGuard Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 8 / 19

Grundlagen Aspektorientierte Programmierung Grundlagen @Aspect public class Aspect { @Pointcut ( " execution ( * * (.. ) &&! w i t h i n ( e x p l o r v i z. * * ) " ) public void methodexecution ( ) { } @Around ( " p o i n t c u t ( ) " ) public Object aroundadvice ( ProceedingJoinPoint jp ) throws Throwable { / / code before execution of method jp. proceed ( ) } } / / code a f t e r execution of method Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz 28. September 2016 9 / 19

Entwurf Instrumentierung Entwurf Build-Prozess Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 10 / 19

Entwurf ExplorViz Entwurf Android Flag Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 11 / 19

Entwurf ExplorViz Entwurf Android Flag TCP im separaten Thread Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 11 / 19

Entwurf ExplorViz Entwurf Android Flag TCP im separaten Thread Überprüfen der Module auf Kompatibilität Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 11 / 19

Implementierung Instrumentierung Implementierung APK: jadx, APK-Tool Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 12 / 19

Implementierung Instrumentierung Implementierung APK: jadx, APK-Tool Post-Compile-Weaving Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 12 / 19

Implementierung Instrumentierung Implementierung APK: jadx, APK-Tool Post-Compile-Weaving Gradle-Plugin für AspectJ Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 12 / 19

Implementierung ExplorViz: Aspekt Implementierung Length Id ObjectId Classname Implemented Interface Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 13 / 19

Implementierung ExplorViz: Aspekt Implementierung Length Id ObjectId Classname Implemented Interface dynamische Pointcuts Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 13 / 19

Implementierung ExplorViz: System-Monitoring Implementierung Aktueller Ansatz nicht in Android möglich Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 14 / 19

Implementierung ExplorViz: System-Monitoring Implementierung Aktueller Ansatz nicht in Android möglich CPU-Auslastung: /proc/stat Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 14 / 19

Implementierung ExplorViz: BuildProzess Implementierung Java Version 1.7 Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 15 / 19

Implementierung ExplorViz: BuildProzess Implementierung Java Version 1.7 AspectJ Compiler Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 15 / 19

Implementierung ExplorViz: BuildProzess Implementierung Java Version 1.7 AspectJ Compiler Entfernen nicht kompatibler Programmbibliotheken Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 15 / 19

Evaluation Live Demo Evaluation "Babsi", 2013 Applikation zur Aufnahme von Patientendaten API Level 19 Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 16 / 19

Ausblick Ausblick Erweiterung für dynamische Pointcuts Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 17 / 19

Ausblick Ausblick Erweiterung für dynamische Pointcuts Optimierung für APK-Instrumentierung Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 17 / 19

Ausblick Ausblick Erweiterung für dynamische Pointcuts Optimierung für APK-Instrumentierung Performance von Datenbankoperationen Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 17 / 19

Ausblick Ausblick Erweiterung für dynamische Pointcuts Optimierung für APK-Instrumentierung Performance von Datenbankoperationen Anpassung an zukünftige Android Versionen Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 17 / 19

Zusammenfassung Fazit Android Instrumentierung Sourcecode: PCW mit AspectJ APK: Dekompilieren ExplorViz Keine Netzwerkkommunikation im Main-Thread Anpassen des Build-Skriptes Anpassen des System-Monitorings Dynamische Pointcuts Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 18 / 19

Referenzen https://www.explorviz.net/, 27.09.2016 F. Fittkau, Live Trace Visualization for System and Program Comprehension in Large Software Landscapes (Doktorarbeit/PhD), Faculty of Engineering, Kiel University, Kiel,(2015). https://github.com/hujiangtechnology/ gradle_plugin_android_aspectjx, 27.09.2016 https://gradle.org/, 27.09.2016 Kiczales, Gregor, et al. Aspect-oriented programming. European conference on object-oriented programming. Springer Berlin Heidelberg, 1997. https://github.com/skylot/jadx, 27.09.2016 Jan Witzany Instrumentation von Android Anwendungen mit ExplorViz28. September 2016 19 / 19