Android Application Patching durch Runtime-Manipulation
Application Patching ist ein vielversprechender Ansatz, mit dessen Hilfe der Ausführungs-Fluss einer kompilierten Android-Applikation modifiziert werden kann, um ihre Implementierung zu analysieren, Fehler zu beheben oder neue Funktionalität einzufügen. Während traditionelles statisches Application Patching rechenintensiv ist und daher auf leistungsstarker Desktop-Hardware ausgeführt werden muss, kann ein dynamischer Ansatz, der die Datenstrukturen der ART-Runtime modifiziert, am Gerät selbst operieren und die Technik damit für viele weitere Anwendungsfelder öffnen.
In diesem Forschungsprojekt haben wir die Machbarkeit und Praktikalität dieses Ansatzes untersucht. Mehrere bestehende Open-Source-Implementierungen wurden identifiziert und auf ihre Stärken und Schwächen hin analysiert. Auf Basis der verlässlichsten Kernkomponenten und einem Verständnis für die Implementierungsdetails der ART-Runtime wurde dann eine neue Lösung für das dynamische Intercepten von Methodenaufrufen in beliebigen Android-Applikationen realisiert. Die resultierende Software-Bibliothek wurde in eine komplette On-Device Application-Patching-Pipeline integriert und erfolgreich an mehreren der beliebtesten Android-Applikationen aus dem Google Play Store getestet.