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. Alles, was ich habe, ist die APK-Datei, die in meiner E-Mail ab dem Zeitpunkt gespeichert ist, an dem ich sie an einen Freund gesendet habe.
Gibt es eine Möglichkeit, meinen Quellcode aus dieser APK-Datei zu extrahieren?
Einfacher Weg: Verwenden Sie das Online-Tool http://www.javadecompilers.com/apk , laden Sie apk hoch und holen Sie sich den Quellcode.
Vorgehensweise zum Dekodieren von APK-Dateien, schrittweise Anleitung:
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 filename.apk in filename.Zip umbenennen) und speichern Sie sie. Jetzt können Sie auf die classes.dex-Dateien usw. zugreifen. Zu diesem Zeitpunkt können Sie Drawables, jedoch keine XML- und Java-Dateien anzeigen. Fahren Sie also fort.
Extrahieren Sie nun diese ZIP-Datei in denselben Ordner (oder 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 entsprechende Verzeichnis (oder in den NEUEN ORDNER). Dann schreibe d2j-dex2jar classes.dex
(für Mac-Terminal oder Ubuntu schreibe ./d2j-dex2jar.sh classes.dex
) und drücke Enter. Sie haben jetzt die Datei classes.dex.dex2jar im selben Ordner.
Download Java decompiler , doppelklicken Sie auf jd-gui, klicken Sie auf open file 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 Quelle Java, aber die XML-Dateien sind immer noch nicht lesbar. Fahren Sie also fort.
Öffnen Sie jetzt einen weiteren neuen Ordner
Tragen Sie die .apk-Datei ein, die Sie entschlüsseln möchten
Laden Sie die neueste Version von apktool UND apktool install window herunter (beide können über denselben Link heruntergeladen werden) und platzieren Sie sie im selben Ordner
Öffnen Sie ein Befehlsfenster
Führen Sie nun den Befehl apktool if framework-res.apk
aus (falls Sie ihn nicht haben hier abrufen ) und als nächstes
apktool d myApp.apk
(wobei myApp.apk den Dateinamen angibt, den Sie dekodieren möchten)
jetzt erhalten Sie einen Dateiordner in diesem Ordner und können die XML-Dateien des apk leicht lesen.
Es ist kein Schritt, kopieren Sie einfach den Inhalt beider Ordner (in diesem Fall beide neuen Ordner) in den einzelnen Ordner
und genieße den Quellcode ...
Dies ist eine alternative Beschreibung - für den Fall, dass jemand mit der obigen Beschreibung nicht weiterkommt. Folge den Schritten:
apktool.bat
(oder apktool
für Linux) und apktool_<version>.jar
von http: // ibotpeaches. github.io/Apktool/install/apktool.jar
_ um und speichern Sie beide Dateien im selben Ordnercmd.exe
_) und wechsle in diesen Ordner. Stellen Sie sicher, dass eine Java -Umgebung installiert ist (für Linux beachten 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= herunter und extrahieren Sie esclasses.dex
_ auf _dex2jar.bat
_ (oder geben Sie _<path_to>\dex2jar.bat classes.dex
_ in ein DOS-Feld ein; verwenden Sie für Linux _dex2jar.sh
_) Zwischenergebnis : _classes_dex2jar.jar
_
classes_dex2jar.jar
_ entpacken (kann optional sein, abhängig vom verwendeten Dekompiler)Ergebnis : Quellcode
Hinweis: Pakete von Drittanbietern dürfen nicht dekompiliert werden. Dieses Handbuch dient ausschließlich zur Wiederherstellung des persönlichen Quellcodes aus einer APK-Datei. Schließlich wird der resultierende Code höchstwahrscheinlich verschleiert
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 eingibt, mit Variablen, denen zufällige Namen gegeben wurden, sowie Funktionen, denen zufällige Namen gegeben wurden. Der Versuch, den Code zu dekompilieren und wiederherzustellen, kann erheblich länger dauern als der Versuch, von vorne zu beginnen.
Leider haben solche Dinge viele Projekte getötet.
Für die Zukunft empfehle ich dringend, ein Versionskontrollsystem zu erlernen, wie CVS, SVN und git etc .
und wie man es sichert.
Es gibt auch eine neue Anwendung im Play Store , mit der es möglich ist, eine apk zu dekompilieren (auch Systemanwendungen) und den Quellcode direkt auf Ihrem Smartphone anzuzeigen. Es speichert die Dateien auf Ihrer SD-Karte, so dass Sie sie auch auf Ihrem Computer anzeigen können. Es erfordert keine root oder etwas anderes.
Einfach installieren und Spaß haben. Ich denke, das ist der einfachste Weg, eine App zu dekompilieren.
apktool ist das Beste, was Sie ausprobieren können. Ich habe etwas 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.
In diesen beiden Artikeln wird beschrieben, wie Sie die Verwendung von apktool
und dex2jar
kombinieren, um eine APK
-Datei zu erstellen und ein Eclipse-Projekt zu erstellen, das sie erstellen und ausführen 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:
apktool
, um die Ressourcendateien aus dem apk zu entfernendex2jar
, um eine JAR-Datei abzurufen, die die Klassen in einem von Eclipse gewünschten Format enthält.JDGui
, um den Quellcode anzuzeigenJDGui
, ordnen Sie ihn einer Klasse in Eclipse zu und ändern Sie ihnapktool 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 lohnt sich möglicherweise, diese zumindest wiederherzustellen. Letztendlich werden Sie höchstwahrscheinlich Ihren Java Code von Grund auf neu schreiben müssen.
Sie finden apktool hier . Laden Sie einfach apktool und den entsprechenden Hilfsprogramm (für Windows, Linux oder Mac OS) herunter. Ich empfehle ein Tool wie 7-Zip, um sie zu entpacken.
Hierfür gibt es verschiedene Möglichkeiten:
Verwenden Sie die Funktion "Profile or Debug APK" in Android Studio 3.0.
Sie können APKs in Android Studio öffnen und durchsuchen. Klassen werden in smali dekompiliert. Ressourcen werden nicht extrahiert und Dinge wie "Gehe zu Definition", "Alle Referenzen suchen" und Debugging funktionieren nicht ohne den Quellcode (Android Studio 3.0 Canary 9). Einige zusätzliche kleine Funktionen funktionieren möglicherweise mit smalidea .
Verwenden Sie jadx .
Jadx dekompiliert den Code in einem bestimmten APK in Java Quelldateien.
Verwenden Sie apktool .
Apktool ist ein Kommandozeilen-Tool, das Ressourcen extrahiert und Code für ein bestimmtes Apk in smali dekompiliert. Sie können auch mit apktool neu kompilieren. Hier ist ein Beispiel 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...
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 für referenz:
https://medium.com/google-developers/making-the-most-of-the-apk-analyzer-c066cb871ea2
Unteres ONLINE Tool:
http://www.javadecompilers.com/apk
es macht ALLES mit einem Klick: dekompiliert . Java-Dateien + Ressourcen + xml (in einer .Zip-Datei) mit sehr gutem Dekompiler (jadx return Java Code an Stellen/Funktionen, an denen andere Kompilierungen Kommentare innerhalb von Funktionen zurückgeben, wie "nicht dekompilierbar" oder einige Android Assembler-/Maschinencode)
Diese Site https://www.apkdecompilers.com/ hat es automatisch gemacht.
Ich habe zuerst die Seite ausprobiert, die in der akzeptierten Antwort erwähnt wurde, aber das hat bei mir nicht funktioniert.
Ich zeige Ihnen einen anderen Weg, um die . Apk -Dateien zu dekompilieren.
Sie können die ersten 2 Schritte von " prankul garg " folgen. Sie haben also noch weitere 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> 'Datei . Jar gefunden'). Nach diesem Vorgang können Sie alle Ressourcen in einer . Zip-Datei speichern.
Damit,
1. Sie müssen die Datei . Apk in . Zip umbenennen.
2. Sie müssen . Dex -Datei dekodieren (wenn Sie möchten, dekodieren Sie die . Apk Datei an dex2jar , das ist möglich)
3. Sie müssen eine .jar Datei mit JD-GUI dekodieren.
Ich persönlich empfehle Show Java Android App , um den Quellcode zu erhalten. Sie können es aus dem Play Store oder von hier herunterladen
Apktool für Reverse Engineering-Anwendungen von Drittanbietern, geschlossene, binäre Android Apps.
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, da projektähnliche Dateistrukturen und die Automatisierung einiger sich wiederholender Aufgaben, wie das Erstellen von Apk usw., vorhanden sind.
Sie können versuchen DexPatcher . Es kann sogar in Android Studio integriert werden. 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 mit 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 fortgeschrittene Code-Verschleierung Tools auf dem Markt, die den Code durcheinander bringen, um das Dekompilieren/Verstehen zu erschweren. z.B. Proguard
apktool ist der richtige Weg. Es gibt auch einen Online-Apktool-Dienst: http://www.javadecompilers.com/apktool
Einige Einschränkungen bestehen offensichtlich aufgrund des Service „Online-Charakters“: Sie können Assets und die Manifest-Datei extrahieren und recherchieren, es ist jedoch derzeit nicht möglich, die Anwendung neu zu kompilieren.
Dies ist jedoch eine einfache Möglichkeit, die Anwendung Android zu öffnen.
Android Studio bietet Ihnen die Möglichkeit, jede apk-Datei zu analysieren.
1 - Wähle im Erstellungsmenü die Option "APK analysieren" und wähle eine APK-Datei aus. 2 - Dadurch erhalten Sie die classes.dex-Datei und andere Dateien. 3 - Klicken Sie auf classes.dex, um eine Liste der Ordner, Pakete, Bibliotheken und Dateien anzuzeigen. 4 - In den Studioeinstellungen und Android wird ein Plugin namens "Dex to Jar" installiert. 5 - Klicken Sie auf eine beliebige Aktivitätsdatei Ihres extrahierten Projekts und wählen Sie "Dex to Jar" aus dem Build-Menü.
Dadurch erhalten Sie den tatsächlichen Code Ihrer Java -Datei.
Prost.
Der einfachste Weg ist die Verwendung von Apk OneClick Decompiler. Dies ist ein Toolpaket zum Dekompilieren und Disassemblieren von APKs (Android-Pakete).
FEATURES
ANFORDERUNGEN
Java Runtime Environment (JRE) muss installiert sein.
Sie können es von diesem Link herunterladen Apk OneClick Decompiler
Geniesse es.
Dafür gibt es eine App. In der Regel sind es 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.
Neben Jadx gibt es CFR- und Fernflower-Dekompilierer.
Ich fand das folgende als die einfachste Methode:
basierend auf Ihrem Zustand, wenn Ihr Android apk:
sowie:
gehe zu:
zum automatischen Dekodieren von apk zu Java Quellcode
schritte:
upload
APK-Datei + Klicken Sie auf Run
+ Warten Sie einige Zeit + Klicken Sie auf Download
, um Zip abzurufen + zu entpacken ->
sources/com/{yourCompanyName}/{yourProjectName}
ist Ihr erwarteter Java Quellcode
verwende ein verwandtes Tool, um selbst zu dekompilieren/zu knacken:
jadx
/jadx-gui
konvertiere apk
in Java sourcecode
download jadx-0.9.0.Zip dann entpacken um bin/jadx
zu bekommen, dann:
jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
sources
und resources
sources/com/{yourCompanyName}/{yourProjectName}
ist dein erwarteter Java sourcecode
jadx-0.9.0/bin/jadx-gui
auszuführen (Linux jadx-gui.sh
/Windows jadx-gui.bat
)apk
save all
oder save as Gradle project
z.B:
die Hauptmethode von 3 steps
:
apk/app to dex
dex to jar
jar to Java src
ausführliche Erklärung:
apk/app to dex
verwenden Sie das Tool (FDex2
/DumpDex), um eine (eine oder mehrere) dex
-Datei aus der laufenden App auszugeben
schritte:
root
ed Android FDex2
/ DumpDex in XPosed und aktiviere es dex
aus der laufenden Appstarte FDex2
und klicke dann auf deinen apk-namen, um später dex zu erfassen/auszulösen
/data/data/com/yourCompanyName/yourProjectName
dex
-Dateiendex to jar
verwenden Sie das Tool (dex2jar
), um die dex
-Datei (die spezifische, App-Logik enthaltende) in die jar
-Datei 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
jar to Java src
verwenden Sie eines der folgenden Tools:
jar
in Java src
konvertieren
für von jar nach Java src konvertierenden Effekt:
Jadx
> Procyon
> CRF
>> JD-GUI
daher empfehlen wir die Verwendung von: Jadx
/jadx-gui
schritte:
jadx-gui
auszuführendex
File
-> save all
z.B:
exportiert Java src:
Eine ausführlichere Erklärung finden Sie in meinem Online-eBook Chinesisch Tutorial: