Gibt es eine Möglichkeit, den Quellcode aus einer APK-Datei abzurufen?

1262

Die Festplatte meines Laptops ist gerade abgestürzt und ich habe den gesamten Quellcode für eine App verloren, an der ich in den letzten zwei Monaten gearbeitet habe. Ich habe nur die APK-Datei, die in meiner E-Mail gespeichert ist, als ich sie an einen Freund gesendet habe.

Gibt es eine Möglichkeit, meinen Quellcode aus dieser APK-Datei zu extrahieren?

Frank Bozzo
quelle
28
Zu
Ihrer Information
11
Bedeutet dies, dass wir Quellcode von Apps im Wert von Millionen Dollar wie WhatsApp oder Facebook erhalten können? Ist das alles Open Source?
Faizan
3
@Faizan hast du schon von Proguard gehört ??
Vishwajit Palankar
1
Die Formulierung der Frage enthält irrelevante Leckerbissen aus der Lebensgeschichte und kann als solche als Empfehlung eines Werkzeugs interpretiert werden . Die Antwort könnte jedoch möglicherweise gewesen sein javac -decompile, was dann den SO-Richtlinien entsprechen würde. Es scheint mir, dass die Antworten nicht zum Thema gehören , nicht die Frage.
SwiftArchitect
2
In diesem Artikel erklären sie, wie sie Pokemon Go
anders

Antworten:

1569

Einfacher Weg: Verwenden Sie das Online-Tool http://www.javadecompilers.com/apk , laden Sie apk hoch und holen Sie sich den Quellcode.


Verfahren zum Dekodieren von APK-Dateien, schrittweise Methode:

Schritt 1:

  1. Erstellen Sie einen neuen Ordner und kopieren Sie die APK-Datei, die Sie dekodieren möchten.

  2. Benennen Sie nun die Erweiterung dieser APK-Datei in ZIP um (z. B. von Dateiname.apk in Dateiname.zip umbenennen) und speichern Sie sie. Jetzt können Sie auf die files.dex-Dateien usw. zugreifen. In diesem Stadium können Sie Drawables sehen, jedoch keine XML- und Java-Dateien. Fahren Sie also fort.

Schritt 2:

  1. Extrahieren Sie nun diese ZIP-Datei im selben Ordner (oder im NEUEN ORDNER).

  2. Laden Sie dex2jar herunter und extrahieren Sie es in denselben Ordner (oder NEUEN ORDNER).

  3. Verschieben Sie die Datei classes.dex in den Ordner dex2jar.

  4. Öffnen Sie nun die Eingabeaufforderung und wechseln Sie in das Verzeichnis (oder den NEUEN ORDNER). Schreiben Sie dann d2j-dex2jar classes.dex(für Mac Terminal oder Ubuntu Write ./d2j-dex2jar.sh classes.dex) und drücken Sie die Eingabetaste. Sie haben jetzt die Datei classes.dex.dex2jar im selben Ordner.

  5. Laden Sie den Java-Dekompiler herunter , doppelklicken Sie auf jd-gui, klicken Sie auf Datei öffnen und öffnen Sie die Datei classes.dex.dex2jar aus diesem Ordner: Jetzt erhalten Sie Klassendateien.

  6. Speichern Sie alle diese Klassendateien (Klicken Sie in jd-gui auf Datei -> Alle Quellen speichern) unter dem Namen src. Zu diesem Zeitpunkt erhalten Sie die Java-Quelle, aber die XML-Dateien sind immer noch nicht lesbar. Fahren Sie also fort.

Schritt 3:

Öffnen Sie nun einen weiteren neuen Ordner

  1. Fügen Sie die APK-Datei ein, die Sie dekodieren möchten

  2. Laden Sie die neueste Version von apktool AND apktool install window herunter (beide können über denselben Link heruntergeladen werden) und legen Sie sie im selben Ordner ab

  3. Öffnen Sie ein Befehlsfenster

  4. Führen Sie nun den Befehl wie apktool if framework-res.apk(wenn Sie ihn nicht haben, holen Sie ihn hier ab ) und den nächsten aus

  5. apktool d myApp.apk (wobei myApp.apk den Dateinamen bezeichnet, den Sie dekodieren möchten)

