So ändern Sie Spieldateien auf Android. Grundlagen der Bearbeitung von Android-Systemanwendungen (apk)

Bearbeitung Systemanwendungen Android wird am häufigsten ausgeführt, wenn der Benutzer eines Smartphones, Tablets oder eines anderen von diesem Betriebssystem gesteuerten Geräts den Strom nicht mehr erfüllt Aussehen Programme, die vom Hersteller oder Verkäufer auf dem Gerät installiert wurden. Ein weiterer Grund kann die Notwendigkeit sein, nicht nur Änderungen am Grafikdesign von Android-Anwendungen vorzunehmen, sondern auch die Position verschiedener Elemente und die Leistung grundlegender Funktionen zu beeinflussen.

Um Änderungen am Code vorzunehmen, sind elementare Programmierkenntnisse in fast jeder Sprache (vorzugsweise Java und C++) erforderlich. Um Grafiken zu ersetzen, reichen direkte Hände und die Fähigkeit, in einem Grafikeditor zu arbeiten.

Zunächst sollten Sie entscheiden, ob Sie nur die Grafiken in Android-Anwendungen ersetzen müssen oder ob Sie die Anordnung von Elementen im System ändern und tiefere Änderungen im Code vornehmen müssen. Davon hängen weitere Schritte ab, die entweder das Arbeiten mit der Anwendung als Archiv oder deren vollständige Zerlegung und Bearbeitung beinhalten.

Ändern von Grafiken in Android-Systemanwendungen

Um die Originalgrafiken einfach zu ersetzen oder zu modifizieren (Schaltflächenfarben ändern, Bilder neu zeichnen usw.), reicht es aus, ein Standard-WinRAR-Archivierungsprogramm auf Ihrem Computer zu haben. Gleichzeitig muss der Benutzer „root“-Rechte auf dem Gerät haben (ähnlich wie bei Konto Administrator unter Windows), und es ist auch wünschenswert, eine alternative Wiederherstellung (CWM) und einen Root-Explorer zu haben (um direkt auf das Android-Dateisystem im Gerät selbst zuzugreifen).

Zunächst müssen Sie das USB-Debugging im Gerät aktivieren, es dann mit einem USB-Kabel an den Computer anschließen und die erforderlichen Treiber installieren. Normalerweise befinden sie sich auf einer virtuellen Festplatte, die angezeigt wird, wenn sie mit einem Computer verbunden ist.

Dann müssen Sie auch das ADB-Plugin für den Dateimanager aus dem Internet herunterladen. Mit diesem Plugin können Sie das gesamte Android-System als verbundenes Laufwerk mit Ordnern anzeigen. Alle Systemanwendungen befinden sich unter /system/app und /system/framework. Wenn Sie die gewünschte Anwendung gefunden haben, kopieren Sie sie einfach auf Ihren Computer. Wenn das Plugin nicht installiert ist, können Sie den Root-Explorer verwenden, um die Anwendung mit der APK-Erweiterung auf eine austauschbare SD-Karte und dann von dort auf Ihren Computer zu kopieren.

Nach dem Kopieren gewünschte Anwendung Sie können mit der Bearbeitung von Grafiken beginnen. Übrigens werden alle Bilder in Android-Anwendungen gespeichert png-Format, die von jedem Grafikeditor leicht geöffnet werden kann. Wenn Sie die Anwendungsdatei mit WinRAR öffnen, sehen Sie eine Reihe von Ordnern. Uns interessiert nur der res-Ordner, in dem sich wiederum viel befindet verschiedene Ordner. Von diesen werden nur diejenigen benötigt, die das Wort "drawable" in ihrem Namen haben.

Erinnern wir uns nun an unseren Gerätetyp und seine Bildschirmauflösung. Wenn es sich um ein Smartphone handelt und die Auflösung 240 x 320 beträgt, interessieren uns hauptsächlich die drawable- und drawable-ldpi-Ordner. Bei einer Auflösung von 320 x 480 die Ordner drawable bzw. drawable-mdpi und bei der Auflösung 480 x 800 die Ordner drawable und drawable-hdpi. Daneben gibt es in der Regel auch Ordner mit dem Wort „Land“ im Namen – das sind Grafiken für den Hochformatmodus, d.h. wenn das Gerät gekippt wird.

Wenn Sie ein Tablet in Ihren Händen halten, interessieren uns nur die drawable- und drawable-mdpi-Ordner bei jeder Bildschirmauflösung.

Indem Sie die ausgewählten Ordner auf Ihren Computer kopieren, können Sie die Originalbilder durch die gewünschten und optisch ansprechenden Bilder ersetzen oder neu einfärben. Besonderes Augenmerk sollten Sie auf Bilder mit einer Auflösung von 9.png legen. Tatsache ist, dass sich entlang des Umfangs eines solchen Bildes ein spezieller Rahmen mit einer Breite von einem Pixel und speziellen Markierungen befindet, deren Integritätsverletzung zu einem Ausfall der Anwendung führt. Daher ist beim Bearbeiten solcher Dateien besondere Vorsicht geboten.

Nachdem Sie den Ordner bearbeitet haben, müssen Sie ihn wieder in das Archiv hochladen, bei dem es sich um die Anwendung selbst mit der Erweiterung apk handelt. In diesem Fall muss in WinRAR die Option „keine Komprimierung“ ausgewählt werden.

Die korrigierte Anwendung wird entweder mit dem Root-Explorer zurück auf das Gerät heruntergeladen (zuerst wird die Datei auf die SD-Karte kopiert und von dort auf das Gerät) oder nach dem Beenden der Wiederherstellung - sofort vom Computer auf das / system / app oder /system/framework-Ordner. Als nächstes müssen Sie die Dateiberechtigungen mit den entsprechenden Optionen im Root-Explorer oder dem ADB-Plugin festlegen. Sie müssen im Format 644 vorliegen Nach dem Neustart des Geräts können Sie das Ergebnis der aktualisierten Anwendung sehen.

Bearbeiten des Quellcodes von Systemanwendungen

Etwas mehr Aufwand ist erforderlich, um den Quellcode von Systemanwendungen zu bearbeiten. Um die Anwendung zu disassemblieren und zu erstellen, nachdem Sie Änderungen daran vorgenommen haben, müssen Sie einige der folgenden Schritte ausführen.

1) Installieren Sie das erforderliche Softwarepaket auf dem Computer in ihrem letzte Version: Java SE Runtime Environment und Android SDK Windows (Programme zum Arbeiten mit Anwendungen und ihren Komponenten), APKtool oder APKManager oder Firmware_tool (eines von drei Programmen zum Disassemblieren und Dekompilieren von Systemanwendungen), Editor NotePad ++ (zum Vornehmen von Änderungen an Quelle Android-System-Apps).

2) Aktivieren Sie "USB-Debugging" im Gerät, schließen Sie es mit einem USB-Kabel an den Computer an und installieren Sie die erforderlichen Treiber, um mit dem Gerät zu arbeiten.

3) Wenn Sie eines der oben genannten Programme zum Arbeiten mit Anwendungscode verwenden, müssen Sie den Ordner / system / framework (vollständig) vom Telefon in den entsprechenden Ordner der Programm- und Systemanwendungen aus dem Ordner / system / app extrahieren. Beispielsweise müssen für das Programm Firmware_tool Dateien vom Telefon in den Ordner C: Firmwaretoolfw_project1_source2_system.img_unpacked in den entsprechenden Unterordnern kopiert werden (Anwendungen in den App-Ordner, Dateien aus dem Framework in den Framework-Ordner). Wenn Sie sowohl dieses als auch andere Programme verwenden, lesen Sie unbedingt deren Anweisungen.

4) Installieren Sie das "Referenzframework", d.h. ein Regelwerk, nach dem die Dekompilierung (d. h. Code-Disassemblierung) und Kompilierung (d. h. Code-Assemblierung) von Anwendungen durchgeführt wird.

Damit ist die Vorbereitung auf die Arbeit mit Systemanwendungen abgeschlossen.

Das Entladen von Anwendungen vom Gerät und das erneute Laden erfolgt ähnlich wie im Abschnitt „Grafiken in Android-Systemanwendungen ändern“ beschrieben.

Das Bearbeiten des Android-Anwendungscodes erfolgt normalerweise mit dem Editor NotePad ++ - einem der bequemsten Texteditoren, der die Option bietet, die Syntax der ausgewählten Programmiersprache hervorzuheben. In der Regel können Sie bei der Bearbeitung auch Grafiken nebenbei über die ausgewählten verändern grafischer Editor.

Nach Abschluss der Bearbeitung wird die geänderte Anwendung wieder in das Gerät geladen, und das Gerät selbst muss neu gestartet werden. Fortgeschrittenere Editoren zum Debuggen von Anwendungen vor dem Herunterladen auf das Gerät verwenden verschiedene Emulatoren, z. B. Eclipse von Google.

Das bin ich nochmal und meine Anleitungen für Teekannen und Kaffeekannen mit Bildern.

Dieses Mal werde ich detailliert auf den Ersatz eingehen Systemkomponenten Android OS am Beispiel der Installation einer Änderung der Statusleiste.

Android ist ein kleines Linux. Beim Ersetzen von Dateien müssen einige Regeln beachtet werden, damit das Telefon nicht zu einem Ziegelstein wird, der nur durch ein vollständiges Flashen mit dem Verlust aller Daten aus dem internen Speicher des Geräts wiederbelebt werden kann. Interne Partitionen sind auf Flash-Laufwerken in einem anderen Dateisystem als FAT32 formatiert. Die Dateieigenschaften speichern unter anderem Berechtigungen für verschiedene Benutzergruppen (Dateieigentümer, Dateieigentümergruppe, andere Benutzer). Beim Betrieb mit Systemdateien Sie müssen gespeichert werden, da das System beim Booten möglicherweise einfach nicht auf sie zugreifen und nicht normal booten kann.
Beginnen wir mit dem Toolkit.

Wir brauchen:

  • Ein Dateimanager, der mit Root-Rechten und Dateiberechtigungen umzugehen weiß. Root Explorer ist am besten (du hast ihn gekauft, oder?)
  • Die modifizierte Datei selbst, die wir an die Stelle der Systemdatei setzen wollen (Link am Ende des Artikels).

Jetzt verwenden wir eine der praktischen Funktionen Root-Explorer. Tippen wir lange auf die gewünschte Datei, um das Kontextmenü aufzurufen

Und klicken Sie auf den Artikel " Zippen Sie diese Datei", um die Datei in einem Zip-Archiv auf der SD-Karte zu speichern. Nach dem Komprimieren erhalten wir folgende Meldung:

Drücken Sie den Knopf " bleibe"um im Ordner zu bleiben und noch etwas zu tun.

Jetzt ist alles bereit, um die Datei zu ersetzen.
Ich habe bereits über die Zugriffsrechte für jede Datei gesprochen. Um sie in einer neuen Datei neu zu erstellen, müssen Sie sie zuerst von der alten aus betrachten. Sie werden durch eine Reihe von Zeichen "rwxrwxrwx" dargestellt. 1. Triade - Rechte des Eigentümers, 2. - Gruppen des Eigentümers, 3. - alle anderen Benutzer. Unsere Datei hat "rw-r--r--"-Berechtigungen.

Gehen Sie nun auf die SD-Karte, suchen Sie dort die geänderte Datei und wählen Sie den Punkt " Kopieren", aber wir haben es nicht eilig, sofort den Ordner " / system / app" auszuwählen, da wir das System sofort beschädigen. Stattdessen kopieren wir die Datei in einen speziellen Ordner für temporäre Dateien " / data / local / tmp " , um die Datei in eine Form zu bringen, die das System übernimmt.
Rufen Sie zunächst das Kontextmenü der Datei auf und wählen Sie den Punkt „ Umbenennen“ und geben Sie den Dateinamen „ SystemUI.apk“ ein. Richtig, denn unter Linux kommt es auf die Groß- und Kleinschreibung der Buchstaben im Namen an, d.h. „ systemui.apk“ und „ SystemUI.apk“ sind unterschiedliche Dateien.
Als nächstes müssen Sie die Berechtigungen für die Datei ändern, da sie jetzt mit ziemlicher Sicherheit falsch eingestellt sind. Rufen Sie dazu erneut mit einem langen Tap das Kontextmenü der Datei auf und wählen Sie den Punkt " Berechtigungen". Für unseren Wert "rw-r--r--" sollten die Flags wie folgt gesetzt werden:

Drücken Sie " OK" und rufen Sie erneut das Kontextmenü auf. Jetzt müssen wir den Besitzer und die Gruppe für diese Anwendung ändern. Wählen Sie dazu den Punkt " Besitzer wechseln". Ein Fenster mit Informationen zum aktuellen Eigentümer der Datei wird angezeigt.
Hier ist ein kleiner Exkurs notwendig.
Im Ordner „/system/app“ gehören alle Dateien dem Benutzer „root“ (uid=0) und der Gruppe „root“ (gid=0), und im Ordner „/system/framework“ dem Benutzer „system " (gid=1000) besitzt und die Gruppe "system" (gid=1000).
Stellen Sie basierend auf dem Vorstehenden die gewünschten Werte ein und klicken Sie auf " OK".
Und zum dritten Mal rufen wir das Kontextmenü für die Datei auf und wählen den Punkt " Kopieren" und gehen Sie im Kopierdialog in den Ordner "/system/app". Klicken Sie nun mutig auf " Einfügen„Und lesen Sie aufmerksam weiter.
Fast sofort meldet das System, dass der Statusleistenprozess abrupt beendet wurde, und bietet an, ihn zu starten. Alle Versuche werden fehlschlagen. Zwischen dem Erscheinen von Fenstern müssen Sie Zeit haben, um eine Reihe von Aktionen auszuführen. Bevor Sie die Taste drücken, müssen Sie das Menü zum Ausschalten des Geräts aufrufen, es wird unter einer Warnung angezeigt. Jetzt müssen Sie Ihren Finger ungefähr auf der linken Seite der Taste platzieren. Jetzt müssen Sie sehr schnell dreimal mit Ihrem Finger klicken, um Zeit zu haben, die Warnung zu schließen, das Element zum Herunterfahren auszuwählen und Ihre Absichten zu bestätigen.
Jetzt warten wir darauf, dass sich das Telefon ausschaltet, starten Sie es neu und genießen Sie das Ergebnis oder genießen Sie es nicht und suchen Sie nach Fehlern.

Manchmal sind einige Anwendungen auf Android aus irgendeinem Grund nicht für den Benutzer geeignet. Ein Beispiel ist lästige Werbung. Und es passiert so - jeder ist gut im Programm, aber nur die Übersetzung darin ist entweder krumm oder fehlt völlig. Oder zum Beispiel das Programm testen und bekommen Vollversion Es gibt keine Möglichkeit. Wie kann man die Situation ändern?

Einführung

In diesem Artikel werden wir darüber sprechen, wie man ein APK mit einer Anwendung zerlegt, seine interne Struktur betrachtet, den Bytecode zerlegt und dekompiliert und auch versucht, einige Änderungen an Anwendungen vorzunehmen, die uns diesen oder jenen Nutzen bringen können.

Um all dies alleine zu tun, benötigen Sie zumindest Grundkenntnisse der Java-Sprache, in der Android-Anwendungen geschrieben sind, und der XML-Sprache, die überall in Android verwendet wird - von der Beschreibung der Anwendung selbst und ihrer Zugriffsrechte bis hin Speichern von Zeichenfolgen, die auf dem Bildschirm angezeigt werden. Sie müssen auch in der Lage sein, mit spezialisierter Konsolensoftware umzugehen.

Was ist also das APK-Paket, in dem absolut alle Software für Android verteilt wird?

Anwendungsdekompilierung

In dem Artikel haben wir nur mit zerlegtem Anwendungscode gearbeitet, aber wenn Sie größere Änderungen an großen Anwendungen vornehmen, wird es viel schwieriger, den kleinen Code zu verstehen. Glücklicherweise können wir den Dex-Code in Java-Code dekompilieren, der, obwohl er nicht original und nicht zurückkompilierbar ist, viel einfacher zu lesen und die Logik der Anwendung zu verstehen ist. Dazu benötigen wir zwei Werkzeuge:

  • dex2jar - Übersetzer von Dalvik-Bytecode zu JVM-Bytecode, auf dessen Grundlage wir Java-Code erhalten können;
  • jd-gui ist selbst ein Decompiler, mit dem Sie lesbaren Java-Code aus JVM-Bytecode erhalten können. Alternativ können Sie Jad (www.varanecas.com/jad) verwenden; Obwohl es ziemlich alt ist, generiert es in einigen Fällen besser lesbaren Code als Jd-gui.

Sie sollten so verwendet werden. Zuerst starten wir dex2jar und geben den Pfad zum apk-Paket als Argument an:

%dex2jar.sh mail.apk

Als Ergebnis erscheint das Java-Paket mail.jar im aktuellen Verzeichnis, das bereits in jd-gui geöffnet werden kann, um den Java-Code anzuzeigen.

APK-Pakete arrangieren und erhalten

Paket Android Apps, ist eigentlich eine normale ZIP-Datei, für deren Inhalt und Entpacken keine speziellen Werkzeuge erforderlich sind. Es reicht aus, einen Archivierer zu haben - 7zip für Windows oder die Konsole zum Entpacken unter Linux. Aber das ist über die Verpackung. Was ist da drin? Im Inneren haben wir im Allgemeinen die folgende Struktur:

  • META-INF/- enthält digitales Zertifikat Anwendung, die ihren Ersteller zertifiziert, und die Prüfsummen der Paketdateien;
  • res/ - verschiedene Ressourcen, die die Anwendung bei ihrer Arbeit verwendet, wie etwa Bilder, eine deklarative Beschreibung der Schnittstelle und andere Daten;
  • AndroidManifest.xml- Beschreibung der Anwendung. Dazu gehört zum Beispiel eine Liste der erforderlichen Berechtigungen, erforderlich Android-Version und erforderliche Bildschirmauflösung;
  • Klassen.dex- kompilierter Anwendungs-Bytecode für die virtuelle Dalvik-Maschine;
  • Ressourcen.arsc- auch Ressourcen, aber anderer Art - insbesondere Strings (ja, diese Datei kann zur Russifizierung verwendet werden!).

Die aufgelisteten Dateien und Verzeichnisse befinden sich, wenn nicht in allen, dann vielleicht in der überwiegenden Mehrheit der APKs. Es gibt jedoch noch ein paar weniger gebräuchliche Dateien/Verzeichnisse, die es wert sind, erwähnt zu werden:

  • Vermögenswerte- Analogon von Ressourcen. Der Hauptunterschied besteht darin, dass Sie für den Zugriff auf eine Ressource ihre Kennung kennen müssen, während die Liste der Assets dynamisch mit der Methode AssetManager.list() im Anwendungscode abgerufen werden kann;
  • lib- native Linux-Bibliotheken, die mit Hilfe von NDK (Native Development Kit) geschrieben wurden.

Dieses Verzeichnis wird von Spieleherstellern verwendet, um ihre in C/C++ geschriebene Spiele-Engine dort abzulegen, sowie von Entwicklern von Hochleistungsanwendungen (z. Google Chrome). Habe das Gerät verstanden. Aber wie bekommt man die Paketdatei der Anwendung von Interesse? Da es ohne Rooten nicht möglich ist, APK-Dateien vom Gerät zu bekommen (sie befinden sich im /data/app-Verzeichnis), und Rooten nicht immer ratsam ist, gibt es mindestens drei Möglichkeiten, die Anwendungsdatei auf Ihren Computer zu bekommen:

  • APK-Downloader-Erweiterung für Chrome;
  • Echte APK Leecher-App;
  • verschiedene Datei-Hosting und Warezniki.

Welche man verwendet, ist Geschmackssache; Wir ziehen es vor, separate Anwendungen zu verwenden, daher werden wir die Verwendung von Real APK Leecher beschreiben, zumal es in Java geschrieben ist und dementsprechend sogar unter Windows funktioniert, sogar unter Nix.

Nach dem Start des Programms müssen Sie drei Felder ausfüllen: E-Mail, Passwort und Geräte-ID - und eine Sprache auswählen. Die ersten beiden sind die E-Mail und das Passwort Ihres Google-Kontos, das Sie auf dem Gerät verwenden. Die dritte ist die Geräte-ID, die Sie erhalten, indem Sie den Code auf dem Dialer wählen # #8255## und suchen Sie dann die Zeile Geräte-ID. Beim Ausfüllen müssen Sie nur die ID ohne das Android-Präfix eingeben.

Nach dem Ausfüllen und Speichern erscheint oft die Meldung „Fehler beim Verbinden mit dem Server“. Es hat nichts damit zu tun Google Play, ignorieren Sie es also ruhig und suchen Sie nach Paketen, die Sie interessieren.

Überprüfung und Änderung

Nehmen wir an, Sie haben ein Paket gefunden, an dem Sie interessiert sind, es heruntergeladen, entpackt ... und als Sie versucht haben, eine XML-Datei anzuzeigen, waren Sie überrascht, dass die Datei keine Textdatei ist. Wie dekompiliert man es und wie arbeitet man allgemein mit Paketen? Ist es wirklich notwendig, das SDK zu installieren? Nein, Sie müssen das SDK nicht installieren. Tatsächlich werden für alle Schritte zum Entpacken, Ändern und Verpacken von APK-Paketen die folgenden Tools benötigt:

  • ZIP-Archivierer zum Auspacken und Einpacken;
  • klein- Assembler/Disassembler des Bytecodes der virtuellen Dalvik-Maschine (code.google.com/p/smali);
  • angemessen- ein Tool zum Packen von Ressourcen (standardmäßig werden Ressourcen in binärer Form gespeichert, um die Anwendungsleistung zu optimieren). Im Android SDK enthalten, kann aber separat erworben werden;
  • Unterzeichner- Werkzeug für Digitale Unterschrift modifiziertes Paket (bit.ly/Rmrv4M).

