Schlagwörter
Manchmal ist es eine Nachricht wert. So enthüllte vor kurzem die US-Kommunikationsbehörde, dass die kostenlose Android-App „Brightest Flashlight“ heimlich die Positionsdaten der Handy-Benutzer einsammelt und kontinuierlich an Werbefirmen weiterleitet. Google nahm die App aus ihrem Playstore – aber weiter geschah nichts. Ja, Google sorgte in diesem Zeitraum sogar dafür, dass ein Sicherheitfeature im Android-Betriebssystem 4.3, welches dem Nutzer die Kontrolle über einzelne App-Berechtigungen gewährte, in der späteren Version 4.4.2 wieder verschwand.
Welche Berechtigungen einzelne Apps haben, kann man auf dem Mobiltelefon unter „Einstellungen/Apps“ einsehen. Einen informativen Gesamt-Überblick über die genutzten Funktionen aller Apps gibt jedoch das F-Froid-Programm Permissions. Hier sind problematische Berechtigungen farblich markiert, und mit nur einem Klick erfährt man, welche Apps beispielsweise auf den Standort, die Kontakteliste, die Emails oder den privaten Kalender zugreifen. Und so kann man sich überprüfen: Muss eine Tastatur-App wirklich eine Anrufliste lesen? Oder eine Scanner-App auf die Telefon-Funktion zugreifen?
Wenn es nur eine Spiele-App ist, oder eine simulierte Taschenlampe, dann sollte man ein problematisches Programm deinstallieren. Aber was ist mit einem Programm, das man braucht, beispielsweise einem Videoplayer, der neben vielen nützlichen Funktionen auch die Telefonliste einsehen will? Wie kann man diese Funktion blockieren? Solange das Gerät nicht gerootet ist, gibt es dafür nur einen brauchbaren Weg. Man muss den Apk-File einer Applikation vom Mobilphone auf einen Computer übertragen, dort mit speziellen Tools die Berechtigungen in der Datei AndroidManifest.xml bearbeiten, und dann den geänderten Apk-File vom Computer wieder zum Mobilphone schieben und dort neu installieren. Das ist etwas aufwendig, und mancher wird sich auch scheuen, mit einer Kommandozeile zu arbeiten, aber es kann nicht viel schief gehen, da die Bearbeitung auf einem zweiten Gerät passiert und jeder Schritt rückgängig zu machen ist.
Zunächst gilt es, den Computer vorzubereiten: Man versichert sich, dass auf dem Windows-Computer das Java Runtime Environment (JRE) installiert ist. Dann lädt man von dieser Webseite die beiden Zip-Dateien apktool1.5.2.tar.bz2 und pktool-install-windows-r05-ibot.tar.bz2 herunter, dekomprimiert sie (z.B mit 7-Zip) und schiebt die Dateien aapt.exe, apktool.bat and apktool.jar in ein neues Verzeichnis (mit den Namen C:\apktool). Danach lädt man von hier die Zip-Datei SignApk.zip, dekompriniert sie, und schiebt die Dateien signapk.jar, certificate.pem und key.pk8 ebenfalls in das Verzeichnis C:\apktool.
Anschliessend macht man innerhalb des Verzeichnisses eine Kopie der Batchdatei apktool.bat, nennt diese Kopie um in signapk.bat, öffnet sie mit einem Texteditor, löscht den Inhalt der dritten Zeile und schreibt stattdessen diesen Befehl hinein:
java -jar signapk.jar certificate.pem key.pk8 %1 %2 %3 %4 %5 %6 %7 %8 %9
Dann verfasst man als Erinnerungstütze eine Datei Hilfe.txt mit den Befehlen.
Und als letztes verbindet man das Android-Gerät per USB-Kabel mit den Computer und kopiert aus dem Verzeichnis /system/framework/ des Android-Gerätes die Datei framework-res.apk in das Verzeichnis c:\apktool des Computers. Damit ist das Tool-Paket zum Verändern einsatzbereit.
Die Apk-Files, die verändert werden sollen, kopiert man ebenfalls über das USB-Kabel in das apktool-Verzeichnis des Computers. Nun gibt man unten am Windows-Menü in die Kommando-Box die zwei Befehle zum STARTEN ein, nach jedem Befehl ist eine Bestätigung mit der Enter-Taste notwendig. Danach kommt der im Hilfe.txt genannte Befehl zum FRAMEWORK INSTALLIEREN. Dann der Befehl zum DEKOMPILIEREN, dabei wird der Platzhalter [NAME] durch den Namen des Apk-Files ersetzen, der verändert werden soll. Nach jeder Befehlseingabe antwortet das Tool, was es gemacht hat, und man erkennt, ob es gut gelaufen ist.
Nun kommt die Etappe der Bearbeitung der Permissions/Berechtigungen. Das Fenster mit dem Kommandotool sollte man dabei nicht schliessen. Im Windows-Datei-Explorer ist in c:\apktool ein neues Unterverzeichnis mit dem Namen des Apk-Files zu sehen. Dort sind die dekompilierten Dateien. Uns interessiert jetzt nur die Datei AndroidManifest.xml. Sie lässt sich durch Rechtsklick mit dem Texteditor bearbeiten.Gleich zu Beginn der XML-Datei findet man die Zeilen mit
<uses-permission android:name=“android.permission.xxxxxxx />.
Will man eine Erlaubnis blockieren, so kann man diese auskommentieren, und zwar mit diesen Zeichen:
<!- – <uses-permission android:name=“android.permission.xxxxxxx /> – ->
Das ist besser als die Zeile zu löschen, so bleibt sichtbar, was deaktiviert wurde, und man kann es auch, falls notwendig, wieder aktivieren. Sind also alle kritischen Permissions auskommentiert, muss man nur noch die geänderte XML-Datei speichern.
Nun muss man die Apk-Datei wieder zusammenbauen, man gibt dazu im Kommandotool-Fenster den Befehl zum REKOMPILIEREN ein, was der [VERZEICHNIS-NAME] ist, ist klar, den Platzhalter [TRANSIT-NAME] kann man durch einen x-beliebigen kurzen Apk-Namen ersetzen. Danach erfolgt als zweiter Schritt der Befehl zum SIGNIEREN, die Ausgangs-Datei nutzt den Transitnamen, die signierte Ziel-Datei mit dem Platzhalter [NAME] den ursprünglichen Namen der Apk-Datei (inklusive Versionsnummer), nun ergänzt durch den Anhang _signed.apk . Die Datei mit dem Transitnamen löscht man am besten sofort nach einem erfolgreichen Signieren, damit alles übersichtlich bleibt. Und nun haben wir im Verzeichnis c:\apktool zwei apk-Dateien gleichen Namens, die ursprüngliche Datei und die in den Permissions veränderte und neu signierte apk-Datei mit dem Anhang _signed.apk. Man sieht, das Ganze wirkt ein wenig fremd, ist aber garnicht so kompliziert. Und es scheint mir einfacher als das Arbeiten mit der Eingabemaske in der Variante Android Multitool.
Zum Abschluss schiebt man die neue, veränderte Apk-Datei per USB-Kabel auf das Android-Gerät, de-installiert die alte Apk-Datei auf dem Android-Gerät und installiert dort die verbesserte Apk-Datei. Einfach aktualisieren und überschreiben wie bei einem Update, das funktioniert nicht. Denn durch die Bearbeitung des AndroidManifest.xml hat die Apk-Datei eine neue Signierung erhalten und darum muss man auch in Zukunft, wenn man diese App aktualisieren will, die neuen Versionen ebenfalls wiederum mit dem gleichen Prozess: dekompilieren, die Berechtigungen festlegen, kompilieren, signieren. Das ist der Nachteil, der Arbeitsaufwand: man muss jede der bearbeiteten Apps manuell updaten. Und darum sollte man sich auch vorher genau überlegen, bei welchen Apps der Arbeitsaufwand des Modifizierens lohnt und wie oft man eine Aktualisierung vornehmen will.