Jetzt erhalten Sie einen Dateiordner in diesem Ordner und können die XML-Dateien der apk leicht lesen.

Schritt 4:

Es ist kein Schritt, kopieren Sie einfach den Inhalt beider Ordner (in diesem Fall beide neuen Ordner) in einen einzigen

und genieße den Quellcode ...

Prankul Garg
quelle
26
@prankulgarg, In Punkt 5 von Schritt 3 erhalte ich folgende Fehlermeldung: Zugriff auf Jarfile E nicht möglich: \ apktojava \ testt \\ apktool.jar
55
Anstatt dex2jar classes.dex in cmd zu schreiben, probieren Sie d2j-dex2jar classes.dex aus . Da dex2jar classes.dex dieses cmd veraltet ist.
Umesh
23
Für diejenigen, die nicht finden können framework-res.apk. Laden Sie es hier
atulkhatri
12
Diejenigen, die d2j-dex2jar.sh nicht gefunden haben, laden dex2jar hier herunter: dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed
14
Für Leute, die in Schritt 2: 4 stecken, laden Sie diese Version herunter und sie wird das Problem lösen: sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download hat es für mich getan. @ Delive
Siriuseteor77
126

Dies ist eine alternative Beschreibung - nur für den Fall, dass jemand mit der obigen Beschreibung nicht weiterkommt. Folge den Schritten:

  1. Download apktool.bat(oder apktoolfür Linux) und apktool_<version>.jarvon http://ibotpeaches.github.io/Apktool/install/
  2. Benennen Sie die JAR-Datei von oben in um apktool.jarund legen Sie beide Dateien im selben Ordner ab

  3. Öffnen Sie eine Dos-Box ( cmd.exe) und wechseln Sie in diesen Ordner. Stellen Sie sicher, dass eine Java-Umgebung installiert ist (unter Linux lesen Sie auch die Hinweise zu den erforderlichen Bibliotheken).
  4. Start: apktool decode [apk file]

    Zwischenergebnis : Ressourcendateien,AndroidManifest.xml

  5. Entpacken Sie die APK-Datei mit einem Entpacker Ihrer Wahl

    Zwischenergebnis :classes.dex

  6. Herunterladen und Extrahieren dex2jar-0.0.9.15.zipvon http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. Drag & Drop classes.dexauf dex2jar.bat(oder <path_to>\dex2jar.bat classes.dexin ein DOS-Feld eingeben ; für Linux dex2jar.sh)

    Zwischenergebnis :classes_dex2jar.jar

  8. entpacken classes_dex2jar.jar(kann je nach verwendetem Dekompiler optional sein)
  9. dekompilieren Sie Ihre Klassendateien (zB mit JD-GUI oder DJ Decompiler )

    Ergebnis : Quellcode

Hinweis: Pakete von Drittanbietern dürfen nicht dekompiliert werden. Dieses Handbuch dient nur zur Wiederherstellung des persönlichen Quellcodes aus einer APK-Datei. Schließlich wird der resultierende Code höchstwahrscheinlich verschleiert

Trinimon
quelle
6
Ich könnte auch hinzufügen, dass es eine moderne Alternative zu dieser APKTool-> dex2jar-> JD-GUI-Route gibt! Probieren Sie einfach den Open-Source-APK- und DEX-Dekompiler Jadx aus: sourceforge.net/projects/jadx/files Es gibt auch eine Online-Version hier: javadecompilers.com/apk
Andrew Rukin
1
Es ist erlaubt (read: legal), jede APK-Datei zu dekompilieren . Siehe die folgende Frage: stackoverflow.com/questions/9674557/…
Rakete1111
1
Warum diese apktoolRückgabedateien smali? Wie bekomme ich eine javaDatei?
rminaj
108

