heim - Smart-TV
Wir öffnen, modifizieren und verpacken Android-Anwendungen. Wie öffne ich APK und wie bearbeite ich es? So bearbeiten Sie eine APK-Datei

Ich bin wieder da und meine Anleitungen für Teekannen und Kaffeekannen mit Bildern.

Dieses Mal werde ich ausführlich über den Austausch von Systemkomponenten des Android-Betriebssystems am Beispiel der Installation einer Statusleistenänderung sprechen.

Android ist ein bisschen Linux. Beim Ersetzen von Dateien müssen einige Regeln beachtet werden, damit das Telefon nicht zu einem Baustein 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 werden auf Flash-Laufwerken in einem anderen Dateisystem als FAT32 formatiert. Dateieigenschaften speichern unter anderem Berechtigungen für verschiedene Benutzergruppen (Dateieigentümer, Dateieigentümergruppe, andere Benutzer). Beim Arbeiten mit Systemdateien müssen diese gespeichert werden, da das System beim Laden möglicherweise einfach nicht auf sie zugreifen kann und möglicherweise nicht normal bootet.
Beginnen wir mit den Werkzeugen.

Wir brauchen:

  • Ein Dateimanager, der mit Root-Rechten und Dateiberechtigungen arbeiten kann. Der Root Explorer ist am besten (Sie haben ihn gekauft, oder?)
  • Die geänderte Datei selbst, die wir anstelle der Systemdatei einfügen möchten (Link am Ende des Artikels).

Jetzt nutzen wir eine der praktischen Funktionen des Root Explorers. Tippen wir lange auf die gewünschte Datei, um das Kontextmenü aufzurufen

Und klicken Sie auf den Punkt „ Zippen Sie diese Datei„um die Datei in einem Zip-Archiv auf der SD-Karte zu speichern. Nach der Archivierung erhalten wir folgende Meldung:

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

Jetzt ist alles bereit, die Datei zu ersetzen.
Ich habe bereits über die Zugriffsrechte jeder Datei gesprochen. Um sie in einer neuen Datei neu zu erstellen, müssen Sie sie zunächst aus der alten Datei betrachten. Sie werden durch eine Reihe von Symbolen „rwxrwxrwx“ dargestellt. 1. Triade – Eigentümerrechte, 2. – Eigentümergruppen, 3. – alle anderen Benutzer. Unsere Datei hat die Berechtigungen „rw-r--r--“.

Gehen Sie nun zur SD-Karte, suchen Sie dort die geänderte Datei und wählen Sie im Kontextmenü den Eintrag „ Kopieren", aber beeilen Sie sich nicht, sofort den Ordner "/system/app" auszuwählen, da wir das System sofort beschädigen. Kopieren Sie stattdessen die Datei in einen speziellen Ordner für temporäre Dateien "/data/local/tmp", um sie zu bringen Datei in ein Formular umwandeln, das vom System akzeptiert wird.
Rufen Sie zunächst das Kontextmenü der Datei auf und wählen Sie „ Umbenennen" und geben Sie den Dateinamen „SystemUI.apk“ ein. Das ist richtig, denn unter Linux kommt es auf die Groß-/Kleinschreibung der Buchstaben im Namen an, d. h. „systemui.apk“ und „SystemUI.apk“ sind unterschiedliche Dateien.
Als nächstes müssen Sie die Dateiberechtigungen ändern, da diese jetzt mit ziemlicher Sicherheit falsch eingestellt sind. Rufen Sie dazu erneut mit einem langen Tipp das Kontextmenü der Datei auf und wählen Sie den Punkt „ Berechtigungen". Für unseren Wert „rw-r--r--“ sollten die Kontrollkästchen wie folgt platziert werden:

Klicken " OK" und rufen Sie erneut das Kontextmenü auf. Nun müssen Sie den Besitzer und die Gruppe für diese Anwendung ändern. Wählen Sie dazu den Punkt " Besitzer wechseln". Es erscheint ein Fenster mit Informationen zum aktuellen Besitzer der Datei.
Hier müssen wir einen kleinen Exkurs machen.
Im Ordner „/system/app“ sind alle Dateien Eigentum des Benutzers „root“ (uid=0) und der Gruppe „root“ (gid=0), im Ordner „/system/framework“ der Benutzer „ system“ (gid=1000) gehört. und Gruppe „system“ (gid=1000).
Stellen Sie basierend auf dem oben Gesagten die erforderlichen Werte ein und klicken Sie auf „ OK".
Und zum dritten Mal rufen Sie 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 gerne auf " Paste" und lesen Sie weiter sorgfältig.
Das System informiert Sie fast sofort darüber, dass der Statusleistenvorgang plötzlich beendet wurde, und bietet an, ihn zu starten. Alle Versuche werden erfolglos sein. Zwischen dem Erscheinen der Fenster müssen Sie Zeit für eine Reihe von Aktionen haben. Bevor Sie die Taste drücken, müssen Sie das Menü aufrufen, um das Gerät auszuschalten; es erscheint eine Warnung. Jetzt müssen Sie Ihren Finger ungefähr auf der linken Seite der Taste platzieren. Jetzt müssen Sie dreimal schnell mit dem Finger klicken, damit Sie Zeit haben, die Warnung zu schließen, die Option zum Herunterfahren auszuwählen und Ihre Absichten zu bestätigen.
Jetzt warten wir, bis sich das Telefon ausschaltet, starten es neu und freuen uns über das Ergebnis oder genießen es nicht und suchen nach Fehlern.

Manchmal passen einige Anwendungen auf Android in irgendeiner Weise nicht zum Benutzer. Ein Beispiel ist aufdringliche Werbung. Und es kommt auch vor, dass das Programm für alle gut ist, aber die Übersetzung darin entweder schief ist oder ganz fehlt. Oder das Programm ist beispielsweise eine Testversion, es gibt jedoch keine Möglichkeit, die Vollversion zu erhalten. Wie kann man die Situation ändern?

Einführung

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

Um das alles selbst zu erledigen, benötigen Sie mindestens Grundkenntnisse der Java-Sprache, in der Android-Anwendungen geschrieben werden, und der XML-Sprache, die überall in Android verwendet wird – von der Beschreibung der Anwendung selbst und ihrer Zugriffsrechte bis hin zur Speicherung von Zeichenfolgen wird auf dem Bildschirm angezeigt. Sie benötigen außerdem die Fähigkeit, spezielle Konsolensoftware zu verwenden.

Was ist also ein APK-Paket, in dem absolut die gesamte Android-Software verteilt ist?

Dekompilierung der Anwendung

In diesem Artikel haben wir nur mit disassembliertem Anwendungscode gearbeitet, aber wenn größere Änderungen an großen Anwendungen vorgenommen werden, wird das Verständnis des Smali-Codes viel schwieriger. Glücklicherweise können wir den Dex-Code in Java-Code dekompilieren, der zwar nicht original ist und nicht zurückkompiliert wird, aber viel einfacher zu lesen und die Logik der Anwendung zu verstehen ist. Dazu benötigen wir zwei Werkzeuge:

  • dex2jar ist ein Übersetzer von Dalvik-Bytecode in JVM-Bytecode, auf dessen Grundlage wir Code in der Java-Sprache erhalten können;
  • jd-gui ist selbst ein Dekompiler, der es Ihnen ermöglicht, lesbaren Java-Code aus JVM-Bytecode zu erhalten. Alternativ können Sie Jad (www.varaneckas.com/jad) verwenden; Obwohl es ziemlich alt ist, generiert es in einigen Fällen besser lesbaren Code als JD-GUI.

So sollten sie genutzt werden. Zuerst starten wir dex2jar und geben als Argument den Pfad zum APK-Paket an:

% dex2jar.sh mail.apk

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

Zusammenstellung und Empfang von APK-Paketen

Ein Android-App-Paket ist im Wesentlichen eine normale ZIP-Datei, für deren Anzeige oder Extrahierung keine speziellen Tools erforderlich sind. Es reicht aus, einen Archivierer zu haben – 7zip für Windows oder die Konsole zum Entpacken unter Linux. Aber das ist schon die Hülle. Was ist da drin? Im Allgemeinen haben wir die folgende Struktur im Inneren:

  • META-INF/- enthält ein digitales Zertifikat der Anwendung, das ihren Ersteller identifiziert, sowie Prüfsummen der Paketdateien;
  • res/ – verschiedene Ressourcen, die die Anwendung bei ihrer Arbeit verwendet, wie z. B. Bilder, deklarative Beschreibung der Schnittstelle sowie andere Daten;
  • AndroidManifest.xml- Beschreibung der Anwendung. Dazu gehört beispielsweise eine Liste der erforderlichen Berechtigungen, der erforderlichen Android-Version und der erforderlichen Bildschirmauflösung;
  • class.dex- kompilierter Anwendungsbytecode für die virtuelle Dalvik-Maschine;
  • resources.arsc- ebenfalls 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 weitere, nicht so häufig vorkommende 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 deren Kennung kennen müssen. Die Liste der Assets kann jedoch dynamisch mithilfe der Methode AssetManager.list() im Anwendungscode abgerufen werden.
  • lib- Native Linux-Bibliotheken, die mit NDK (Native Development Kit) geschrieben wurden.

Dieses Verzeichnis wird von Spieleherstellern verwendet, die dort ihre in C/C++ geschriebenen Spiel-Engines ablegen, sowie von Entwicklern von Hochleistungsanwendungen (z. B. Google Chrome). Wir haben das Gerät herausgefunden. Aber wie erhalten Sie die Paketdatei der Anwendung, an der Sie interessiert sind? Da es ohne Root nicht möglich ist, APK-Dateien vom Gerät abzurufen (sie befinden sich im Verzeichnis /data/app) und Rooten nicht immer ratsam ist, gibt es mindestens drei Möglichkeiten, die Anwendungsdatei auf Ihren Computer zu übertragen:

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

Welches man verwendet, ist Geschmackssache; Wir bevorzugen die Verwendung separater Anwendungen und beschreiben daher die Verwendung von Real APK Leecher, insbesondere da es in Java geschrieben ist und dementsprechend sowohl unter Windows als auch unter Nix funktioniert.

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-Adresse und das Passwort Ihres Google-Kontos, das Sie auf dem Gerät verwenden. Der dritte ist die Gerätekennung und kann durch Eingabe des Codes auf dem Wählgerät abgerufen werden # #8255## und dann die Geräte-ID-Zeile finden. Beim Ausfüllen müssen Sie lediglich die ID ohne das Android-Präfix eingeben.

Nach dem Ausfüllen und Speichern erscheint häufig die Meldung „Fehler beim Herstellen einer Verbindung zum Server“. Es hat nichts mit Google Play zu tun, also ignorieren Sie es ruhig und suchen Sie nach Paketen, die Sie interessieren.

Anzeigen und Ändern

Nehmen wir an, Sie haben ein Paket gefunden, das Sie interessiert, haben es heruntergeladen, entpackt ... und als Sie versucht haben, eine XML-Datei anzuzeigen, waren Sie überrascht, dass es sich bei der Datei nicht um Text handelte. Wie dekompiliert man es und wie arbeitet man mit Paketen im Allgemeinen? Ist es wirklich notwendig, das SDK zu installieren? Nein, es ist überhaupt nicht notwendig, das SDK zu installieren. Tatsächlich erfordern alle Schritte zum Extrahieren, Ändern und Verpacken von APK-Paketen die folgenden Tools:

  • ZIP-Archiver zum Aus- und Einpacken;
  • klein- Bytecode-Assembler/Disassembler für die virtuelle Dalvik-Maschine (code.google.com/p/smali);
  • aapt- 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- ein Tool zum digitalen Signieren eines geänderten Pakets (bit.ly/Rmrv4M).