Sie können alle diese Tools separat verwenden, dies ist jedoch unpraktisch, daher ist es besser, auf ihrer Basis erstellte Software höherer Ebene zu verwenden. Wenn Sie Linux oder Mac OS X verwenden, gibt es ein Tool namens apktool . Es erlaubt Ihnen, Ressourcen in ihre ursprüngliche Form zu entpacken (einschließlich binärer XML- und Arsc-Dateien), das Paket mit geänderten Ressourcen neu zu erstellen, aber es weiß nicht, wie Pakete signiert werden, sodass Sie das Unterzeichnerdienstprogramm manuell ausführen müssen. Trotz der Tatsache, dass das Dienstprogramm in Java geschrieben ist, ist seine Installation eher nicht standardmäßig. Zuerst müssen Sie die JAR-Datei selbst abrufen:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Wenn Sie unter Windows arbeiten, gibt es dafür ein hervorragendes Tool namens Virtual Ten Studio , das auch all diese Tools (einschließlich apktool selbst) sammelt, aber anstelle einer CLI-Oberfläche dem Benutzer eine intuitive grafische Oberfläche zur Verfügung stellt Führen Sie Vorgänge zum Entpacken, Disassemblieren und Dekompilieren mit wenigen Klicks durch. Bei diesem Tool handelt es sich um Donation-ware, dh es erscheinen manchmal Fenster mit dem Vorschlag, eine Lizenz zu erwerben, was aber letztendlich toleriert werden kann. Es macht keinen Sinn, es zu beschreiben, da Sie die Benutzeroberfläche in wenigen Minuten verstehen können. Aber apktool sollte aufgrund seiner Konsolennatur ausführlicher besprochen werden.


Ziehen Sie apktool-Optionen in Betracht. Kurz gesagt, es gibt drei Hauptbefehle: d (Decodieren), b (Build) und if (Framework installieren). Wenn mit den ersten beiden Befehlen alles klar ist, was macht dann der dritte, der Bedingungsoperator? Es entpackt das angegebene UI-Framework, das benötigt wird, wenn Sie ein Systempaket sezieren.

Betrachten Sie die interessantesten Optionen des ersten Befehls:

  • -s- Dex-Dateien nicht zerlegen;
  • -r- Ressourcen nicht entpacken;
  • -b- Fügen Sie keine Debugging-Informationen in die Ergebnisse der Disassemblierung der dex-Datei ein;
  • --Frame-Pfad- Verwenden Sie das angegebene UI-Framework anstelle des integrierten apktool. Betrachten Sie nun einige Optionen für den b-Befehl:
  • -f- Zwangsmontage ohne Änderungsprüfung;
  • -a- Geben Sie den Pfad zu aapt (dem Tool zum Erstellen des APK-Archivs) an, wenn Sie es aus irgendeinem Grund aus einer anderen Quelle verwenden möchten.

Die Verwendung von apktool ist sehr einfach, Sie müssen lediglich einen der Befehle und den Pfad zum APK angeben, zum Beispiel:

$ apktool d mail.apk

Danach erscheinen alle extrahierten und disassemblierten Paketdateien im E-Mail-Verzeichnis.

Vorbereitung. Werbungen ausschalten

Theorie ist natürlich gut, aber wozu braucht man sie, wenn man nicht weiß, wohin mit dem ausgepackten Paket? Versuchen wir, die Theorie zu unserem eigenen Vorteil anzuwenden, nämlich, wir modifizieren einige Software so, dass sie uns keine Werbung zeigt. Lassen Sie es zum Beispiel Virtual Torch sein - eine virtuelle Fackel. Für uns ist diese Software perfekt, weil sie voller lästiger Werbung ist und einfach genug ist, um sich nicht in der Code-Wildnis zu verlieren.


Laden Sie die Anwendung also mit einer der oben genannten Methoden vom Markt herunter. Wenn Sie sich für Virtuous Ten Studio entscheiden, öffnen Sie einfach die APK-Datei in der Anwendung und entpacken Sie sie, erstellen Sie dafür ein Projekt (Datei -> Neues Projekt) und wählen Sie dann Datei importieren aus dem Kontextmenü des Projekts. Wenn Sie sich für apktool entschieden haben, reicht es aus, einen Befehl auszuführen:

$ apktool d com.kauf.particle.virtualtorch.apk

Danach erscheint im Verzeichnis com.kauf.particle.virtualtorch ein Dateibaum, ähnlich dem im vorherigen Abschnitt beschriebenen, jedoch mit einem zusätzlichen smali-Verzeichnis anstelle von dex-Dateien und einer apktool.yml-Datei. Die erste enthält den disassemblierten Code der ausführbaren dex-Datei der Anwendung, die zweite enthält die Dienstinformationen, die von apktool benötigt werden, um das Paket wieder zusammenzusetzen.

Der erste Ort, an dem wir suchen müssen, ist natürlich AndroidManifest.xml. Und hier treffen wir sofort auf die folgende Zeile:

Es ist leicht zu erraten, dass sie dafür verantwortlich ist, der Anwendung Berechtigungen zur Nutzung der Internetverbindung zu erteilen. Wenn wir nur Werbung loswerden wollen, reicht es höchstwahrscheinlich aus, die Anwendung aus dem Internet zu verbannen. Lass es uns versuchen. Löschen Sie die angegebene Zeile und versuchen Sie, die Software mit apktool zu kompilieren:

$ apktool b com.kauf.particle.virtualtorch

Die resultierende APK-Datei erscheint im Verzeichnis com.kauf.particle.virtualtorch/build/. Es kann jedoch nicht installiert werden, da es keine digitale Signatur und Dateiprüfsummen hat (es hat einfach kein META-INF/-Verzeichnis). Wir müssen das Paket mit dem Dienstprogramm apk-signer signieren. Gestartet. Die Benutzeroberfläche besteht aus zwei Registerkarten - auf der ersten (Key Generator) erstellen wir Schlüssel, auf der zweiten (APK Signer) signieren wir. Um unseren privaten Schlüssel zu erstellen, füllen Sie die folgenden Felder aus:

  • Zieldatei- Keystore-Ausgabedatei; es speichert normalerweise ein Schlüsselpaar;
  • Passwort und Bestätigen Sie- Passwort für die Speicherung;
  • Alias- Name des Schlüssels im Repository;
  • Alias-Passwort und Bestätigen Sie- Geheimschlüssel-Passwort;
  • Gültigkeit- Gültigkeitsdauer (in Jahren). Der Standardwert ist optimal.

Die restlichen Felder sind im Allgemeinen optional - aber Sie müssen mindestens eines ausfüllen.


WARNUNG

Um eine Anwendung mit apk-signer zu signieren, müssen Sie das Android SDK installieren und angeben vollständigen Pfad davor in den App-Einstellungen.

Alle Informationen dienen nur zu Informationszwecken. Weder die Herausgeber noch der Autor sind für mögliche Schäden verantwortlich, die durch die Materialien dieses Artikels verursacht werden.

Jetzt können Sie das APK mit diesem Schlüssel signieren. Wählen Sie auf der Registerkarte APK Signer die neu generierte Datei aus, geben Sie das Passwort, den Schlüsselalias und das Passwort dafür ein, suchen Sie dann die APK-Datei und klicken Sie mutig auf die Schaltfläche "Signieren". Wenn alles gut geht, wird das Paket unterschrieben.

DIE INFO

Da wir das Paket mit unserem eigenen Schlüssel signiert haben, wird es mit der ursprünglichen Anwendung in Konflikt geraten, was bedeutet, dass wir beim Versuch, die Software über den Markt zu aktualisieren, eine Fehlermeldung erhalten.

Nur Software von Drittanbietern benötigt eine digitale Signatur. Wenn Sie also installierte Systemanwendungen ändern, indem Sie sie in das Verzeichnis /system/app/ kopieren, müssen Sie sie nicht signieren.

Danach legen wir das Paket auf dem Smartphone ab, installieren es und führen es aus. Voila, die Anzeige ist weg! Stattdessen erschien jedoch eine Meldung, dass wir kein Internet haben oder nicht die entsprechenden Berechtigungen haben. Theoretisch könnte das reichen, aber die Meldung sieht lästig aus, und wir hatten ehrlich gesagt nur Glück mit einer blöden Bewerbung. Eine gut geschriebene Software wird höchstwahrscheinlich ihre Anmeldeinformationen klären oder nach einer Internetverbindung suchen und ansonsten einfach den Start verweigern. Wie in diesem Fall sein? Bearbeiten Sie natürlich den Code.

Typischerweise erstellen Anwendungsautoren spezielle Klassen zum Anzeigen von Werbung und rufen Methoden dieser Klassen während des Starts der Anwendung oder einer ihrer "Aktivitäten" (in einfachen Worten Anwendungsbildschirme) auf. Versuchen wir, diese Klassen zu finden. Wir gehen in das Verzeichnis smali, dann com (in org gibt es nur eine open Grafikbibliothek cocos2d), dann kauf (genau dort, denn das ist der Name des Entwicklers und sein gesamter Code steht dort) - und hier ist es, das Marketing-Verzeichnis. Darin finden wir eine Reihe von Dateien mit der Erweiterung smali. Dies sind Klassen, und die bemerkenswerteste von ihnen ist die Klasse Ad.smali, deren Name leicht zu erraten ist, dass sie Anzeigen anzeigt.

Wir könnten die Logik seiner Arbeit ändern, aber es wäre viel einfacher, Aufrufe an eine seiner Methoden dummerweise aus der Anwendung selbst zu entfernen. Daher verlassen wir das Marketing-Verzeichnis und gehen in das benachbarte Partikel-Verzeichnis und dann zu virtualtorch. besondere Aufmerksamkeit hier verdient die Datei MainActivity.smali. Dies ist eine Standard-Android-Klasse, die vom Android SDK generiert und als Einstiegspunkt für die Anwendung festgelegt wird (ähnlich wie Hauptfunktionen in C). Öffnen Sie die Datei zum Bearbeiten.

Darin befindet sich der kleine Code (lokaler Assembler). Es ist ziemlich verwirrend und aufgrund seiner Low-Level-Natur schwer zu lesen, daher werden wir es nicht untersuchen, sondern einfach alle Erwähnungen der Ad-Klasse im Code finden und auskommentieren. Wir fahren den String „Ad“ in die Suche ein und gelangen zu Zeile 25:

Feld Privatanzeige:Lcom/kauf/marketing/Ad;

Hier wird ein Feld Ad erstellt, um ein Objekt der Klasse Ad zu speichern. Wir kommentieren, indem wir das Zeichen ### vor die Zeile setzen. Wir setzen die Suche fort. Zeile 423:

Neue Instanz v3, Lcom/kauf/marketing/Ad;