Während Sie möglicherweise in der Lage sind, Ihre APKDatei zu dekompilieren , werden Sie wahrscheinlich auf ein großes Problem stoßen:

Der von Ihnen geschriebene Code wird nicht zurückgegeben. Stattdessen wird alles zurückgegeben, was der Compiler inline angegeben hat, wobei Variablen zufällige Namen sowie Funktionen zufällige Namen erhalten. Der Versuch, ihn zu dekompilieren und in den von Ihnen verwendeten Code wiederherzustellen, kann erheblich länger dauern als der Neustart.

Leider haben solche Dinge viele Projekte getötet.
Für die Zukunft empfehle ich dringend, ein Versionskontrollsystem wie CVS , SVN und Git usw. zu erlernen .

und wie man es sichert.

Ryan Gooler
quelle
19
Ein Dienst wie Dropbox wird ebenfalls helfen.
Jeremy Logan
1
und es gibt immer eine Möglichkeit, CDs zu brennen
JerryGoyal
52

Es gibt auch eine neue Anwendung im Play Store, mit der es möglich ist, eine apk (auch Systemanwendungen) zu dekompilieren und den Quellcode direkt auf Ihrem Smartphone anzuzeigen. Die Dateien werden auf Ihrer SD-Karte gespeichert, sodass Sie sie auch auf Ihrem Computer anzeigen können. Es erfordert keine Wurzel oder etwas anderes.

Einfach installieren und Spaß haben. Ich denke, dies ist der einfachste Weg, eine App zu dekompilieren.

Cilenco
quelle
1
Dieser ist der einfachste.
Midhun Vijayakumar
@MidhunVijayakumar Könnten Sie in der Lage sein, die apk zur Quellcode-Konvertierung mit dieser?
Sajeev
28

apktool ist das Beste, was Sie versuchen können. Ich habe einige XML damit gespeichert, aber ehrlich gesagt weiß ich nicht, wie es mit dem .java-Code funktionieren wird.

Ich würde Ihnen empfehlen, ein Code-Repository zu haben, auch wenn Sie der einzige Codierer sind. Ich habe Project Locker für meine eigenen Projekte verwendet. Es gibt Ihnen kostenlose SVN- und Git-Repos.

Makrig
quelle
Sie finden Apktool unverzichtbar, wenn Sie Ressourcen extrahieren möchten (dh Bilder aus einer Android-Anwendung. Tatsächlich hat das Tool überhaupt keine Konkurrenten!). Eine Online-Version des Apktools finden Sie hier: www.javadecompilers.com/apktool
Andrew Rukin
23

In diesen beiden Artikeln wird beschrieben, wie Sie die Verwendung apktoolund Verwendung dex2jareiner APKDatei kombinieren und ein Eclipse-Projekt erstellen, mit dem sie erstellt und ausgeführt werden kann.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

Grundsätzlich Sie:

  1. Verwenden Sie apktooldiese Option , um die Ressourcendateien aus der apk zu entfernen
  2. Verwenden Sie dex2jardiese Option, um eine JAR-Datei abzurufen, die die Klassen in einem Format enthält, das Eclipse gefällt.
  3. Erstellen Sie ein Eclipse-Projekt, und zeigen Sie auf die Ressourcendateien und die neue JAR-Datei
  4. Öffnen Sie die JAR-Datei mit einem Zip-Dienstprogramm und löschen Sie die vorhandenen Ressourcen
  5. Öffnen Sie die JAR-Datei mit JDGui, um den Quellcode anzuzeigen
  6. Nehmen Sie den Quellcode, den Sie benötigen JDGui, stecken Sie ihn in eine Klasse in Eclipse und ändern Sie ihn
  7. Löschen Sie diese Klasse aus der JAR-Datei (damit Sie nicht dieselbe Klasse mehrmals definiert haben).
  8. Starte es.
