c't 4/2016
S. 164
Praxis
Android-Apps dekompilieren
Aufmacherbild

Aufgemacht

Android-Apps dekompilieren, um undokumentierte APIs zu analysieren

Fast jede Android-App lässt sich mit kostenlosen Tools in ihren Quelltext zurückwandeln. So kann man vom Code anderer lernen und undokumentierte Schnittstellen von Smartphones und Tablets begutachten.

Android ist im Prinzip vorbildlich dokumentiert. Trotzdem gibt es Lücken, auf die man schnell stößt, wenn man ungewöhnlichere Ideen umsetzt. Das ist zum Beispiel der Fall, wenn man hersteller- oder gerätespezifische APIs ansteuern will – denn die sind selten gut beschrieben.

Oftmals gibt es aber bereits Apps im Google Play Store, die genau die gewünschten Funktionen ausführen. Ein Blick in deren Quellcode würde bestimmt helfen, doch nur wenige Programmierer veröffentlichen diesen. Da die meisten Android-Apps aber in Java geschrieben sind, lassen sie sich im Vergleich zu Programmen aus nativem Code hervorragend dekompilieren, also in Quelltext rückübersetzen.

Das zwei Jahre alte Sony Xperia SP ist so ein Fall. Am unteren Gehäuserand befindet sich eine transparente Leiste, die bei neuen Nachrichten farbig aufleuchtet oder im Takt zur abgespielten Musik pulsiert – dank RGB-LEDs sogar in beliebiger Farbe.

Für diese Android-untypische LED-Leiste hat Sony zwar ein experimentelles „Illumination Bar API“ veröffentlicht, das jedoch nur sehr eingeschränkten Zugriff auf die LEDs erlaubt. Dass mehr geht, verrät die im Play Store erhältliche App U-Disco, die jede LED einzeln ansteuert und ihre Farbe und Helligkeit verändert – wenn auch nur mit Root-Zugriff. Ein Blick in den Quelltext könnte Aufschluss geben, wie man die LED-Leiste selbst zum Leuchten bringt.