Hier wird das Objekt erstellt. Wir kommentieren. Wir setzen die Suche fort und finden in den Zeilen 433, 435, 466, 468, 738, 740, 800 und 802 Aufrufe der Methoden der Ad-Klasse. Wir kommentieren. Sieht so aus, als wäre es das. Wir sparen. Jetzt muss das Paket wieder zusammengebaut und auf seine Leistung und das Vorhandensein von Werbung überprüft werden. Für die Reinheit des Experiments geben wir die aus AndroidManifest.xml entfernte Zeile zurück, sammeln das Paket, signieren es und installieren es.

Unser Meerschweinchen. Sichtbare Werbung

Op-pa! Die Werbung verschwand nur, während die Anwendung lief, blieb aber im Hauptmenü, das wir sehen, wenn wir die Software starten. Warten Sie also, aber der Einstiegspunkt ist die MainActivity-Klasse, und die Werbung verschwand, während die Anwendung ausgeführt wurde, blieb aber im Hauptmenü, also ist der Einstiegspunkt ein anderer? Um den wahren Einstiegspunkt aufzudecken, öffnen wir die Datei „AndroidManifest.xml“ erneut. Und ja, es enthält die folgenden Zeilen:

Sie sagen uns (und noch wichtiger, dem Android), dass die Aktivität mit dem Namen Start als Reaktion auf die Generierung der Absicht (Ereignis) android.intent.action.MAIN aus der Kategorie android.intent.category.LAUNCHER gestartet werden soll. Dieses Ereignis wird generiert, wenn Sie im Launcher auf das Anwendungssymbol tippen, und definiert somit den Einstiegspunkt, nämlich die Startklasse. Höchstwahrscheinlich hat der Programmierer zuerst eine Anwendung ohne Hauptmenü geschrieben, deren Einstiegspunkt die Standard-MainActivity-Klasse war, und dann ein neues Fenster (Aktivität) hinzugefügt, das das Menü enthält und in der Start-Klasse beschrieben ist, und es manuell zu einem Eintrag gemacht Punkt.

Wir öffnen die Datei Start.smali und suchen erneut nach der Zeile „Ad“, wir finden in den Zeilen 153 und 155 die Erwähnung der Klasse FirstAd. Es befindet sich auch im Quellcode und ist, dem Namen nach zu urteilen, für die Anzeige von Werbung auf dem Hauptbildschirm verantwortlich. Schauen wir weiter, es gibt eine Erzeugung einer Instanz der Klasse FirstAd und eine Absicht, je nach Kontext bezogen auf diese Instanz, und dann das Label cond_10, dessen bedingter Übergang genau vor der Erzeugung einer Instanz der Klasse erfolgt :

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

Wahrscheinlich ist das Programm irgendwie nach dem Zufallsprinzip berechnet, ob Anzeigen auf dem Hauptbildschirm angezeigt werden sollen, und springt andernfalls direkt zu cond_10. Ok, vereinfachen wir ihre Aufgabe und ersetzen den bedingten Übergang durch einen unbedingten:

#if-ne p1, v0, :cond_10 goto:cond_10

Es gibt keine weiteren Erwähnungen von FirstAd im Code, also schließen wir die Datei und bauen unsere virtuelle Fackel mit apktool neu zusammen. Auf Smartphone kopieren, installieren, ausführen. Voila, alle Anzeigen sind weg, herzlichen Glückwunsch an uns alle.

Ergebnisse

Dieser Artikel ist nur eine kurze Einführung in die Methoden zum Öffnen und Ändern von Android-Anwendungen. Viele Probleme blieben hinter den Kulissen, wie z. B. das Entfernen des Schutzes, das Analysieren von verschleiertem Code, das Übersetzen und Ersetzen von Anwendungsressourcen sowie das Ändern von Anwendungen, mit denen geschrieben wurde mit Android NDK. All dies zu verstehen, ist mit Grundkenntnissen jedoch nur eine Frage der Zeit.

In diesem Artikel erfahren Sie, woraus eine Android-Anwendung besteht, wie Sie eine APK-Datei öffnen und mit welchen Programmen.

Was ist eine APK-Datei?

APK-Format Betriebssystem Android, das zum Archivieren ausführbarer Anwendungsdateien verwendet wird, und der Name der Datei selbst können beliebig sein, aber die Erweiterung sollte nur wie .apk aussehen. APK-Analoga in anderen Betriebssystemen sind .msi in Windows, .sis in Symbian, .rpm oder .deb in Linux.

Mal sehen, was drin ist
Grundsätzlich ist die .apk ZIP-Archiv, sodass Sie sich das interne Gerät mit any ansehen können Dateimanager oder ein Archivierer wie WinRAR oder mobile Applikation Entdecken.





Gleichzeitig sollten Sie daran denken, dass Sie nur visuellen Zugriff auf interne Ressourcen erhalten und die Bearbeitungsmöglichkeiten äußerst begrenzt sind.
Betrachten Sie die Struktur
In der .apk sehen wir eine Reihe von Dateien und Ordnern, lassen Sie uns herausfinden, wofür sie sind:
  • AndroidManifest.xml ist eine Art "Reisepass" der Anwendung, aus dem Sie alle wichtigen Punkte, Anforderungen, Version, Berechtigungen und mehr entnehmen können.
  • META-INF diese Datei enthält Metadaten, d. h. Daten über Daten, Prüfsummen, Datenpfade, Ressourcenpfade und Prüfsummen, Zertifikate. Sie können diese Datei mit jedem öffnen Texteditor, aber Notepad++ wird empfohlen.
  • Der res-Ordner enthält alle grafischen Programmressourcen wie Symbole, Bilder, Texte, Elemente GUI. Sie können auch einfach auf den Ordner zugreifen.
  • klassen.dex - sofort Programmiercode Anwendungen laufen virtuelle Maschine Dalvik VM, Sie können nur sehen, was in dieser Datei enthalten ist, indem Sie .apk dekompilieren, wir werden darüber in anderen Artikeln sprechen. resources.arsc -kompiliert XML-Datei, enthält diese Datei Daten zu allen am Programm beteiligten Ressourcen.
  • lib - ein Ordner mit nativen Bibliotheken, auf deren Ressourcen nur mit speziellen Programmen zugegriffen werden kann. Auch in der APK kann es solche Dateien und Ordner wie com, org, udk geben, aber nicht immer.

Schauen wir uns nun die interne Struktur genauer an, dazu benötigen wir ein Decompiler-Programm, Java und eine APK-Datei. Das Hauptwerkzeug zum Zerlegen von .apk ist Apktool, aber dieses Programm funktioniert nur von der Leitung, was nicht sehr praktisch ist. Für eine schnellere und bequemere Analyse können Sie APKing verwenden, es ist immer noch das gleiche Apktool, aber mit der Möglichkeit, über das Kontextmenü zu arbeiten.
Und so installieren wir APKing als jede Anwendung für Windows und indem wir .apk auswählen, klicken wir mit der rechten Maustaste und gleichzeitig mit der Umschalttaste darauf, woraufhin wir Folgendes sehen:


Und wir wählen die erforderliche Aktion aus, zum Beispiel vollständig dekompilieren, dann schließt das Programm den Vorgang ab und erstellt einen Ordner mit demselben Namen.


Durch Öffnen des Ordners haben wir Zugriff auf alle Ressourcen der APK-Datei.


Das ist es Textdateien bearbeitet werden kann, unter Beachtung der Grundregeln können Sie das beliebte Programm Notepad ++ verwenden, z. B. AndroidManifest.xml betrachten

Apk Editor Pro, den Sie auf unserer Website für Android herunterladen können, ermöglicht es Ihnen, den Inhalt der Dateien jeder Anwendung zu hacken / zu ändern mobile Geräte und passen Sie es nach Ihren Wünschen an.

Besonderheiten

Das Programm ist ein professionelles Dienstprogramm, das in den Händen fortgeschrittener Benutzer zu einem leistungsstarken Werkzeug zum Bearbeiten von Anwendungen für Android werden kann. Die Funktionalität ist praktisch gleich Software für Personalcomputer.

Was kann dieses Dienstprogramm?

  1. Ändern (übersetzen) Sie die Namen anderer Anwendungen.
  2. Ändern Sie Architekturlayouts, Farben, Grafikeinstellungen (z. B. Symbolgröße).
  3. Sounddesign, Mediendateien ändern.
  4. Anzeigen entfernen.
  5. Sperrung bezahlter Inhalte umgehen.
  6. Verschieben Sie die Anwendung vom internen Speicher des Geräts auf die SD-Karte.
  7. Ändern Sie die Auflösung und mehr.

Um zu verstehen, wie man das Dienstprogramm verwendet, müssen Sie apk editor pro herunterladen und zum Menü gehen. Dann wählen Sie entweder installierte Anwendung auf Android bzw apk-Datei. Danach werden standardmäßig Daten geöffnet, die der Benutzer ändern kann:

  • Ressourcenbearbeitung;
  • Dateiersetzung;
  • allgemeine Redaktion;
  • Datenbearbeitung.

Das Programm fordert Sie auf, die geänderte Version zu installieren. Es funktioniert also nicht in allen Fällen alte Version manuell entfernt und neu installiert werden. Wählen Sie nach der Deinstallation den apk-Editor-Ordner (der Einfachheit halber können Sie ES Explorer verwenden) unter den Programmen auf Android und suchen Sie die geänderte Anwendungsdatei, installieren Sie sie auf dem Gerät.

Das Programm ist anders Benutzerfreundliches Bedienfeld. Die Navigation ist recht einfach, aber der Benutzer muss über Grundkenntnisse in Englisch verfügen, um es richtig zu machen.

Vorteile und Nachteile

  1. Das Programm bietet dem Benutzer vielfältige Möglichkeiten zur individuellen Anpassung von Anwendungen.
  2. Im Menü befindet sich ein Hilfebereich, der viele Programmfunktionen des Editors einfach und ausführlich beschreibt. Daher müssen Benutzer, die weit vom Programmieren entfernt sind, nicht nach Beispielen und Bearbeitungsanweisungen auf Ressourcen von Drittanbietern suchen.
  3. Sie können das Programm kostenlos von unserer Website herunterladen.

Die Verwendung dieses Dienstprogramms erfordert einige Fähigkeiten und Kenntnisse. In den Händen eines unerfahrenen Benutzers kann die Bearbeitung zu Integritätsverletzungen führen Dateisystem, was schließlich dazu führt, dass Anwendungen abstürzen. Im Menü im Punkt Hilfe finden Sie Konvertierungsbeispiele mit Bildern und Tipps zur korrekten Verwendung von apk editor pro auf Android. Wenn Sie sich also mit diesem Programm befassen möchten, folgen Sie einfach den Anweisungen.

Der Editor ist ein ziemlich nützliches Werkzeug für diejenigen, die mit einer unbequemen Anwendungsoberfläche konfrontiert sind (keine russische Sprache, ständige Werbung, Banner usw.). Wenn Sie dieses Programm bereits verwendet haben, teilen Sie Ihre Eindrücke unten in den Kommentaren mit.



Wird geladen...
Spitze