Tom Hennen
quelle
2
Ich weiß, dass diese Frage noch beantwortet wird, ich möchte eine Information weitergeben: Es gibt einen Online-Dekompiler für Android-Apks. Decompileandroid.com Laden Sie apk vom lokalen Computer hoch .
Snehal Masne
2
Klingt gut. Und dann hat die Website decompileandroid auch eine Kopie Ihrer gesamten Quelle! Klug!
DDSports
Eine Frage, ich habe eine apk dekompiliert, aber in jd gui weiß ich nicht, ob es die wirklichen Klassen von Java gibt. Weißt du, ob eine apk dekompiliert ist, gibt es die wirklichen Java-Klassen?
21

apktool wird funktionieren. Sie müssen nicht einmal den Keystore kennen, um den Quellcode zu extrahieren (was ein bisschen beängstigend ist). Der Hauptnachteil ist, dass die Quelle im Smali-Format anstelle von Java dargestellt wird. Andere Dateien wie das Symbol und die Datei main.xml funktionieren jedoch einwandfrei, und es kann sich lohnen, diese zumindest wiederherzustellen. Letztendlich müssen Sie Ihren Java-Code höchstwahrscheinlich von Grund auf neu schreiben.

Sie finden apktool hier . Laden Sie einfach apktool und den entsprechenden Helfer herunter (für Windows, Linux oder Mac OS). Ich empfehle, ein Werkzeug wie 7-zip zu verwenden, um sie auszupacken.

Ryan Berger
quelle
16

Es gibt einige Möglichkeiten, dies zu tun:

  1. Verwenden Sie die Funktion "Profil oder Debuggen von APK" in Android Studio 3.0.

    Sie können APKs in Android Studio öffnen und erkunden. Klassen werden in Smali zerlegt. Ressourcen werden nicht extrahiert und Dinge wie "Gehe zur Definition", "Alle Referenzen finden" und Debuggen funktionieren ohne den Quellcode nicht (Android Studio 3.0 Canary 9). Einige zusätzliche Smali-Funktionen funktionieren möglicherweise mit Smalidea .

    Android-Studio

    Datei aussuchen

    Code

  2. Verwenden Sie Jadx .

    Jadx dekompiliert den Code in einer bestimmten APK in Java-Quelldateien.

    jdax-img

  3. Verwenden Sie apktool .

    Apktool ist ein Befehlszeilenprogramm, das Ressourcen extrahiert und Code für eine bestimmte apk in smali dekompiliert. Sie können auch mit apktool neu kompilieren. Hier ist ein Beispiel dafür in Aktion:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
0xcaff
quelle
Ich habe Jadx ausprobiert, aber selbst mit einfacher Helloworld, obwohl es in Java dekompiliert wurde. Der Versuch, das Projekt in Android Studio zu öffnen und es wieder in apk zu kompilieren, schlägt jedoch aus vielen Gründen fehl (Duplizierungsdateien usw.). Gibt es eine Methode, die Java erstellt, die zurück zu apk kompiliert werden kann?
Ransh
1
@ransh Normalerweise benutze ich jadx, um den Code zu lesen, und dann apktool, um den Code zu ändern. apktool erstellt kein Java, ermöglicht jedoch das Neukompilieren.
0xcaff
0xcaff, danke für die Klarstellung. das macht jetzt Sinn. Weil der Versuch, ein dekompiliertes Java in Android Studio zu kompilieren, nicht funktionierte.
Ransh
16

Vielleicht ist es einfach, die Quelle zu sehen:

In Android Studio 2.3 , Build -> Analyze APK -> Select the apk that you want to decompile.
Sie werden den Quellcode sehen.

Link als Referenz:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2

SKK
quelle
9
Es listet Klassen und Methoden auf, gibt jedoch keinen Quellcode an.
WSS
Sie können die oben genannten Dateien nur erhalten, indem Sie ".apk" in ".zip" ändern
M. Usman Khan
7

Ich zeige Ihnen einen anderen Weg, um die APK- Dateien zu dekompilieren .

Sie können den ersten 2 Schritten von " prankul garg " folgen . Sie haben also noch andere Möglichkeiten:

Schritt 3':

Laden Sie die "JD-GUI" herunter, die leicht zu finden ist. Öffnen Sie Ihre JAR- Datei in "jd-gui.exe". (Datei> Datei öffnen> ' JAR- Datei gefunden'). Nach diesem Vorgang können Sie alle Ressourcen in einer ZIP- Datei speichern.

Damit,

1. Sie müssen die APK- Datei in ZIP umbenennen

2. - Sie haben zu dekodieren .dex Datei (wenn Sie möchten, die dekodieren APK - Datei dex2jar , die möglich ist)

3. Sie müssen die JAR- Datei mit der JD-GUI dekodieren

Franklin Hirata
quelle
20
Was bietet diese Antwort, was die anderen nicht tun?
Jørgen R
Sie müssen es nicht wirklich in zip umbenennen. Ich könnte die apk datei direkt mit 7-zip öffnen.
miva2
7

Unter dem ONLINE- Tool:

http://www.javadecompilers.com/apk

Es erledigt ALLES mit einem Klick: dekompilierte Java-Dateien + Ressourcen + XML (in einer ZIP-Datei) mit einem sehr guten Dekompiler (Jadx gibt Java-Code an Stellen / Funktionen zurück, an denen andere Kompilierungen Kommentare innerhalb der Funktion "Nicht dekompilierbar" oder andere zurückgeben Android Assembler / Maschinencode)

Kamil Kiełczewski
quelle
Ja, das ist großartig, aber anstelle von Funktionsnamen wurden alle Funktionsnamen in CS1001 usw. geändert. Wie erkennt man diese? und noch etwas: Können wir diese dekompilierte apk direkt als unser Android-Studio-Projekt verwenden? Wird es funktionieren?
Zia Ur Rahman
dann zu welchem ​​Zweck verwenden wir, um einige apk zu dekompilieren, wenn wir ihre Funktionalität in unseren Apps nicht verwenden können.
Zia Ur Rahman
@ ZiaUrRahman Ich weiß es nicht. In meinem Fall dekompiliere ich jedoch Code, um den Algorithmus zu analysieren. Überprüfen Sie, ob dekompilierter Code aus diesem Tool von Android Studio vollautomatisch kompiliert werden kann - oder benötigen Sie eine "menschliche Verarbeitung"?
Kamil Kiełczewski
1
Ich habe das dekompilierte Projekt in Android Studio importiert, aber kein Gradle dort und das Projekt haben viele Dateien, haben es aber erst verstanden, als wir es ausgeführt haben. Einfach hat es nicht funktioniert. Ich muss das dekompilierte Projekt in Android Studio vollständig funktionsfähig machen und dann einige Kernfunktionen von einigen erhalten, um es dann in meinem eigenen Projekt zu verwenden / einzubetten. Gibt es eine Möglichkeit, dies zu tun?
Zia Ur Rahman
6

Diese Seite https://www.apkdecompilers.com/ hat es automatisch gemacht.

Ich habe zuerst die in der akzeptierten Antwort erwähnte Seite ausprobiert, aber das hat bei mir nicht funktioniert.

M. Usman Khan
quelle
Ich konnte meinen Java-Quellcode nicht abrufen ... es scheint etwas wie angehängte Datei und ...
Iman Kazemayni
@imankazemayni im obigen Link "navigieren" Sie zu Ihrer APK-Datei und klicken Sie auf "APK dekompilieren". Es wird einige Zeit dauern und dann sollte es Ihnen den Quellcode geben, wenn der Code nicht verschlüsselt ist.
M. Usman Khan
Wissen Sie, dass Multidex Auswirkungen auf die Verschlüsselung hat?
Iman Kazemayni
6

Ich persönlich empfehle Show Java Android App , um den Quellcode zu erhalten. Sie können es im Play Store oder hier herunterladen

Codelover
quelle
Meistens funktionieren Online-Compiler nicht, aber diese App funktioniert. Vielen Dank
Sunil
4

Apktool für Reverse Engineering von geschlossenen, binären Android-Apps von Drittanbietern.

Es kann Ressourcen in nahezu ursprüngliche Form dekodieren und nach einigen Änderungen neu erstellen.

Es ermöglicht das schrittweise Debuggen von Smali-Code. Außerdem erleichtert es die Arbeit mit einer App aufgrund der projektähnlichen Dateistruktur und der Automatisierung einiger sich wiederholender Aufgaben wie dem Erstellen von apk usw.

http://ibotpeaches.github.io/Apktool/

Biswajit Karmakar
quelle
3

apktool ist DER richtige Weg. Es gibt auch einen Online-Apktool-Dienst: http://www.javadecompilers.com/apktool

Offensichtlich gibt es einige Einschränkungen aufgrund des "Online-Charakters" des Dienstes: Sie können Assets und die Manifestdatei extrahieren und recherchieren, aber es ist derzeit nicht möglich, die Anwendung neu zu kompilieren.

Dies ist jedoch eine problemlose Möglichkeit, die Android-Anwendung zu öffnen.

Andrew Rukin
quelle
3

Sie können DexPatcher ausprobieren . Es lässt sich sogar in Android Studio integrieren. Es verwendet intern Apktool und Dex2Jar .
Sie können diese Tools auch unabhängig voneinander verwenden. Apktool dekompiliert apk und extrahiert .dex-Dateien, die mit Dex2Jar weiter in jar konvertiert werden können. Jar kann mithilfe der JD-GUI dekompiliert werden . Sie können den Java-Code mit Hilfe dieses Tools anzeigen. Obwohl die Ähnlichkeit des dekompilierten Codes mit dem tatsächlichen Code nicht garantiert werden kann. Es gibt einige fortschrittliche Tools zur Verschleierung von Code auf dem Markt, die den Code durcheinander bringen, um das Dekompilieren / Verstehen zu erschweren. z.B. Proguard

Lakshmikant Deshpande
quelle
Hallo Wie verwende ich DexPatcher mit Android Studio?
Ravi152
Kann nicht alles in Kommentaren erklären. Google ist dein Freund :) Es gibt auch einige nette Youtube-Tutorials.
Lakshmikant Deshpande
2

basierend auf Ihrem Zustand, wenn Ihr Android apk:

Bedingung 1: NICHT aushärten (von Tencent Legu / Qihoo 360 / ...)

Wahl1: Nutzung des Onlinedienstes

sowie:

mit www.javadecompilers.com

gehe zu:

um automatisch von apk in java quellcode zu dekodieren

Schritte:

uploadapk datei + klick Run+ warte einige zeit + klick Downloadum zip zu bekommen + entpacken ->

sources/com/{yourCompanyName}/{yourProjectName}

ist Ihr erwarteter Java-Quellcode

Wahl 2: selbst dekompilieren / knacken

Verwenden Sie das entsprechende Tool, um selbst zu dekompilieren / zu knacken:

benutze jadx/ jadx-guikonvertiere apknachjava sourcecode

Laden Sie jadx-0.9.0.zip herunter und entpacken Sie es bin/jadx, um es zu erhalten. Dann:

  • Befehlszeilenmodus:
    • im Terminallauf: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • output_folder zeigt decodierte sourcesundresources
      • sources/com/{yourCompanyName}/{yourProjectName} ist dein erwartet java sourcecode
  • GUI-Modus
    • Doppelklick zum Ausführen jadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/ Windows jadx-gui.bat)
    • apkDatei öffnen
    • es wird automatisch dekodiert -> sehen Sie Ihren erwarteten Java-Quellcode
    • save all oder save as Gradle project

z.B:

Bedingung 2: aushärten (von Tencent Legu / Qihoo 360 / ...)

die Hauptmethode von 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

ausführliche Erklärung:

Schritt 1: apk/app to dex

Verwenden FDex2Sie die Dump / Hook-Out- dexDatei (eine oder mehrere) des Tools ( / DumpDex) aus der laufenden App

Schritte:

Umgebung vorbereiten

Dump dexaus laufender App

  • Führen Sie FDex2dann Ihren APK-Namen aus, um später das Erfassen / Aushängen von Dex zu aktivieren

  • (im Telefon / Emulator) Führen Sie Ihre App aus
  • finde und kopiere den Dump aus ganzen apk Ressourcen in /data/data/com/yourCompanyName/yourProjectName
    • In seinem Stammordner finden sich normalerweise mehrere dexDateien

Schritt 2: dex to jar

Verwenden Sie tool ( dex2jar), um (die spezifische, App-Logik enthaltende) dexDatei in jarDatei zu konvertieren

download dex2jar got dex-tools-2.1-SNAPSHOT.zip , entpacke got dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh, dann

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

z.B:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

Schritt 3: jar to java src

Verwenden Sie eines der Tools:

konvertieren jarzujava src

für den Konvertierungseffekt von jar zu java src:

Jadx> Procyon> CRF>>JD-GUI

daher empfehlen: Jadx/jadx-gui

Schritte:

  • Doppelklicken Sie, um auszuführen jadx-gui
  • dexDatei öffnen
  • File -> save all

z.B:

exportiert java src:


Eine ausführlichere Erklärung finden Sie in meinem Online-E-Book- Chinesisch- Tutorial:

Crifan
quelle
2

Android Studio bietet Ihnen die Möglichkeit, jede APK-Datei zu analysieren.

1 - Wählen Sie im Build-Menü die Option apk analysieren und dann apk-Datei. 2 - Dies führt dazu, dass Sie die Datei classes.dex und andere Dateien erhalten. 3 - Klicken Sie auf classes.dex, um eine Liste der Ordner, Pakete, Bibliotheken und Dateien anzuzeigen. 4 - Installieren Sie in den Android Studio-Einstellungen ein Plugin namens "Dex to Jar". 5 - Klicken Sie auf eine beliebige Aktivitätsdatei Ihres extrahierten Projekts und wählen Sie im Build-Menü die Option "Dex to jar".

Dadurch erhalten Sie den tatsächlichen Code Ihrer Java-Datei.

Prost.

Rohit Patil
quelle
1

Der einfachste Weg ist die Verwendung von Apk OneClick Decompiler. Dies ist ein Toolpaket zum Dekompilieren und Disassemblieren von APKs (Android-Paketen).

EIGENSCHAFTEN

  • Alle Funktionen sind in das Rechtsklick-Menü von Windows integriert.
  • Dekompilieren Sie APK-Klassen in Java-Quellcodes.
  • Zerlegen Sie APK in Smali-Code und dekodieren Sie seine Ressourcen.
  • Installieren Sie APK auf dem Telefon, indem Sie mit der rechten Maustaste klicken.
  • Kompilieren Sie APK neu, nachdem Sie Smali-Code und / oder Ressourcen bearbeitet haben. Während des Neukompilierens:
  • Png-Bilder optimieren
  • Zeichen apks
  • Zipalign

ANFORDERUNGEN

Java Runtime Environment (JRE) muss installiert sein.

Sie können es von diesem Link herunterladen Apk OneClick Decompiler

Geniesse es.

Masoud Mokhtari
quelle
1

Ich fand Folgendes als einfachste Methode:

  1. Benennen Sie Ihre app.apk in app.zip um (Ändern Sie die Erweiterung von apk in zip)
  2. Extrahieren Sie die Zip-Datei in einen Ordner
  3. Verwenden Sie das JADX- Tool, um den Quellcode zu lesen, der in der Datei classes.dex enthalten ist.
Masood Anwar
quelle
1

Es gibt eine App dafür und dauert in der Regel nur ein paar Klicks und Sie sind fertig. https://github.com/Nuvolect/DeepDive-Android

  1. Wählen Sie Apps aus und wählen Sie unter "Installierte Apps" Ihre App aus. Wenn es nicht da ist, können Sie die APK laden.
  2. Wählen Sie "APK extrahieren"
  3. Wählen Sie "APK auspacken"
  4. Wählen Sie "Mit Jadx dekompilieren". Dies kann je nach Geschwindigkeit Ihres Geräts einige Sekunden oder einige Minuten dauern

Danach können Sie den Quellcode durchsuchen, ihn mit elFinder auf einen anderen Computer herunterladen oder ihn mit Lucene durchsuchen.

Zusätzlich zu Jadx verfügt es über CFR- und Fernflower-Dekompilierer.

MobileMateo
quelle
0

Ich habe mich tagelang verrückt gemacht und versucht, dex2jar dazu zu bringen, an einem Fedora 31-Laptop gegen eine Apk zu arbeiten, die einfach nicht funktionieren würde. Dieses Python 3-Skript hat den Trick in wenigen Minuten erledigt und durch die Installation von jd-gui wurden Klassendateien für den Menschen lesbar gemacht.

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

Im Einzelnen habe ich Folgendes ausgeführt:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

Jetzt sollte man in der Lage sein, Folgendes zu tun, um Klassendateien zu erhalten:

$> enjarify yourapkfile.apk

Und um jd-gui zu starten:

$> jd-gui

Dann öffnen Sie einfach Ihre Klassendateien!

RJ Cole
quelle
0

Ich habe einen Tool - Code Analyzer entwickelt, der auf iPhone / iPad / Mac läuft, um Java / Android-Dateien zu analysieren, https://decompile.io

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Qing Xu
quelle
0

Verwenden Sie dieses Tool http://www.javadecompilers.com/

Vor kurzem ist eine neue Welle von Dekompilierern auf den Markt gekommen: Procyon, CFR, JD, Fernflower, Krakatau, Candle.

Hier ist eine Liste der auf dieser Site vorgestellten Dekompilierer:

CFR - Kostenlos, kein Quellcode verfügbar, http://www.benf.org/other/cfr/ Autor: Lee Benfield

Sehr gut aktualisierter Dekompiler! CFR ist in der Lage, moderne Java-Funktionen zu dekompilieren - Java 9-Module, Java 8-Lambdas, Java 7-String-Switches usw. Es macht sogar einen ordentlichen Versuch, Klassendateien aus anderen JVM-Sprachen wieder in Java umzuwandeln!

JD - kostenlos nur für nichtkommerzielle Zwecke, http://jd.benow.ca/ Autor: Emmanuel Dupuy

Aktualisiert im Jahr 2015. Verfügt über eine eigene visuelle Oberfläche und Plugins für Eclipse und IntelliJ. In C ++ geschrieben, also sehr schnell. Unterstützt Java 5.

Procyon - Open Source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Autor: Mike Strobel

Fernflower - Open Source, https://github.com/fesh0r/fernflower Autor: Egor Ushakov

Aktualisiert im Jahr 2015. Sehr vielversprechender analytischer Java-Dekompiler, der jetzt ein integraler Bestandteil von IntelliJ 14 wird. ( Https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Unterstützt Java bis Version 6 (Anmerkungen, Generika, Aufzählungen)

JAD - hier nur aus historischen Gründen angegeben. Kostenlos, kein Quellcode verfügbar, jad Download-Spiegel Autor: Pavel Kouznetsov

Faxriddin Abdullayev
quelle