Frage Gibt es eine Möglichkeit, den Quellcode aus einer APK-Datei zu erhalten?


Die Festplatte meines Laptops ist 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 gespeichert ist, als ich sie an einen Freund gesendet habe.

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


1050
2017-08-29 03:40


Ursprung


Antworten:


Einfacher Weg: Verwenden Sie Online-Tool http://www.javadecompilers.com/apk, lade apk hoch und erhalte den Quellcode.


Vorgehensweise zum Dekodieren von .apk-Dateien, Schritt-für-Schritt-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. umbenennen von filename.apk in filename.zip), und speichern Sie sie. Jetzt können Sie auf die classes.dex-Dateien usw. zugreifen. Zu diesem Zeitpunkt können Sie zwar Zeichnungsdateien, aber keine XML- und Java-Dateien anzeigen, also fahren Sie fort.

Schritt 2:

  1. Entpacken Sie nun diese ZIP-Datei im selben Ordner (oder NEW FOLDER).

  2. Laden Sie dex2jar herunter und extrahiere es in den gleichen Ordner (oder NEW FOLDER).

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

  4. Öffnen Sie jetzt die Eingabeaufforderung und ändern Sie das Verzeichnis in diesen Ordner (oder NEW FOLDER). Dann schreibe d2j-dex2jar classes.dex (für Mac Terminal oder Ubuntu schreiben ./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 Java Decompiler herunter, doppelklicken Sie auf jd-gui, klicken Sie auf Datei öffnen, und öffnen Sie die Datei classes.dex.dex2jar aus diesem Ordner: Sie erhalten nun Klassendateien.

  6. Speichern Sie alle diese Klassendateien (In jd-gui klicken Sie auf Datei -> Alle Quellen speichern) nach src name. In diesem Stadium erhalten Sie die Java-Quelle, aber die .xml-Dateien sind immer noch nicht lesbar. Fahren Sie also fort.

Schritt 3:

Öffnen Sie jetzt einen anderen neuen Ordner

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

  2. Laden Sie die neueste Version von apktool UND apktool Installationsfenster (beide können über den gleichen Link heruntergeladen werden) und legen Sie sie in den gleichen Ordner

  3. Öffnen Sie ein Befehlsfenster

  4. Jetzt starte den Befehl wie apktool if framework-res.apk und als nächstes

  5. 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 der apk leicht lesen.

Schritt 4:

Es ist kein Schritt, einfach den Inhalt beider Ordner (in diesem Fall beide neuen Ordner) in den einzelnen Ordner zu kopieren

und genieße den Quellcode ...


1389
2018-03-13 20:09



Dies ist eine alternative Beschreibung - nur für den Fall, dass jemand mit der Beschreibung oben stecken geblieben ist. Folge den Schritten:

  1. herunterladen apktool.bat (oder apktool für Linux) und apktool_<version>.jar von http://ibotpeaches.github.io/Apptool/install/ 
  2. Benennen Sie die JAR-Datei von oben in apktool.jar und legen Sie beide Dateien in den gleichen Ordner

  3. Öffnen Sie eine DOS-Box (cmd.exe) und wechseln Sie in diesen Ordner; vergewissern Sie sich, dass eine Java-Umgebung installiert ist (für Linux überprüfen Sie auch die Hinweise zu den erforderlichen Bibliotheken)
  4. Anfang: apktool decode [apk file] 

    Zwischenergebnis: Ressourcendateien, AndroidManifest.xml

  5. entpacken APK-Datei mit einem Entpacker Ihrer Wahl

    Zwischenergebnis: classes.dex

  6. herunterladen und extrahieren 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=
  7. Drag & Drop classes.dex auf zu dex2jar.bat (oder eingeben <path_to>\dex2jar.bat classes.dex in einer DOS-Box; für Linux verwenden dex2jar.sh)

    Zwischenergebnis: classes_dex2jar.jar

  8. auspacken classes_dex2jar.jar (Kann je nach verwendetem Decompiler optional sein)
  9. dekompilieren Sie Ihre Klassendateien (z. B. mit JD-GUI oder DJ Decompiler)

    Ergebnis: Quellcode

Hinweis: Es ist nicht erlaubt, Pakete von Drittanbietern zu dekompilieren; Dieses Handbuch soll nur persönlichen Quellcode aus einer APK-Datei wiederherstellen. Schließlich wird der resultierende Code höchstwahrscheinlich verschleiert


107
2017-08-29 03:58



Während Sie möglicherweise in der Lage sind, Ihre zu dekompilieren APK Datei, werden Sie wahrscheinlich ein großes Problem treffen:

Es wird nicht den Code zurückgeben, den du geschrieben hast. Es wird stattdessen, was auch immer der Compiler inline, mit Variablen mit zufälligen Namen, sowie Funktionen mit zufälligen Namen zurückgegeben. Es könnte erheblich länger dauern, bis Sie versuchen, den Code zu dekompilieren und wiederherzustellen, als von neuem zu beginnen.

Leider haben solche Dinge viele Projekte umgebracht.
Für die Zukunft empfehle ich dringend ein Versionskontrollsystem, wie CVS, SVN und Git etc.

und wie man es sichert.


96
2018-01-11 12:49



Es gibt auch eine neue Anwendung auf der Spielladen mit dem es möglich ist, eine apk zu dekompilieren (auch Systemapplikationen) 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 benötigt keine root oder etwas anderes.

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


47
2017-08-29 12:17



apktool ist das Beste, was du ausprobieren kannst. Ich habe etwas xml damit gespeichert, aber ehrlich gesagt weiß ich nicht, wie es mit dem .java Code arbeiten wird.

Ich würde Ihnen empfehlen, ein Code-Repository zu haben, selbst wenn Sie der einzige Programmierer sind. Ich habe benutzt Projektschließfach für meine eigenen Projekte. Es gibt Ihnen kostenlose Svn und Git Repos.


24
2017-12-06 01:38



Diese beiden Artikel beschreiben, wie die Verwendung von apktool und dex2jar nehmen APK Datei und erstellen Sie ein Eclipse-Projekt, das es erstellen und ausführen kann.

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

http://blog.inserebits.com/2012/12/Extending-existing-android-applications.html

Grundsätzlich du:

  1. Benutzen apktool um die Ressourcendateien aus der Apk zu bekommen
  2. Benutzen dex2jar um eine JAR-Datei zu erhalten, die die Klassen in einem Format enthält, das Eclipse gefällt.
  3. Erstellen Sie ein Eclipse-Projekt, das auf die Ressourcendateien und die neue JAR-Datei verweist
  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. Nimm den Quellcode, den du brauchst JDGui, kleben Sie es in eine Klasse innerhalb von Eclipse und modifizieren Sie es
  7. Löschen Sie diese Klasse aus der JAR-Datei (Sie haben also nicht dieselbe Klasse mehrfach definiert)
  8. Starte es.

20
2017-08-29 04:02



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

Sie können apktool finden Hier. Laden Sie einfach apktool und den entsprechenden Helper herunter (für Windows, Linux oder Mac OS). Ich empfehle ein Tool wie 7-Zip, um sie zu entpacken.


16
2017-08-11 03:27



Es gibt einige Möglichkeiten, dies zu tun:

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

    Es ermöglicht Ihnen, APKs in Android Studio zu öffnen und zu erkunden. Klassen werden in smali dekompiliert. Ressourcen werden nicht extrahiert, und Dinge wie "Gehe zu Definition", "Alle Referenzen suchen" und das Debuggen funktionieren nicht ohne den Quellcode (Android Studio 3.0 canary 9). Einige zusätzliche smali Funktionen könnten mit funktionieren Smalidea.

    android-studio

    select-file

    code

  2. Benutzen Jadx.

    Jadx dekompiliert den Code in einem gegebenen APK in Java-Quelldateien.

    jdax-img

  3. Benutzen apktool.

    Apktool ist ein Kommandozeilen-Tool, das Ressourcen extrahiert und Code in Smali für eine gegebene Apk dekompiliert. Sie können auch mit apktool neu kompilieren. Hier ein Beispiel dafür:

    $ 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...
    

6
2018-05-25 14:06



Kann der einfache sein, die Quelle zu sehen:

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

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


6
2018-02-25 12:22



Ich zeige dir eine andere Möglichkeit, das zu dekompilieren .apk Dateien.

Sie können die ersten 2 Schritte von "Prankul Garg". Sie haben also noch andere Möglichkeiten:

Schritt 3':

Laden Sie die "JD-GUI", das ist leicht zu finden. Öffne dein .Krug Datei in "jd-gui.exe". (Datei> Datei öffnen> 'gefunden .Krug Datei'). Nach diesem Vorgang können Sie alle Ressourcen in einem sichern .Postleitzahl Datei.

Damit,

1. - Sie müssen die umbenennen .apk Datei an .Postleitzahl

2. - Du musst dekodieren .dex Datei (wenn Sie möchten, dekodieren Sie die .apk Datei an dex2jar, Das ist möglich)

3. - Sie müssen dekodieren .Krug Datei mit JD-GUI


5
2018-06-10 14:36



Unten ONLINE Werkzeug:

http://www.javadecompilers.com/apk 

Alles mit einem Klick: dekompiliert .java Dateien + Ressourcen + XML (in einer .zip-Datei) mit sehr gutem Decompiler (Jadx gibt Java-Code an Stellen / Funktionen zurück, wo andere Compiles Kommentare innerhalb der Funktion zurückgeben wie "nicht dekompilierbar" oder irgendein Android-Assembler / Maschinencode)


4
2018-05-15 08:21