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?
android
android-resources
decompiling
apk
Frank Bozzo
quelle
quelle
javac -decompile
, was dann den SO-Richtlinien entsprechen würde. Es scheint mir, dass die Antworten nicht zum Thema gehören , nicht die Frage.Antworten:
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:
Erstellen Sie einen neuen Ordner und kopieren Sie die APK-Datei, die Sie dekodieren möchten.
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:
Extrahieren Sie nun diese ZIP-Datei im selben Ordner (oder im NEUEN ORDNER).
Laden Sie dex2jar herunter und extrahieren Sie es in denselben Ordner (oder NEUEN ORDNER).
Verschieben Sie die Datei classes.dex in den Ordner dex2jar.
Ö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.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.
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
Fügen Sie die APK-Datei ein, die Sie dekodieren möchten
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
Öffnen Sie ein Befehlsfenster
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 ausapktool 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 ...
quelle
framework-res.apk
. Laden Sie es hierDies ist eine alternative Beschreibung - nur für den Fall, dass jemand mit der obigen Beschreibung nicht weiterkommt. Folge den Schritten:
apktool.bat
(oderapktool
für Linux) undapktool_<version>.jar
von http://ibotpeaches.github.io/Apktool/install/apktool.jar
und legen Sie beide Dateien im selben Ordner abcmd.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).apktool decode [apk file]
Zwischenergebnis : Ressourcendateien,
AndroidManifest.xml
Zwischenergebnis :
classes.dex
dex2jar-0.0.9.15.zip
von http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=classes.dex
aufdex2jar.bat
(oder<path_to>\dex2jar.bat classes.dex
in ein DOS-Feld eingeben ; für Linuxdex2jar.sh
)Zwischenergebnis :
classes_dex2jar.jar
classes_dex2jar.jar
(kann je nach verwendetem Dekompiler optional sein)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
quelle
apktool
Rückgabedateiensmali
? Wie bekomme ich einejava
Datei?Während Sie möglicherweise in der Lage sind, Ihre
APK
Datei 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.
quelle
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.
quelle
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.
quelle
In diesen beiden Artikeln wird beschrieben, wie Sie die Verwendung
apktool
und Verwendungdex2jar
einerAPK
Datei kombinieren und ein Eclipse-Projekt erstellen, mit dem sie erstellt und ausgeführt werden kann.Grundsätzlich Sie:
apktool
diese Option , um die Ressourcendateien aus der apk zu entfernendex2jar
diese Option, um eine JAR-Datei abzurufen, die die Klassen in einem Format enthält, das Eclipse gefällt.JDGui
, um den Quellcode anzuzeigenJDGui
, stecken Sie ihn in eine Klasse in Eclipse und ändern Sie ihnquelle
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.
quelle
Es gibt einige Möglichkeiten, dies zu tun:
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 .
Verwenden Sie Jadx .
Jadx dekompiliert den Code in einer bestimmten APK in Java-Quelldateien.
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:
quelle
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
quelle
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
quelle
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)
quelle
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.
quelle
Ich persönlich empfehle Show Java Android App , um den Quellcode zu erhalten. Sie können es im Play Store oder hier herunterladen
quelle
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/
quelle
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.
quelle
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
quelle
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:
upload
apk datei + klickRun
+ warte einige zeit + klickDownload
um 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-gui
konvertiereapk
nachjava sourcecode
Laden Sie jadx-0.9.0.zip herunter und entpacken Sie es
bin/jadx
, um es zu erhalten. Dann:jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
sources
undresources
sources/com/{yourCompanyName}/{yourProjectName}
ist dein erwartetjava sourcecode
jadx-0.9.0/bin/jadx-gui
(Linuxjadx-gui.sh
/ Windowsjadx-gui.bat
)apk
Datei öffnensave all
odersave as Gradle project
z.B:
Bedingung 2: aushärten (von Tencent Legu / Qihoo 360 / ...)
die Hauptmethode von
3 steps
:apk/app to dex
dex to jar
jar to java src
ausführliche Erklärung:
Schritt 1:
apk/app to dex
Verwenden
FDex2
Sie die Dump / Hook-Out-dex
Datei (eine oder mehrere) des Tools ( / DumpDex) aus der laufenden AppSchritte:
Umgebung vorbereiten
root
ed androidFDex2
/ DumpDex in XPosed und aktiviere esDump
dex
aus laufender AppFühren Sie
FDex2
dann Ihren APK-Namen aus, um später das Erfassen / Aushängen von Dex zu aktivieren/data/data/com/yourCompanyName/yourProjectName
dex
DateienSchritt 2:
dex to jar
Verwenden Sie tool (
dex2jar
), um (die spezifische, App-Logik enthaltende)dex
Datei injar
Datei zu konvertierendownload dex2jar got dex-tools-2.1-SNAPSHOT.zip , entpacke got
dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh
, dannsh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex
z.B:
Schritt 3:
jar to java src
Verwenden Sie eines der Tools:
konvertieren
jar
zujava src
für den Konvertierungseffekt von jar zu java src:
Jadx
>Procyon
>CRF
>>JD-GUI
daher empfehlen:
Jadx
/jadx-gui
Schritte:
jadx-gui
dex
Datei öffnenFile
->save all
z.B:
exportiert java src:
Eine ausführlichere Erklärung finden Sie in meinem Online-E-Book- Chinesisch- Tutorial:
quelle
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.
quelle
Der einfachste Weg ist die Verwendung von Apk OneClick Decompiler. Dies ist ein Toolpaket zum Dekompilieren und Disassemblieren von APKs (Android-Paketen).
EIGENSCHAFTEN
ANFORDERUNGEN
Java Runtime Environment (JRE) muss installiert sein.
Sie können es von diesem Link herunterladen Apk OneClick Decompiler
Geniesse es.
quelle
Ich fand Folgendes als einfachste Methode:
quelle
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
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.
quelle
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:
Jetzt sollte man in der Lage sein, Folgendes zu tun, um Klassendateien zu erhalten:
Und um jd-gui zu starten:
Dann öffnen Sie einfach Ihre Klassendateien!
quelle
Ich habe einen Tool - Code Analyzer entwickelt, der auf iPhone / iPad / Mac läuft, um Java / Android-Dateien zu analysieren, https://decompile.io
quelle
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
quelle