[JAVA] [2018 Preservation Version] Reverse Engineering Android App (.apk) auf Mac

Dies ist der Artikel am 24. Tag des "Athletic Engineer Advent Calendar 2017". Der 23. Tag war @ yuzu_afro's "Mit Raspberry Pi einen leuchtenden und klingenden Weihnachtsbaum machen".

Glaubst du, es ist Harenchi, dass du einen Blick in deine App werfen möchtest?

Diesmal ** Ich habe den Quellcode der auf Google Play veröffentlichten App verloren **

Auch wenn die Welt in der Weihnachtsatmosphäre völlig schwebt Wir sind mit einer miserablen Situation ohne Hilfe konfrontiert Domo ist Nagao Morgen ist ** Christi Geburtstag ** Das ist ** Reverse Engineering Ihrer eigenen App ** (im Folgenden Rivaen) ** App Auferstehungsfest **

Es gibt drei Dinge, die Sie tun möchten, richtig?

[[1] Ich möchte den Java (Kotlin) Quellcode sehen](# 1 Ich möchte den Javakotlin Quellcode sehen-1)

[[2] Ich möchte den XML-Code sehen](Ich möchte den XML-Code Nr. 23 und die in der App verwendete Bilddatei sehen.)

[[3] Ich möchte die in der App verwendete Bilddatei sehen](Ich möchte den Code von # 23xml und die in der App verwendete Bilddatei sehen)

Zuallererst die notwendigen Vorbereitungen, egal was Sie tun ** Bereite die apk vor, die du wiederbeleben möchtest ** Ich werde gehen von

Holen Sie sich die APK-Datei der App, die Sie wiederbeleben möchten, von Ihrem Smartphone

(Wenn Sie bereits die App haben, die Sie in .apk wiederbeleben möchten, benötigen Sie diesen Flow nicht.)

Es gibt auch eine Möglichkeit, dies mit einem Befehl zu tun Es ist ** schnell **, die ** apk-Extraktions-App ** bei Google Play zu verwenden.

** Zum Beispiel eine solche App ** https://play.google.com/store/apps/details?id=com.pandaz.apkextraction

Wenn Sie es auf Ihrem Smartphone installieren und starten 1.png

Die Apps auf Ihrem Smartphone sind in einer Reihe angeordnet Überprüfen Sie die gesuchte App und tippen Sie auf ** apk Extraction ** Danach können Sie ** apk my own ** erstellen, indem Sie es mit der Share-Schaltfläche auf Google Drive hochladen.

Beginnen wir mit dem einfachen

[2] [3] Ich möchte den XML-Code und die in der Anwendung verwendete Bilddatei sehen

Grob gesagt ** Sie können beide sehen, indem Sie apk in Android Studio werfen ** ist

Zuerst ** Platziere die apk **, die du früher bekommen hast, irgendwo im Voraus auf deinem ** Computer **. Und In Android Studio ** Datei → Neu → Neues Projekt ** Entscheiden Sie den Projektnamen entsprechend und erstellen Sie ein Projekt mit Weiter → Weiter ... Öffnen Sie das erstellte Projekt ** Erstellen → APK analysieren **

2.png

Ein Dateiauswahldialog wird angezeigt Wählen Sie die apk aus, die Sie im Voraus auf Ihren Computer gestellt haben Dann öffnet sich dieser Bildschirm (diesmal benutze ich die apk der Anwendungsbeispiel-App)

8.png

Einfach zu sehen ** Klicken Sie einmal auf die XML-Datei, die Sie sehen möchten ** Dann

9.png

Der Inhalt von xml wird im unteren Teil angezeigt ** Bilddateien ** Etwas ist normalerweise im üblichen ** Zeichen ** Sie können das mit ** Einzelklick ** sehen

** [2] und [3] sind vorbei **

[1] Ich möchte den Java (Kotlin) -Quellcode sehen

Es gibt viel mehr zu tun als [2] und [3]

1. Machen Sie apk zu einem Reißverschluss und entpacken Sie ihn

Ändern Sie einfach ** apk ** in ** zip ** Alles was Sie tun müssen, ist den ** Dateinamen ** von apk von ** XXX.apk ** in ** XXX.zip ** zu ändern

** Normalerweise wird es durch einfaches Doppelklicken erweitert ** ** Doppelklicken Sie auf diesen Reißverschluss ** Einer nach dem anderen ** Es gibt kein Anzeichen dafür, dass so etwas wie ein Verwandter mit Reißverschluss geboren ** und erweitert wird ... Bei einer solchen ** Matroschka-Reißverschluss-Situation **

The Unarchiver https://itunes.apple.com/jp/app/the-unarchiver/id425424353?mt=12 Installieren Sie dies auf ** Mac ** Klicken Sie mit der rechten Maustaste auf ** zip ** und wählen Sie diese App aus, um sie zu erweitern. (Einige der ähnlichen Apps sind zu ** Matroschka ** geworden, daher werde ich diejenige veröffentlichen, die funktioniert hat.)

2. Verwenden Sie dex2jar, um eine JAR-Datei aus der Datei classes.dex zu generieren

Es befindet sich im nächsten erweiterten Ordner classes.dex ** Generiere eine JAR-Datei ** aus der Datei Wie macht man

dex2jar https://sourceforge.net/projects/dex2jar/ Laden Sie das Ding herunter (** dex2jar-2.0.zip **) ** In denselben Ordner extrahieren, in dem sich der Ordner befindet, in den Sie die App extrahiert haben ** (Dieser Reißverschluss ist ** doppelt geklickt **, wird aber nicht zu Matroschka und wird normal erweitert **) Diesmal hat Nagao einen Ordner namens Rivaen für die Arbeit erstellt ** Ich habe den ** Ordner, in dem die App erweitert wurde ** und den ** dex2jar-2.0 Ordner ** in den ** Rivaen Ordner ** gelegt Das ist

11.png

damit $ cd Rivaen (Gehe zum Rivaen-Verzeichnis) Drücken Sie den folgenden Befehl

$ cd dex2jar-2.0/
$ chmod +x *
$ cd ..
$ dex2jar-2.0/d2j-dex2jar.sh sample-app/classes.dex

↑ Hast du Nani gemacht?

  1. Zeile In den Ordner dex2jar-2.0 verschoben
  2. Zeile: Geben Sie der ausführbaren Datei im Ordner dex2jar-2.0 die Ausführungsberechtigung.
  3. Zeile Zurück zum Rivaen-Ordner Zeile 4 Generieren Sie eine JAR-Datei aus classes.dex mit einer Shell namens d2j-dex2jar.sh ist Wenn Sie dies bisher tun, befindet es sich im Ordner Rivaen

12.png

classes-dex2jar.jar Eine ** JAR-Datei ** wird erstellt!

3. Zeigen Sie den Inhalt der JAR-Datei (Java-Code) mit JD_GUI an

Auf geht's! Nachdem ich hier angekommen bin

JD-GUI http://jd.benow.ca/ ** Installieren Sie die App auf Ihrem Mac ** Wenn Sie mit der rechten Maustaste auf die gerade erstellte ** JAR-Datei klicken ** und sie mit dieser App öffnen Sie sollten endlich den ** Java-Quellcode ** sehen können!

4. [Interview] Das Öffnen eines JARs mit JD-GUI kann zu einem Absturz führen.

(2018/7/17 stürzte immer noch auf High Sierra ab) Wenn Sie es sicher sehen können, ist es vorbei. Dieser Absturz scheint auf ** Sierra ** & ** HighSierra ** zu passieren Um ehrlich zu sein, dachte ich, es sei ** das Ende des Spiels ** Was ist eine App zum Entschlüsseln von Klassendateien? ** Ich kann nichts anderes als JD-GUI finden ** (T_T) Aber dieses mal ** Warum macht Nagao überhaupt Rivaen **? ** Weil ich den wichtigen Quellcode der auf Google Play veröffentlichten App verloren habe ** Damit

Ich weiß nicht warum es vorbei ist Ich habe keine andere Wahl, als etwas dagegen zu unternehmen

Auf der Seite habe ich nach einer Lösung gesucht ** Wenn Sie die JD-GUI selbst auf Github erstellen, ist das cool! ** ** ** Es war

Machen wir das

Sie können es in jedem Verzeichnis tun An einem Ort, der vorerst leicht zu verstehen ist $ cd Rivaen (In das Rivaen-Verzeichnis wechseln)

** Befehl zum Erstellen der JD-GUI selbst **

$ git clone https://github.com/java-decompiler/jd-gui.git
$ cd jd-gui
$ ./gradlew installOsxDist

↑ Hast du Nani gemacht?

  1. Zeile: Klonen Sie den JD-GUI-Quellcode von github
  2. Zeile In die geklonte JD-GUI verschoben
  3. Zeile: Erstellen Sie die App mit gradle ist Wenn du das tust ** Rivaen → jd-gui → → erstellen → installieren → jd-gui-osx ** Im 7.png ** JD-GUI.app ** ist fertig ...! Das Klonen und Erstellen dauerte weniger als eine Minute

Jetzt! Wenn Sie die zuvor erstellte JAR-Datei endgültig öffnen, klicken Sie mit der rechten Maustaste auf diese 10.png

**Ich sah es! ** ** ** (Dies ist übrigens der Originalcode in Kotlin)

[1] ist vorbei ** Danke für Ihre Unterstützung! !! ** ** **

Fazit

Bewahren Sie den Quellcode der App an einem sicheren Ort auf, um ihn nicht zu verlieren

** Morgen ist endlich Weihnachten"Adventskalender 2017 für Sportingenieure" ist die letzte Person, die @Nkzn dekoriert! ** ** **

Recommended Posts

[2018 Preservation Version] Reverse Engineering Android App (.apk) auf Mac
ROS App Entwicklung auf Android
Hinweise zum Aufrufen von Installer in der Android App
Ich habe eine Taschenrechner-App für Android erstellt
Ermöglicht die automatische Wiedergabe von Youtube auch mit der Android-App von Cordova
Meine Gedanken zur Zukunft [Gradle App Version ①]
Bis Sie anfangen, Android-Apps auf dem Mac zu entwickeln
Führen Sie Edge (Chromium-Version) auf einem Mac mit Selen aus
Holen Sie sich Ihre Versionsnummer in der Android-App