Sie können alle diese Tools separat verwenden, dies ist jedoch unpraktisch. Daher ist es besser, auf ihnen basierende Software auf höherer Ebene zu verwenden. Wenn Sie unter Linux oder Mac OS X arbeiten, gibt es ein Tool namens apktool. Es ermöglicht Ihnen, Ressourcen in ihrer ursprünglichen Form zu entpacken (einschließlich binärer XML- und ASC-Dateien) und ein Paket mit geänderten Ressourcen neu zu erstellen. Es weiß jedoch nicht, wie Pakete signiert werden, sodass Sie das Signer-Dienstprogramm manuell ausführen müssen. Obwohl das Dienstprogramm in Java geschrieben ist, ist seine Installation ziemlich ungewöhnlich. 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 Virtuous Ten Studio, das auch alle diese Tools (einschließlich apktool selbst) bündelt, dem Benutzer jedoch anstelle einer CLI-Schnittstelle eine intuitive grafische Oberfläche bietet, mit der Sie können Führen Sie Vorgänge zum Entpacken, Disassemblieren und Dekompilieren mit wenigen Klicks aus. Dieses Tool ist Donation-ware, d. h. manchmal erscheinen Fenster, in denen Sie aufgefordert werden, eine Lizenz zu erwerben, aber am Ende kann dies toleriert werden. Es hat keinen Sinn, es zu beschreiben, da Sie die Benutzeroberfläche in wenigen Minuten verstehen können. Aber apktool sollte aufgrund seines Konsolencharakters ausführlicher besprochen werden.


Schauen wir uns die Apktool-Optionen an. Kurz gesagt, es gibt drei grundlegende Befehle: d (Dekodieren), b (Build) und if (Framework installieren). Wenn mit den ersten beiden Befehlen alles klar ist, was macht dann die dritte, bedingte Anweisung? Es entpackt das angegebene UI-Framework, was in Fällen erforderlich ist, in denen Sie ein Systempaket zerlegen.

Schauen wir uns die interessantesten Optionen des ersten Befehls an:

  • -S- Dex-Dateien nicht disassemblieren;
  • -R- Ressourcen nicht auspacken;
  • -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 in apktool integrierten. Schauen wir uns nun einige Optionen für den b-Befehl an:
  • -F- Zwangsmontage ohne Überprüfung der Änderungen;
  • -A- Geben Sie den Pfad zu aapt (einem Tool zum Erstellen eines APK-Archivs) an, wenn Sie es aus irgendeinem Grund von einer anderen Quelle verwenden möchten.

Die Verwendung von apktool ist sehr einfach. Geben Sie dazu einfach einen der Befehle und den Pfad zum APK an, zum Beispiel:

$ apktool d mail.apk

Danach erscheinen alle extrahierten und disassemblierten Dateien des Pakets im Mail-Verzeichnis.

Vorbereitung. Werbung deaktivieren

Die Theorie ist natürlich gut, aber warum ist sie nötig, wenn wir nicht wissen, was wir mit dem ausgepackten Paket machen sollen? Versuchen wir, die Theorie zu unserem Vorteil anzuwenden, nämlich eine Software so zu modifizieren, dass sie uns keine Werbung anzeigt. Lassen Sie es zum Beispiel Virtual Torch sein – eine virtuelle Fackel. Für uns ist diese Software ideal, denn sie ist vollgestopft mit lästiger Werbung und zudem einfach genug, um sich nicht im Code-Dschungel zu verlieren.


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

$ 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 Datei apktool.yml. Der erste enthält zerlegten Code der ausführbaren Dex-Datei der Anwendung, der zweite enthält Serviceinformationen, die apktool benötigt, um das Paket wieder zusammenzusetzen.

Der erste Ort, an dem wir suchen sollten, ist natürlich AndroidManifest.xml. Und hier stoßen wir sofort auf folgende Zeile:

Es ist nicht schwer zu erraten, dass es dafür verantwortlich ist, der Anwendung Berechtigungen zur Nutzung der Internetverbindung zu erteilen. Wenn wir nur die Werbung loswerden wollen, müssen wir höchstwahrscheinlich nur die Anwendung aus dem Internet blockieren. Versuchen wir es. Wir löschen die angegebene Zeile und versuchen, die Software mit apktool zu erstellen:

$ apktool b com.kauf.particle.virtualtorch

Die resultierende APK-Datei erscheint im Verzeichnis com.kauf.particle.virtualtorch/build/. Es wird jedoch nicht möglich sein, es zu installieren, da es weder über eine digitale Signatur noch über Dateiprüfsummen verfügt (es verfügt lediglich über 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- Passwort für die Speicherung;
  • Alias- Name des Schlüssels im Speicher;
  • Alias-Passwort Und Bestätigen- Geheimschlüssel-Passwort;
  • Gültigkeit- Gültigkeitsdauer (in Jahren). Der Standardwert ist optimal.

Die übrigen Felder sind grundsätzlich optional – mindestens eines muss jedoch ausgefüllt werden.


WARNUNG

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

Alle Informationen dienen ausschließlich 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 die 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 ein, suchen Sie dann die APK-Datei und klicken Sie mutig auf die Schaltfläche „Signieren“. Wenn alles gut geht, wird das Paket signiert.

DIE INFO

Da wir das Paket mit unserem eigenen Schlüssel signiert haben, kommt es zu Konflikten mit der Originalanwendung. Wenn wir also versuchen, die Software über den Markt zu aktualisieren, erhalten wir eine Fehlermeldung.

Eine digitale Signatur ist nur für Software von Drittanbietern erforderlich. Wenn Sie also installierte Systemanwendungen ändern, indem Sie sie in das Verzeichnis /system/app/ kopieren, müssen Sie sie nicht signieren.

Laden Sie anschließend das Paket auf Ihr Smartphone herunter, installieren Sie es und starten Sie es. Voila, die Anzeige ist weg! Stattdessen erschien jedoch die Meldung, dass wir kein Internet haben oder nicht über die entsprechenden Berechtigungen verfügen. Theoretisch könnte das ausreichen, aber die Meldung sieht nervig aus, und um ehrlich zu sein, hatten wir einfach Glück mit einer dummen Anwendung. Normalerweise klärt geschriebene Software höchstwahrscheinlich ihre Anmeldeinformationen oder prüft, ob eine Internetverbindung besteht, und verweigert andernfalls einfach den Start. Wie soll es in diesem Fall sein? Bearbeiten Sie natürlich den Code.

Typischerweise erstellen Anwendungsautoren spezielle Klassen zum Anzeigen von Werbung und rufen Methoden dieser Klassen auf, wenn die Anwendung oder eine ihrer „Aktivitäten“ (einfach ausgedrückt: Anwendungsbildschirme) gestartet wird. Versuchen wir, diese Klassen zu finden. Wir gehen in das smali-Verzeichnis, dann com (org enthält nur die offene Grafikbibliothek cocos2d), dann kauf (hier ist es, weil dies der Name des Entwicklers ist und sein gesamter Code dort ist) – und hier ist es, das Marketingverzeichnis. Darin finden wir eine Reihe von Dateien mit der Erweiterung smali. Dabei handelt es sich um Klassen, und die bemerkenswerteste unter ihnen ist die Klasse Ad.smali, aus deren Namen man leicht erraten kann, dass es sich um die Klasse handelt, die Werbung anzeigt.

Wir könnten die Logik seiner Funktionsweise ändern, aber es wäre viel einfacher, Aufrufe einer seiner Methoden einfach aus der Anwendung selbst zu entfernen. Daher verlassen wir das Marketingverzeichnis und gehen zum angrenzenden Partikelverzeichnis und dann zu Virtualtorch. Besondere Aufmerksamkeit verdient hier die Datei MainActivity.smali. Dabei handelt es sich um eine Standard-Android-Klasse, die vom Android SDK erstellt und als Einstiegspunkt in die Anwendung installiert wird (analog zur Hauptfunktion in C). Öffnen Sie die Datei zum Bearbeiten.

Darin befindet sich Smali-Code (lokaler Assembler). Es ist ziemlich verwirrend und aufgrund seines Low-Level-Charakters schwer zu lesen, daher werden wir es nicht studieren, sondern einfach alle Verweise auf die Ad-Klasse im Code finden und sie auskommentieren. Wir geben in der Suche die Zeile „Anzeige“ ein und gelangen zu Zeile 25:

Feld Privatanzeige:Lcom/kauf/marketing/Ad;

Hier wird ein Anzeigenfeld erstellt, um ein Anzeigenklassenobjekt zu speichern. Wir kommentieren, indem wir ein ###-Zeichen vor die Zeile setzen. Wir setzen die Suche fort. Zeile 423:

Neuinstanz v3, Lcom/kauf/marketing/Ad;

Hier erfolgt die Objekterstellung. Kommentieren wir. Wir setzen die Suche fort und finden in den Zeilen 433, 435, 466, 468, 738, 740, 800 und 802 Aufrufe von Methoden der Ad-Klasse. Kommentieren wir. Sieht so aus, als wäre es das. Lasst uns sparen. Nun muss die Verpackung wieder zusammengesetzt und auf Funktionalität und das Vorhandensein von Werbung überprüft werden. Für die Reinheit des Experiments geben wir die aus AndroidManifest.xml entfernte Zeile zurück, stellen das Paket zusammen, signieren es und installieren es.

Unser Meerschweinchen. Werbung sichtbar

Hoppla! Die Werbung verschwand nur, während die Anwendung lief, blieb aber im Hauptmenü, das wir sehen, wenn wir die Software starten. Also, warten Sie, 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 zu identifizieren, öffnen Sie die Datei AndroidManifest.xml erneut. Und ja, es enthält die folgenden Zeilen:

Sie sagen uns (und, was noch wichtiger ist, dem Android), dass eine Aktivität namens Start als Reaktion auf die Generierung einer 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 bestimmt somit den Einstiegspunkt, nämlich die Startklasse. Höchstwahrscheinlich hat der Programmierer zunächst eine Anwendung ohne Hauptmenü geschrieben, deren Einstiegspunkt die Standardklasse MainActivity war, und dann ein neues Fenster (Aktivität) hinzugefügt, das das Menü enthält und in der Startklasse beschrieben wird, und es manuell zum Eintrag gemacht Punkt.

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

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

Höchstwahrscheinlich berechnet das Programm zufällig, ob Werbung auf dem Hauptbildschirm angezeigt werden soll, und springt, wenn nicht, 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

Da FirstAd im Code nicht mehr erwähnt wird, schließen wir die Datei und setzen unsere virtuelle Taschenlampe mit apktool wieder zusammen. Kopieren Sie es auf Ihr Smartphone, installieren Sie es und starten Sie es. Voila, alle Werbung ist verschwunden, wozu wir uns allen gratulieren.

Ergebnisse

Dieser Artikel ist nur eine kurze Einführung in die Methoden zum Hacken und Ändern von Android-Anwendungen. Viele Probleme blieben im Verborgenen, etwa das Entfernen des Schutzes, das Parsen von verschleiertem Code, das Übersetzen und Ersetzen von Anwendungsressourcen sowie das Ändern von Anwendungen, die mit dem Android NDK geschrieben wurden. Mit Grundkenntnissen ist es jedoch nur eine Frage der Zeit, alles herauszufinden.

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

Was ist eine APK-Datei?

APK ist ein Format des Android-Betriebssystems, das für archivierte ausführbare Anwendungsdateien verwendet wird. Der Name der Datei selbst kann beliebig sein, die Erweiterung sollte jedoch nur wie folgt aussehen: this.apk. APK-Analoga in anderen Betriebssystemen sind .msi in Windows, .sis in Symbian, .rpm oder .deb in Linux.

Mal sehen, was drin ist
Tatsächlich handelt es sich bei .apk um ein ZIP-Archiv, sodass Sie das interne Gerät mit jedem Dateimanager oder Archivierungsprogramm anzeigen können, beispielsweise WinRAR oder der mobilen Anwendung X-plore.





Beachten Sie, dass die Bearbeitungsmöglichkeiten für interne Ressourcen nur äußerst begrenzt sind.
Schauen wir uns die Struktur an
In der APK-Datei sehen wir eine Reihe von Dateien und Ordnern. Lassen Sie uns herausfinden, wozu sie dienen:
  • AndroidManifest.xml ist eine Art „Pass“ der Anwendung, aus dem Sie alle wichtigen Punkte, Anforderungen, Version, Berechtigungen usw. erfahren können.
  • META-INF Diese Datei enthält Metadaten, also Daten über Daten, Prüfsummen, Pfade zu Daten, Pfade und Prüfsummen von Ressourcen, Zertifikate. Sie können diese Datei mit jedem Texteditor öffnen, es wird jedoch empfohlen, Notepad++ zu verwenden.
  • Der res-Ordner enthält alle Programmressourcen, Grafiken wie Symbole, Bilder, Text und grafische Oberflächenelemente. Sie können auch problemlos auf den Ordner zugreifen.
  • „classes.dex“ ist der direkte Anwendungsprogrammcode, der von der virtuellen Maschine „Dalvik VM“ ausgeführt wird. Sie können den Inhalt dieser Datei nur sehen, indem Sie die .apk-Datei dekompilieren. Darüber werden wir in anderen Artikeln sprechen. resources.arsc – kompilierte XML-Datei. Diese Datei enthält Daten über alle am Programm beteiligten Ressourcen.
  • lib – ein Ordner mit nativen Bibliotheken, auf deren Ressourcen nur mit speziellen Programmen zugegriffen werden kann. Das APK kann auch Dateien und Ordner wie com, org, udk enthalten, aber nicht immer.

Schauen wir uns nun den internen Aufbau genauer an; dazu benötigen wir ein Dekompilierungsprogramm, Java und eine APK-Datei. Das Hauptwerkzeug zum Zerlegen von .apk ist Apktool, aber dieses Programm funktioniert nur über die Zeile, was nicht sehr praktisch ist. Für eine schnellere und bequemere Analyse können Sie APKing verwenden. Dies ist immer noch dasselbe Apktool, jedoch mit der Möglichkeit, über das Kontextmenü zu arbeiten.
Und so installieren wir APKing wie jede Anwendung für Windows und klicken, nachdem wir .apk ausgewählt haben, mit der rechten Maustaste und gleichzeitig der Umschalttaste darauf, woraufhin wir Folgendes sehen:


Und wählen Sie die gewünschte 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.


Jetzt können alle Textdateien bearbeitet werden. Unter Beachtung der Grundregeln können Sie beispielsweise das beliebte Programm Notepad++ verwenden, z. B. AndroidManifest.xml

Apk Editor Pro, den Sie auf unserer Website für Android herunterladen können, ermöglicht es Ihnen, den Inhalt von Dateien jeder Anwendung für mobile Geräte zu hacken/zu ändern und ihn nach Ihrem Ermessen anzupassen.

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 unterscheidet sich praktisch nicht von ähnlicher Software für Personalcomputer.

Was kann dieses Dienstprogramm?

  1. Ändern (übersetzen) Sie die Namen anderer Anwendungen.
  2. Ändern Sie Architekturlayouts, Farben und Grafikeinstellungsvorlagen (z. B. Symbolgröße).
  3. Ändern Sie Sounddesign und Mediendateien.
  4. Werbung entfernen.
  5. Umgehen Sie die Blockierung kostenpflichtiger Inhalte.
  6. Übertragen Sie eine Anwendung vom internen Speicher des Geräts auf eine SD-Karte.
  7. Auflösung ändern und vieles mehr.

Um zu verstehen, wie Sie das Dienstprogramm verwenden, müssen Sie den APK Editor Pro herunterladen und zum Menü gehen. Wählen Sie dann entweder eine bereits auf Android installierte Anwendung oder deren APK-Datei aus. Danach öffnen sich die Standarddaten, die der Benutzer ändern kann:

  • Bearbeitungsressourcen;
  • Ersetzen von Dateien;
  • allgemeine Redaktion;
  • Datenbearbeitung.

Das Programm bietet an, die geänderte Version zu installieren. Dies funktioniert nicht in allen Fällen, daher muss die alte Version manuell deinstalliert und die neue installiert werden. Nach der Deinstallation sollten Sie unter den Programmen auf Android den APK-Editor-Ordner auswählen (der Einfachheit halber können Sie ES Explorer verwenden), die geänderte Anwendungsdatei suchen und auf dem Gerät installieren.

Das Programm verfügt über eine benutzerfreundliche Oberfläche. Die Navigation ist recht einfach, der Benutzer muss jedoch über Grundkenntnisse der englischen Sprache verfügen, um sie zu verstehen.

Vorteile und Nachteile

  1. Das Programm eröffnet dem Benutzer vielfältige Möglichkeiten zur individuellen Anpassung von Anwendungen.
  2. Das Menü enthält einen Hilfebereich, der eine Vielzahl von Funktionen des Editorprogramms einfach und ausführlich beschreibt. Daher müssen Benutzer, die weit vom Programmieren entfernt sind, nicht auf Ressourcen Dritter nach Beispielen und Bearbeitungsanweisungen suchen.
  3. Sie können das Programm kostenlos auf unserer Website herunterladen.

Die Verwendung dieses Dienstprogramms erfordert einige Fähigkeiten und Kenntnisse. In den Händen eines unerfahrenen Benutzers kann die Bearbeitung zu Verletzungen der Integrität des Dateisystems führen, was letztendlich zu Anwendungsfehlern führt. Im Hilfemenü finden Sie Konvertierungsbeispiele mit Bildern und Tipps zur richtigen Verwendung des APK Editor Pro auf Android. Wenn Sie dieses Programm verstehen 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 (fehlende russische Sprache, ständige Werbung, Banner usw.). Wenn Sie dieses Programm bereits verwendet haben, teilen Sie Ihre Eindrücke unten in den Kommentaren.



 


Lesen:



So stellen Sie auf einem Nokia X2-Smartphone mit zwei SIM-Karten Ihre Melodie auf den gewünschten Kontakt ein

So stellen Sie auf einem Nokia X2-Smartphone mit zwei SIM-Karten Ihre Melodie auf den gewünschten Kontakt ein

ibnlive.in.com Wie stelle ich eine Melodie auf dem Nokia Lumia ein? Diese Frage wird direkt nach dem Kauf eines Telefons gestellt. Schließlich ist es in der Regel in allen modernen...

Kostenlose Programme für Windows kostenlos herunterladen

Kostenlose Programme für Windows kostenlos herunterladen

Das Microsoft .NET Framework ist für Programme konzipiert, die auf der „.NET“-Architektur laufen. Die erste Version wurde 2002 als analoge Version veröffentlicht ...

So brennen Sie ein beliebiges ISO-Image auf ein USB-Flash-Laufwerk

So brennen Sie ein beliebiges ISO-Image auf ein USB-Flash-Laufwerk

Hallo Freunde! Heute sprechen wir noch einmal über das Erstellen eines bootfähigen USB-Flash-Laufwerks. Für welche Zwecke soll es verwendet werden...

Anrufe von unbekannten Nummern

Anrufe von unbekannten Nummern

Kürzlich sind Benutzer in Russland auf eine neue Art von „Spam“ gestoßen, bei dem der Abonnent ständig angerufen und von einem unbekannten Ort abgewiesen wird.

Feed-Bild RSS