J
JanF
Stamm-User
- 82
Hier eine kurze Anleitung, wie man mit dem apktool Apps ein wenig verändern kann, z.B. um sich unerwünschter Autostarts zu entledigen.
Was wird benötigt?
- apktool (android-apktool - A tool for reengineering Android apk files - Google Project Hosting)
- texteditor (ich benutze in Linux vim, ich glaube in Windows tuts das Notepad)
- keystore mit gültigem Zertifikat (erstellbar mit keytool)
- jarsigner
Die Schritte:
0. Lizenz prüfen
Sollte eigentlich selbstverständlich sein, dass ihr bevor Ihr Änderungen an einer App vornehmt prüft, ob es die Lizenzbedingungen der App auch hergeben, an ihr Änderungen vor zu nehmen.
1. Enpacken des .apk files
Zuerst ist es nötig, das .apk file zu entpacken, damit man es editieren kann. Hierzu dient das apktool:
2. Editieren der AndroidManifest.xml
Im entpackten Verzeichnis liegt nun die AndroidManifest Datei, die regelt, wie eine App ins System eingebunden ist. Diese kann man nun mit einem Texteditor - der keine Steuerzeichen für die Schriftgröße oder ähnliches setzt - editieren.
Interessant ist es <receiver> Elemente zu editieren. Aus ihnen kann man <intent-filter> -child nodes entfernen. Dabei ist zu beachten, dass man sie vom öffnen bis einschließlich dem Schließen (mit </intent-filter>) des Elements alles löscht. Eigentlich interessieren nur "broadcasts" also quasi Ergnisse, die vom System gesendet werden (wo der Name der Action des Intentfilters mit com.android beginnt). Denkbar wäre noch, dass eine App von einer anderen laufenden gestartet wird, dann muss man genauer kucken. Löscht man zu viel kann man zerstören, dass die App eigene Ereignisse korrekt verarbeitet.
Manche mögen sich auch für die Berechtigungen Interessieren. Diese kann man dadurch entziehen, dass man die <uses-permissions> Elemente entfernt.
Achtung, wenn eine App im Code eine Berechtigung benutzt, die sie nicht (mehr) hat, fliegt ein Fehler. Wird dieser nicht von der App behandelt stürtzt sie unvermittelt ab. Aber auch wenn die App nicht abstürzt kann sie evtl. gewünschte oder essentielle Funktionen nicht durchführen oder läuft Fehlerhaft.
Nachdem das Manifest geändert wurde (Achtung, muss immernoch valide sein, also sorgfältig arbeiten) kann man sich jetzt wieder ein neues .apk file basteln:
3. Erstellen eines neuen .apk files
Mit dem apktool kann sich nun folgendermaßen ein neues .apk bauen:
Eine solches apk kann man in Android nicht installieren. Android läßt nur signierte files zur Installation zu. Daher muss man noch schnell signieren:
4. Signieren der App
Mit
Dieses File kann man nun installieren, wenn die App nicht bereits mit anderem Zertifikat installiert ist (wenn sie installiert war also erst deinstallieren) oder wenn sie einen User-namen hat, mit dem ein anderes Zertifikat verbunden ist (dann entsprechende Apps deinstallieren).
5. App Installieren
Einfach das neue .apk file aufs Telefon kopieren und mit einem Dateibrowser ausführen.
Viel Spaß beim Ausprobieren.
Was wird benötigt?
- apktool (android-apktool - A tool for reengineering Android apk files - Google Project Hosting)
- texteditor (ich benutze in Linux vim, ich glaube in Windows tuts das Notepad)
- keystore mit gültigem Zertifikat (erstellbar mit keytool)
- jarsigner
Die Schritte:
0. Lizenz prüfen
Sollte eigentlich selbstverständlich sein, dass ihr bevor Ihr Änderungen an einer App vornehmt prüft, ob es die Lizenzbedingungen der App auch hergeben, an ihr Änderungen vor zu nehmen.
1. Enpacken des .apk files
Zuerst ist es nötig, das .apk file zu entpacken, damit man es editieren kann. Hierzu dient das apktool:
Code:
apktool d [apk-Filename]
Im entpackten Verzeichnis liegt nun die AndroidManifest Datei, die regelt, wie eine App ins System eingebunden ist. Diese kann man nun mit einem Texteditor - der keine Steuerzeichen für die Schriftgröße oder ähnliches setzt - editieren.
Interessant ist es <receiver> Elemente zu editieren. Aus ihnen kann man <intent-filter> -child nodes entfernen. Dabei ist zu beachten, dass man sie vom öffnen bis einschließlich dem Schließen (mit </intent-filter>) des Elements alles löscht. Eigentlich interessieren nur "broadcasts" also quasi Ergnisse, die vom System gesendet werden (wo der Name der Action des Intentfilters mit com.android beginnt). Denkbar wäre noch, dass eine App von einer anderen laufenden gestartet wird, dann muss man genauer kucken. Löscht man zu viel kann man zerstören, dass die App eigene Ereignisse korrekt verarbeitet.
Manche mögen sich auch für die Berechtigungen Interessieren. Diese kann man dadurch entziehen, dass man die <uses-permissions> Elemente entfernt.
Achtung, wenn eine App im Code eine Berechtigung benutzt, die sie nicht (mehr) hat, fliegt ein Fehler. Wird dieser nicht von der App behandelt stürtzt sie unvermittelt ab. Aber auch wenn die App nicht abstürzt kann sie evtl. gewünschte oder essentielle Funktionen nicht durchführen oder läuft Fehlerhaft.
Nachdem das Manifest geändert wurde (Achtung, muss immernoch valide sein, also sorgfältig arbeiten) kann man sich jetzt wieder ein neues .apk file basteln:
3. Erstellen eines neuen .apk files
Mit dem apktool kann sich nun folgendermaßen ein neues .apk bauen:
Code:
apktool b [verzeichnisname des entpackten .apk files] [neuerName.apk]
4. Signieren der App
Mit
Code:
jarsigner -keystore [keystoreName] [neuerName.apk] [SignaturinhaberName im Keystore]
5. App Installieren
Einfach das neue .apk file aufs Telefon kopieren und mit einem Dateibrowser ausführen.
Viel Spaß beim Ausprobieren.
Zuletzt bearbeitet: