heim - Internet
So verwenden Sie die App-Signaturfunktion in Google Play. So signieren Sie Ihre Hybrid-Mobilanwendung für die Platzierung bei Google Play. So signieren Sie eine APK-Datei

Dank der Anmeldefunktion der Anwendung Google Play Google kann den Signaturschlüssel Ihrer App verwalten, diesen Schlüssel schützen und ihn zum Signieren Ihrer APK-Dateien für die Verteilung verwenden. Diese Speichermethode schützt Sie, falls der Schlüssel verloren geht oder gehackt wird.

Wichtig! Um Android App Bundles (das empfohlene App-Veröffentlichungsformat) verwenden zu können, müssen Sie sich beim Google Play App Signing Program anmelden, bevor Sie das App Bundle in die Play Console hochladen.

Die Registrierung steht Kontoinhabern und Benutzern mit globalen Prodoffen, die die Nutzungsbedingungen akzeptiert haben. Sie können jeweils nur eine App beim Google Play App Signing Program registrieren.

Arbeitsprinzipien

Wenn Sie die App-Signaturfunktion von Google Play verwenden, werden Ihre Schlüssel in derselben Infrastruktur gespeichert, in der auch die Schlüssel von Google gespeichert sind, und durch einen speziellen Schlüsselverwaltungsdienst geschützt. Genaue Information Die technische Infrastruktur von Google finden Sie in der Dokumentation zu Google Cloud Security.

Android-Anwendungen werden mit einem privaten Schlüssel signiert. Jeder dieser Schlüssel ist mit einem öffentlichen Zertifikat verknüpft, mit dem Geräte und Dienste die Sicherheit von Anwendungen und deren Updates überprüfen können. Auf Geräten werden nur die Updates installiert, deren Signatur mit der Signatur übereinstimmt installierte Anwendung. Wenn Sie Google die Verwaltung Ihres App-Signaturschlüssels überlassen, wird der Prozess sicherer.

Notiz. Die Verwendung der App-Signaturfunktion von Google Play ist optional. Sie können APKs herunterladen und Ihre eigenen Schlüssel verwalten, ohne App Bundles zu verwenden. Wenn Sie jedoch den Zugriff auf den Keystore verlieren oder dieser kompromittiert ist, können Sie Ihre Anwendung nicht aktualisieren und müssen sie unter einem anderen Paketnamen erneut veröffentlichen.

Beschreibungen von Schlüsseln, Gegenständen und Werkzeugen
Bedingungen Beschreibung
Anwendungssignaturschlüssel

Der Schlüssel, den Google Play zum Signieren von APK-Dateien verwendet, die an das Gerät des Benutzers gesendet werden. Wenn Sie sich für das Google Play App Signing Program anmelden, können Sie es herunterladen vorhandener Schlüssel Signaturen erstellen oder von Google eine neue generieren lassen.

Schlüssel herunterladen

Es gibt zwei Möglichkeiten, einen Download-Schlüssel zu generieren:

  • Verwenden Sie den Anwendungssignaturschlüssel. Wenn Sie Google bei der Anmeldung für das Programm erlaubt haben, einen App-Signaturschlüssel zu generieren, ist der Upload-Schlüssel der Schlüssel, den Sie zum Signieren der ersten Version der App verwendet haben.
  • Verwenden Sie einen separaten Download-Schlüssel. Wenn Sie bei der Registrierung für das Programm Ihren eigenen Anwendungssignaturschlüssel angegeben haben, können Sie diesen generieren neuer Schlüssel Downloads. Wenn Sie dies nicht möchten, verwenden Sie den App-Signaturschlüssel als Download-Schlüssel zum Signieren neuer Versionen.
Zertifikat (.der oder .pem)

Ein Zertifikat, das den öffentlichen Schlüssel enthält und Weitere Informationenüber seinen Besitzer. Zertifikat Öffentlicher Schlüssel lässt jeden wissen, wer ein App Bundle oder eine APK-Datei signiert hat. Dieses Zertifikat kann geteilt werden, da es keinen privaten Schlüssel enthält.

Um Ihre Schlüssel bei API-Anbietern zu registrieren, können Sie das öffentliche Zertifikat für Ihren App-Signaturschlüssel von herunterladen Unterzeichnung von Anträgen in der Play Console. Ein Public-Key-Zertifikat kann mit jedem geteilt werden, da es keinen privaten Schlüssel enthält.

Digitaler Fingerabdruck des Zertifikats

Eine kurze und eindeutige Kennung für das Zertifikat. Der Fingerabdruck wird zusammen mit dem Paketnamen häufig von API-Anbietern angefordert, um Zugriff auf ihre Dienste zu ermöglichen.

Auf der Seite finden Sie digitale Fingerabdrücke der Download- und Anwendungssignaturzertifikate MD5, SHA-1 und SHA-256 Unterzeichnung von Anträgen in der Play Console. Möglicherweise erhalten Sie auch einen anderen digitalen Fingerabdruck. Laden Sie dazu auf derselben Seite das Originalzertifikat im DER-Format herunter.

Java Key Store (.jks oder .keystore) Speicherung von Sicherheitszertifikaten und privaten Schlüsseln.
PEPK-Tool

Ein Tool zum Exportieren privater Schlüssel aus dem Java-Speicher und zum Verschlüsseln dieser für die Übertragung an Google Play.

Sobald Sie Google Ihren App-Signaturschlüssel zur Verfügung gestellt haben, können Sie Ihren eigenen Schlüssel (und optional sein öffentliches Zertifikat) exportieren und herunterladen. Befolgen Sie dann die Anweisungen zum Herunterladen und Verwenden des Tools. Sie können auch das Open-Source-PEPK-Tool herunterladen, anzeigen und verwenden.

Prozess der Antragsunterzeichnung

Sie können APK-Dateien herunterladen, die mit dem ursprünglichen App-Signaturschlüssel signiert wurden, bevor oder nachdem Sie die App bei Google Play signiert haben.

Wenn Sie auf Android App Bundles migrieren, können Sie diese in Testversionen testen und vorhandene APKs in Produktionsversionen verwenden. So funktioniert das:

  1. Sie signieren das App Bundle oder APK und laden es auf die Play Console hoch.
  2. Der App-Signaturvorgang hängt davon ab, was Sie herunterladen.
    • App-Bundle. Google optimiert APK-Dateien aus dem App Bundle und signiert sie anschließend mit einem App-Signaturschlüssel.
    • Mit dem Download-Schlüssel signierte APK-Datei. Google überprüft Ihre Signatur, entfernt sie und signiert die APK-Dateien erneut mit dem App-Signaturschlüssel.
    • Eine APK-Datei, die mit dem App-Signaturschlüssel signiert ist. Google überprüft die Signatur.
  3. Google liefert den Nutzern signierte APK-Dateien.

So melden Sie sich für das Google Play App Signing-Programm an

Neue Anwendungen

Schritt 1: Erstellen Sie einen Download-Schlüssel

  1. Erstellen Sie einen Download-Schlüssel, indem Sie den Anweisungen folgen.
  2. Signieren Sie die neue APK-Datei mit dem Download-Schlüssel.

Schritt 2: Bereiten Sie die Veröffentlichung vor

  1. , indem Sie den Anweisungen folgen.
  2. Nachdem Sie Ihren Versionstyp ausgewählt haben, konfigurieren Sie Ihre App-Signatureinstellungen unter „Google Ihren App-Signaturschlüssel schützen und verwalten lassen“.
  3. Wenn Sie klicken Weitermachen, wird der generierte Schlüssel zum Download-Schlüssel, der zum Signieren zukünftiger Versionen verwendet wird. Sie können auch Folgendes auswählen Erweiterte Einstellungen:
    • Verwenden Sie einen Schlüssel für verschiedene Anwendungen im Entwicklerkonto (Option 2).
    • Laden Sie den Signaturschlüssel einer vorhandenen Anwendung hoch (Option 2, 3 und 4) und wählen Sie dabei die am besten geeignete Export- und Download-Methode. Sobald Sie den Signaturschlüssel und das öffentliche Zertifikat einer Anwendung heruntergeladen haben, können Sie diese entweder als Signaturschlüssel der Anwendung verwenden.

Notiz. Um fortzufahren, müssen Sie die Nutzungsbedingungen akzeptieren und sich für das App-Signaturprogramm anmelden.

Schritt 3: Registrieren Sie Ihren App-Signaturschlüssel bei Ihren API-Anbietern

Wenn Ihre Anwendung eine API verwendet, müssen Sie zur Authentifizierung höchstwahrscheinlich ein Schlüsselzertifikat registrieren, das Google zum Signieren Ihrer Anwendung verwendet. So finden Sie ein Zertifikat:

  1. Melden Sie sich bei der Play Console an.
  2. Wählen Sie eine Anwendung aus.
  3. Wählen Sie im Menü auf der linken Seite aus Release-Management > Bewerbungssignaturen.
    • Wenn der API-Anbieter einen anderen Fingerabdrucktyp erfordert, können Sie das Originalzertifikat im DER-Format herunterladen und es bei Bedarf mit den entsprechenden Tools konvertieren.
Veröffentlichte Anwendungen

Schritt 1: Melden Sie sich für das Google Play App Signing-Programm an

  1. Melden Sie sich bei der Play Console an.
  2. Wählen Sie eine Anwendung aus.
  3. Wählen Sie im Menü auf der linken Seite aus Release-Management > Bewerbungssignaturen.
  4. Lesen Sie ggf. die Nutzungsbedingungen und klicken Sie auf Akzeptieren.

Schritt 2: Senden Sie den Originalschlüssel an Google und erstellen Sie einen Download-Schlüssel

  1. Suchen Sie den Original-Signaturschlüssel der Anwendung.
  2. Melden Sie sich bei der Play Console an.
  3. Wählen Sie eine Anwendung aus.
  4. Wählen Sie im Menü auf der linken Seite aus Release-Management > Bewerbungssignaturen.
  5. Laden Sie einen vorhandenen Anwendungssignaturschlüssel mit der Methode hoch, die am besten zu Ihrem Freigabeprozess passt.
  1. und laden Sie das Zertifikat auf Google Play hoch.
    • Sie können den Anwendungssignaturschlüssel auch als Download-Schlüssel verwenden.
  2. Kopieren Sie die digitalen Fingerabdrücke (MD5, SHA-1 und SHA-256) des Anwendungssignaturzertifikats.
    • Um Tests durchzuführen, müssen Sie möglicherweise ein Bootschlüsselzertifikat beim API-Anbieter registrieren und dabei den Fingerabdruck und den Anwendungssignaturschlüssel des Zertifikats verwenden.

Schritt 4: Signieren Sie Ihr nächstes App-Update mit Ihrem Download-Schlüssel

Freigegebene Anwendungsupdates müssen mit einem Download-Schlüssel signiert werden.

So erstellen Sie einen Download-Schlüssel und aktualisieren Schlüsselspeicher

Sie können einen Download-Schlüssel erstellen, wenn Sie sich für das Google Play App Signing Program anmelden, oder Sie können einen später im generieren Release-Management > Bewerbungssignaturen.

Um einen Download-Schlüssel zu erstellen, gehen Sie folgendermaßen vor:

  1. Befolgen Sie die Anweisungen auf der Android-Entwicklerseite. Bewahren Sie den Schlüssel an einem sicheren Ort auf.
  2. Exportieren Sie das Zertifikat für den Startschlüssel im PEM-Format. Ersetzen Sie die folgenden Argumente durch einen Unterstrich:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Wenn Sie während des Ausstellungsprozesses dazu aufgefordert werden, laden Sie das Zertifikat herunter, um es bei Google zu registrieren.

Wenn Sie einen Download-Schlüssel verwenden:

  • Der Download-Schlüssel wird bei Google nur registriert, um die Identität des App-Erstellers zu authentifizieren.
  • Ihre Signatur wird von allen APK-Downloads entfernt, bevor sie die Benutzer erreichen.
Einschränkungen
  • Der Download-Schlüssel muss RSA-Verschlüsselung verwenden und mindestens 2048 Bit groß sein.
  • DSA- und EC-Schlüssel werden ebenfalls nicht unterstützt RSA-Schlüssel weniger als 2048 Bit groß.
Keystores aktualisieren

Nachdem Sie Ihren Download-Schlüssel erstellt haben, überprüfen und aktualisieren Sie gegebenenfalls die folgenden Speicherorte:

  • lokales System;
  • sicherer lokaler Server (mit verschiedenen Zugriffskontrolllisten);
  • Cloud-System (mit verschiedenen Zugriffskontrolllisten);
  • spezielle Schlüsselverwaltungsdienste;
  • Git-Repositorys.

So aktualisieren Sie den Signaturschlüssel für neue App-Installationen

In einigen Fällen können Sie möglicherweise eine Aktualisierung des Anwendungssignaturschlüssels anfordern. Der neue Schlüssel wird zum Signieren neuer Installationen und Aktualisierungen der Anwendung verwendet, und der veraltete Schlüssel wird zum Aktualisieren signierter Versionen verwendet, die bereits von Benutzern installiert wurden.

Der Signaturschlüssel kann für jede Anwendung nur einmal aktualisiert werden. Im unwahrscheinlichen Fall, dass Sie denselben Signaturschlüssel für mehrere Anwendungen verwenden, um diese im selben Prozess auszuführen, kann der Schlüssel nicht aktualisiert werden.

In den folgenden Fällen sollten Sie eine Aktualisierung des Anwendungssignaturschlüssels anfordern:

  • Sie benötigen einen sichereren Schlüssel.
  • Der Anwendungssignaturschlüssel wurde kompromittiert.

Notiz. Die Anfrage zur Aktualisierung des App-Signaturschlüssels auf der Play Console steht nicht im Zusammenhang mit dem Ersetzen von Schlüsseln in Android P und späteren Versionen. Dieser Schlüsselersatz wird derzeit von Google Play nicht unterstützt.

Wichtige Hinweise zum Aktualisieren von Schlüsseln

Bevor Sie eine Schlüsselaktualisierung anfordern, ist es wichtig zu verstehen, welche Änderungen dies mit sich bringt.

  • Wenn Sie denselben Signaturschlüssel für mehrere Apps verwenden, um denselben Code oder dieselben Daten zu verwenden, müssen Sie die Apps aktualisieren, damit sie sowohl den neuen als auch den alten Schlüssel erkennen.
  • Wenn Ihre App eine API verwendet, müssen Sie vor dem Upgrade Ihrer App unbedingt die Zertifikate für die neuen und alten App-Signaturschlüssel beim API-Anbieter registrieren. Zertifikate sind auf der Seite verfügbar Unterzeichnung von Anträgen Spielkonsole.
  • Wenn viele Benutzer Ihrer Anwendung Updates über File-Sharing-Netzwerke installieren, können sie nur Updates installieren, die mit demselben Schlüssel signiert sind wie die auf ihren Geräten installierte Anwendung. Wenn Anwendungen nicht aktualisiert werden können, weil installierte Version Mit einem anderen Schlüssel signiert, können Benutzer es deinstallieren und erneut installieren, um Updates zu erhalten.
Fordern Sie ein Schlüsselupdate für Neuinstallationen an. Gehen Sie dazu folgendermaßen vor:
  1. Melden Sie sich bei der Play Console an.
  2. Wählen Sie eine Anwendung aus.
  3. Wählen Sie im Menü auf der linken Seite aus Release-Management > Bewerbungssignaturen.
  4. Wählen Sie auf der Karte „Signaturschlüssel für neue App-Installationen aktualisieren“ aus Fordern Sie ein Schlüsselupdate an.
  5. Wählen Sie, was mit dem Gerät geschehen soll.
    • Abhängig von der von Ihnen gewählten Option müssen Sie möglicherweise den Support kontaktieren, um Ihre Anfrage abzuschließen.
  6. Erlauben Sie Google Play, einen neuen App-Signaturschlüssel zu generieren (empfohlen) oder laden Sie einen herunter.
    • Wenn der Schlüssel nach der Aktualisierung Ihres App-Signaturschlüssels mit Ihrem Download-Schlüssel übereinstimmt, können Sie den alten App-Signaturschlüssel weiterhin als Download-Schlüssel verwenden oder einen neuen erstellen.
  • Wenn Sie Ihre App auch außerhalb von Google Play veröffentlicht haben oder dies planen, können Sie bei der Anmeldung zum Google Play App Signing Program einen gemeinsamen App-Signaturschlüssel generieren und diesen bei Google hochladen.
  • Um Ihr Konto zu schützen, Aktivieren Sie die zweistufige Verifizierung für alle Konten, die Zugriff auf die Play Console haben.
  • Nachdem Sie ein App Bundle in einer Test- oder Produktionsversion veröffentlicht haben, können Sie den App Bundle-Browser öffnen und ein ZIP-Archiv herunterladen, das alle APK-Dateien für ein bestimmtes Gerät enthält. Diese APK-Dateien sind bereits mit dem App-Signaturschlüssel signiert. Sie können sie mit dem Dienstprogramm aus einem ZIP-Archiv auf Ihrem Gerät installieren Befehlszeile Bundletool.
  • Für mehr Sicherheit generieren Sie einen neuen Download-Schlüssel, der sich vom Signaturschlüssel der Anwendung unterscheidet.
  • Wenn Sie ein mit einem Upload-Schlüssel signiertes APK testen möchten, registrieren Sie den Schlüssel bei einem Dienst oder einer API, die die Signatur der App zur Authentifizierung verwendet (z. B. API). Google Maps oder Facebook Developer Pack).
  • Wenn Sie die Google API verwenden, können Sie Ihr Upload-Zertifikat in der Google Cloud Console registrieren.

Was tun, wenn der Schlüssel verloren geht oder gehackt wird?

Wenn Sie den Zugriff verloren haben Privat Schlüssel herunterlädt oder gehackt wurde, und fragen Sie den Inhaber Ihres Kontos. Bei der Kontaktaufnahme mit dem Support muss der Kontoinhaber die Datei upload_certificate.pem anhängen.

Wenn das Support-Team den neuen Download-Schlüssel registriert, erhalten Sie ihn Email Anschließend können Sie Ihre Schlüsselspeicher aktualisieren und Ihren Schlüssel bei API-Anbietern registrieren.

Wichtig! Das Zurücksetzen des Download-Schlüssels hat keine Auswirkungen auf den App-Signaturschlüssel, den Google Play verwendet, um APK-Dateien zu signieren, bevor sie an Benutzer gesendet werden.

Waren diese Informationen nützlich?

Wie kann dieser Artikel verbessert werden?

Das im vorherigen Abschnitt beschriebene Dienstprogramm keytool erstellt ein digitales Zertifikat, das einer der Parameter des Tools jarsigner ist. Ein weiterer Parameter ist das Android-Paket, das signiert werden muss. Um ein Android-Paket zu generieren, müssen Sie das Dienstprogramm „Unsigniertes Anwendungspaket exportieren“ aus dem ADT-Modul für Eclipse verwenden. Um dieses Dienstprogramm aufzurufen, müssen Sie mit der rechten Maustaste auf das Android-Projekt in Eclipse klicken und auswählen Kontextmenü Android-Tools und wählen Sie dann „Unsigniertes Anwendungspaket exportieren“ aus. Nach dem Start generiert dieses Dienstprogramm eine APK-Datei, die nicht mit einem Debug-Zertifikat signiert ist.

Um dies auszuprobieren, führen Sie das Dienstprogramm „Unsigniertes Anwendungspaket exportieren“ in einem Ihrer Android-Projekte aus und speichern Sie die generierte APK-Datei irgendwo. IN in diesem Beispiel Wir verwenden den zuvor erstellten Keystore-Ordner und generieren eine APK-Datei mit dem Namen C:\android\release\myappraw.apk.

Da wir nun die .apk-Datei und das Keystore-Element haben, können wir das Jarsigner-Tool ausführen, um die .apk-Datei zu signieren (siehe 14.2). In diesem Fall müssen die vollständigen Pfade für die Keystore-Datei und die .apk-Datei angegeben werden.

Um eine APK-Datei zu signieren, wird dem Dienstprogramm jarsigner der Speicherort des Keystores, das Passwort des Keystores und das Passwort gesendet geheimer Schlüssel, Pfad zur APK-Datei und Alias ​​des Keystore-Elements. Jarsigner signiert dann die APK-Datei mit dem digitalen Zertifikat aus dem Keystore-Element. Um das Dienstprogramm jarsigner auszuführen, müssen Sie entweder ein Toolfenster öffnen (siehe Kapitel 2) oder ein Eingabeaufforderungsfenster oder Terminalfenster öffnen und den Ordner bin im Verzeichnis öffnen

JDK (wenn dieser Ordner nicht in der Variable angegeben ist PATH-Umgebungen). Aus Sicherheitsgründen ist es am besten, keine Passwörter als Befehlsargumente zu übergeben. In diesem Fall werden Sie von jarsigner zur Laufzeit zur Eingabe von Passwörtern aufgefordert. In Abb. Abbildung 14.3 zeigt ein Beispiel für den Aufruf des Dienstprogramms jarsigner. Sie haben vielleicht bemerkt, dass in Abb. 14.3 Das Dienstprogramm jarsigner fragt nur nach einem Passwort. Dies liegt daran, dass der Keypass nicht abgefragt wird, wenn Storepass und Keypass identisch sind. Genau genommen muss der Befehl jarsigner in e 14.2 nur dann das Passwort -keypass angeben, wenn es sich vom Passwort -storepass unterscheidet.

Wie bereits erwähnt, erfordert Android, dass Ihre App digital signiert ist, um zu verhindern, dass böswillige Programmierer Ihre App durch ihre eigene Version ersetzen. Dazu erfordert Android, dass App-Updates mit derselben Signatur wie die Original-App signiert werden. Wenn eine Anwendung mit einer anderen Signatur signiert ist, betrachtet Android sie als unterschiedliche Anwendungen. Deshalb möchten wir Sie noch einmal daran erinnern: Behandeln Sie die Keystore-Datei sorgfältig, damit sie Ihnen später zur Verfügung steht, wenn Sie ein Anwendungsupdate veröffentlichen müssen.

Sie haben also viele Tage (und vielleicht auch Nächte) gearbeitet und hier ist Ihr erster Hybrid App bereit. Es ist recht stabil, die meisten kritischen Fehler sind behoben. Es sind noch kleine übrig, aber da Sie bedenken, dass Perfektionismus böse ist, treffen Sie eine willensstarke Entscheidung, die Bewerbung zu veröffentlichen.

Voraussetzung hierfür ist das Vorhandensein einer signierten APK-Datei. So unterschreiben Sie apk-Datei, erfahren Sie aus diesem Artikel.

Ein kleiner Rückzugsort

Als mein Lieblingsprojekt kurz vor der Veröffentlichung stand, begann ich nach Informationen zu suchen, wie man schnell und problemlos eine Anwendung veröffentlichen kann. Viele der gefundenen Anleitungen sahen einfach aus. Ich habe die Anweisungen der Autoren des Ionic-Frameworks ausgewählt, auf dem die Anwendung entwickelt wurde. Nicht alles hat beim ersten Mal geklappt, es gibt einige Besonderheiten. Der Signiervorgang wird in diesem Artikel beschrieben. wichtige Punkte besonders hervorgehoben.

Ausgangsdaten

Ich gehe davon aus, dass Sie alles eingerichtet haben, um hybride mobile Apps mit Apache Cordova zu entwickeln. Muss installiert werden:
  • Apache Cordova
  • Java Entwickler-Kit
  • Android SDK-Tools
Der Projekt- und Anwendungsname lautet lcf. Ersetzen Sie ihn bei Bedarf durch Ihren Projektnamen.

Gehen

Zuerst müssen Sie einen Release-Build Ihrer Anwendung erstellen. Aber vorher stellen wir sicher, dass alle unnötigen Plugins entfernt werden. Wir benötigen beispielsweise kein Plugin, das Debugging-Informationen an die Konsole ausgibt. Löschen wir es:

$ Cordova-Plugin rm Cordova-Plugin-Konsole
Um einen Release-Build für Android zu generieren, verwenden Sie den Befehl bauen mit einer Fahne --freigeben:

$ cordova build --release android
Dieser Befehl erstellt ohne Vorzeichen APK-Datei im Verzeichnis:

Plattformen/android/build/outputs/apk
Zum Beispiel „platforms/android/build/outputs/apk/“ android-release-unsigned.apk. Dann müssen wir diese Datei signieren und das Dienstprogramm ausführen zipalign um die Datei für Google Play zu optimieren und vorzubereiten.

Um eine Datei zu signieren, benötigen Sie ein Zertifikat. Lassen Sie es uns mit dem Dienstprogramm erstellen Schlüsseltool welches im JDK enthalten ist:

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -validity 10000
Wichtig

Der Wert des Parameters -alias muss man sich merken oder besser noch aufschreiben. Im obigen Beispiel ist es gleich lcf (basierend auf den Anfangsbuchstaben des Anwendungsnamens Loyal Client Free). Ich werde hier keine Details nennen, wenn Sie interessiert sind, schreiben Sie in die Kommentare, ich werde es Ihnen ausführlicher erzählen.

Der Alias ​​wird bei jeder Unterzeichnung verwendet * Anwendungen. Um es leichter zu merken, verwenden Sie den Namen der Keystore-Datei als Alias, zum Beispiel:


-keystore hello-world.keystore -alias hello-world -keystore Weather-app.keystore -alias Weather-app -keystore todo.keystore -alias todo
* Sie müssen die Anwendung jedes Mal signieren, wenn Updates veröffentlicht werden

Dienstprogramm Schlüsseltool stellt eine Reihe von Fragen. Insgesamt werden es 8 davon sein. Um vorab eine Vorstellung von den Fragen und ungefähren Antworten zu haben, sind sie alle unten unter dem Spoiler angegeben.

Keytool-Fragen und Beispielantworten darauf

1. Geben Sie das Keystore-Passwort ein:
Hier müssen Sie ein Passwort für die Datei eingeben (mindestens 6 Zeichen). Das eingegebene Passwort muss an einem sicheren Ort notiert werden; es wird bei jeder Unterschrift des Antrags benötigt.

2. Geben Sie das neue Passwort erneut ein:
Wiederhole die Eingabe deines Passwortes.

3. Wie lautet Ihr Vor- und Nachname?
: Iwan Petrow
Ihr Vor- und Nachname. Der Wert in eckigen Klammern ist der Standardwert.

4. Wie heißt Ihre Organisationseinheit?
: ES
Der Name der Abteilung Ihres Unternehmens. Sie können es leer lassen, ich gebe ES an.

5. Wie heißt Ihre Organisation?
: 2 Entwickler
Der Name Ihrer Organisation. Bitte geben Sie an, ob verfügbar.

6. Wie heißt Ihre Stadt oder Ihr Ort?
: Moskau
Stadtname

7. Wie heißt Ihr Bundesstaat oder Ihre Provinz?
: M.O.
Bereichsname

8. Wie lautet der aus zwei Buchstaben bestehende Ländercode für dieses Gerät?
: RU
Code des Landes. Ich gebe RU an.

: j

Bestätigen Sie, ob alles korrekt ist, oder drücken Sie die Eingabetaste, um erneut einzutreten.


Am Ende erscheint eine Meldung über die erfolgreiche Schlüsselgenerierung. Sie werden aufgefordert, ein Passwort für den privaten Schlüssel festzulegen (wenn Sie es dasselbe wie für das Zertifikat belassen möchten, drücken Sie die Eingabetaste):

Generieren eines 2.048-Bit-RSA-Schlüsselpaars und eines selbstsignierten Zertifikats (SHA256withRSA) mit einer Gültigkeit von 10.000 Tagen für: CN=Ivan Petrov, OU=IT, O=2developers, L=Moskau, ST=MO, C=RU Schlüssel eingeben Passwort für (RETURN, wenn dasselbe wie das Keystore-Passwort):
Im aktuellen Verzeichnis wird eine Datei erstellt lcf.keystore.

Wichtig

Die erstellte Datei muss an einem sicheren Ort gespeichert werden. Wenn Sie ein privates Repository verwenden, kann die Datei zusammen mit festgeschrieben werden Quellcodes Anwendungen. Im Allgemeinen ist es besser, Zertifikate separat aufzubewahren. Bei Verlust des Zertifikats können Sie keine App-Updates mehr ausstellen.

Es sind noch zwei Schritte erforderlich und Sie haben eine APK-Datei zur Verteilung bereit. Kommen wir zum Signieren.

Um Ihre APK-Datei zu signieren, verwenden Sie das Dienstprogramm Jarsigner, das auch im JDK enthalten ist.

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Der Zertifikatsname wird nach dem Parameter angegeben -Schlüsselspeicher, Alias ​​– nach dem Dateinamen.

Um schließlich die APK-Datei zu optimieren, verwenden wir das Dienstprogramm zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Der letzte Parameter ist der Name der Datei, die Sie auf Google Play hochladen.

Wichtig.

Dienstprogramm zipalign Es ist Teil der Android SDK Tools und kann hier gefunden werden:

/path/to/Android/sdk/build-tools/VERSION/zipalign

Abschluss

Sie verfügen nun über eine verteilungsbereite APK-Datei, die Sie auf Google Play hochladen können. Füllen Sie die Beschreibung aus, ermitteln Sie die Bewertung Ihrer Bewerbung und klicken Sie gerne auf „Veröffentlichen“.

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 zum Beispiel ist das Programm eine Testversion, aber 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-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

Plastiktüte Android-Anwendungen Da es sich tatsächlich um eine normale ZIP-Datei handelt, sind keine speziellen Tools erforderlich, um den Inhalt anzuzeigen und zu extrahieren. 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 virtuelle Maschine Dalvik;
  • 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äufige 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 die in C/C++ geschriebene Spiel-Engine 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; die wir am liebsten nutzen individuelle Anwendungen Daher beschreiben wir 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, was jedoch unpraktisch ist. 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- keine Ressourcen 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 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.

Es ist lediglich eine digitale Signatur erforderlich Drittanbietersoftware, also wenn Sie Änderungen vornehmen Systemanwendungen, die durch Kopieren in das Verzeichnis /system/app/ installiert werden, müssen 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 ehrlich gesagt 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. Hierbei 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. Speichern. 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 und installieren.

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 ist, 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 mit geschriebenen Anwendungen mit Android NDK. Mit Grundkenntnissen ist es jedoch nur eine Frage der Zeit, alles herauszufinden.

Beitragsaufrufe: 5.618

Android Studio bietet zahlreiche Möglichkeiten sowohl für die Anwendungsentwicklung als auch für die Erhöhung der Automatisierung und des Komforts bei der Programmierung.

Wenn Sie ein Build-System verwenden Gradle Um Ihre Anwendungen zu erstellen, können Sie auch mehrere Optionen zum Erstellen von Signaturen für Ihre Anwendungen konfigurieren.

Sie möchten Ihre Signaturschlüssel, Passwörter und Benutzernamen wahrscheinlich nicht in einem öffentlichen (oder sogar privaten) Repository veröffentlichen. Daher können Sie Schlüssel, Passwort und Benutzernamen als Eigenschaften in einer separaten Datei definieren.

Bevor Sie mit dem Signieren Ihrer Bewerbung beginnen, müssen Sie eine neue Eigenschaft in Ihrer gradle.properties-Datei erstellen. Rufen wir ihn an Keys.repo und geben Sie als Wert den Pfad zu dem Ordner an, in dem sich später der Schlüsselspeicher und die Datei mit Eigenschaften befinden werden (z. B. C:/Benutzer/Benutzername/.signing).

Keys.repo=C:/Users/UserName/.signing

Dann müssen Sie diesen Ordner erstellen oder, falls Sie einen vorhandenen Ordner angegeben haben, ihn öffnen. Sie müssen darin eine Datei erstellen YourProjectName.properties, in den der Pfad zum Schlüsselspeicher, der Schlüsselalias und das Passwort als Eigenschaften in der folgenden Form geschrieben werden.

RELEASE_STORE_FILE=/YourProjectName/KeyStoreName.jks RELEASE_STORE_PASS=****** RELEASE_ALIAS=KeyAlias ​​​​RELEASE_KEY_PASS=******

Wie erstelle ich einen Schlüsseltresor?

Wenn Sie keinen Keystore haben, können Sie mit Android Studio ganz einfach einen erstellen. Wählen Sie dazu den Menüpunkt aus Bauen -> Generieren Sie eine signierte APK.

Im erscheinenden Fenster müssen Sie klicken Erstelle neu... Als Ergebnis öffnet sich ein Fenster, in dem Sie angeben können, wo sich der Schlüsselspeicher befinden soll (für diese Lektion ist es besser, sofort den Pfad auszuwählen, den Sie in angegeben haben). YourProjectName.properties im Eigentum RELEASE_STORE_FILE) sowie wichtige Informationen.

Dann müssen Sie einen Ordner erstellen IhrProjektname und verschieben Sie es dorthin erforderliche Datei Schlüsselgeschäfte.

Jetzt können Sie direkt mit dem Signiervorgang fortfahren. Dazu müssen Sie die Datei in Ihrem Projekt öffnen build.gradle(befindet sich im App-Ordner). Darin im Block Android Sie müssen den folgenden Code hinzufügen.

SigningConfigs ( debug ( /* keine Änderungen hier */ ) release ( if (project.hasProperty("Keys.repo")) ( def projectPropsFile = file(project.property("Keys.repo") + "/YourProjectName.properties " ) if (projectPropsFile.exists()) ( Properties props = new Properties() props.load(new FileInputStream(projectPropsFile)) storeFile file(file(project.property("Keys.repo") + props["RELEASE_STORE_FILE"] ) ) storePassword props["RELEASE_STORE_PASS"] keyAlias ​​​​props["RELEASE_ALIAS"] keyPassword props["RELEASE_KEY_PASS"] ) ) else ( println "==================== = ===================================" println " – Bitte konfigurieren Sie die Release-Kompilierungsumgebung – z. B. in ~/. Signaturverzeichnis" println "======================================== ================== ==========" ) ) )

Welche unterschiedlichen Verfahren zur Einholung einer Unterschrift gibt es?

Es gibt zwei Schemata zum Erhalten einer APK-Signatur: v1 JAR Und v2 Vollständige APK.

Im ersten Fall wird es unterschrieben KRUG-file, die traditionelle Art des Signierens. Durch das Signieren von v1 werden einige Teile des APK, wie z. B. ZIP-Metadaten, nicht geschützt. Der APK-Verifizierer muss viele nicht vertrauenswürdige (noch nicht verifizierte) Datenstrukturen verarbeiten und dann nicht signierte Daten verwerfen, wodurch viel Angriffsfläche verbleibt. Darüber hinaus muss der APK-Verifizierer alle komprimierten Einträge dekomprimieren, was viel Zeit und Speicher verschwendet. Um diese Probleme zu lösen, wurde das zweite Schema v2 Full APK entwickelt.

Schema v2 wurde in vorgestellt Android 7.0 Nougat (API 25) und funktioniert ab Version Android Studio 2.2 Und Android Gradle-Plugin 2.2. Dieses Schema bietet mehr schnelle Installation Anwendungen und guter Schutz vor unautorisierte Änderungen in APK. Der APK-Inhalt wird gehasht und signiert, dann das Ergebnis APK-Signaturblock in die APK eingefügt.

Während der Überprüfung behandelt das v2-Schema das APK als Blob und führt eine Signaturüberprüfung für die gesamte Datei durch. Jede Änderung an der APK, einschließlich Änderungen an den ZIP-Metadaten, macht die Signatur ungültig. Diese Form der Überprüfung ist viel schneller und kann mehr nicht autorisierte Änderungen erkennen.

Das neue Format ist abwärtskompatibel, sodass mit dem neuen Schema signierte APKs auf älteren Geräten installiert werden können (die die neue Signatur einfach ignorieren), sofern diese APKs auch mit dem v1-Schema signiert sind.

Beim Signieren werden standardmäßig beide Schemata verwendet, sodass Apps auf jedem Gerät installiert werden können. Bei Bedarf können Sie jedoch die v1- oder v2-Signatur deaktivieren. Gehen Sie dazu im obigen Code in den Block freigeben Es reicht aus, die folgenden Zeilen hinzuzufügen.

V1SigningEnabled falsch

V2SigningEnabled falsch

Es ist außerdem wichtig zu beachten, dass Sie mit Schema v1 signieren müssen, bevor Sie mit Schema v2 signieren, da das APK die Überprüfung nach Schema v2 nicht besteht, wenn es nach der Signatur mit Schema v2 mit zusätzlichen Zertifikaten signiert wird.

Sobald der Code hinzugefügt wurde, fügen Sie diesen Code in einen Block ein buildTypes innen freigeben. Zum Beispiel:

BuildTypes ( release ( minifyEnabled true strictResources true proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release ) )

Jetzt können Sie sicher im Menüpunkt Bauen wählen APK erstellen, nachdem zuvor der Baugruppentyp von geändert wurde debuggen An freigeben. Wie gesehen, diese Methode Praktisch, da es automatisch erfolgt, Sie es nur einmal konfigurieren müssen und Ihre Schlüsselspeicher sicher sind.



 


Lesen:



Warum braucht ein Laptop eine kleine SSD und lohnt es sich, Windows darauf zu installieren?

Warum braucht ein Laptop eine kleine SSD und lohnt es sich, Windows darauf zu installieren?

Wie wichtig ein SSD-Laufwerk für Spiele ist, welche Auswirkungen es hat und welchen Nutzen diese Technologie hat – das besprechen wir in unserem Artikel. Fester Zustand...

Reparieren eines Flash-Laufwerks mit Programmen So reparieren Sie einen USB-Anschluss an einem Laptop

Reparieren eines Flash-Laufwerks mit Programmen So reparieren Sie einen USB-Anschluss an einem Laptop

Wie repariert man einen USB-Anschluss? Antwort des Technikers: Bei der Nutzung eines Computers fallen häufig USB-Anschlüsse aus. Erstens scheitern sie...

Die Festplattenstruktur ist beschädigt; Lesen ist nicht möglich, was soll ich tun?

Die Festplattenstruktur ist beschädigt; Lesen ist nicht möglich, was soll ich tun?

Auf den PCs der Benutzer werden oft wichtige Informationen gespeichert – Dokumente, Fotos, Videos, aber das Sichern von Daten ist in der Regel...

Woraus besteht ein Computer?

Woraus besteht ein Computer?

Veröffentlicht: 14.01.2017 Grüße, Freunde, heute werden wir uns ausführlich mit dem Design der Computersystemeinheit befassen. Finden wir heraus, was...

Feed-Bild RSS