wake-up-neo.com

Kann eine Android-APK-Datei dekompiliert werden?

Können die Benutzer die APK-Datei meiner Anwendung wieder in den eigentlichen Code umwandeln? Wenn dies der Fall ist, gibt es eine Möglichkeit, dies zu verhindern?

78
aryaxt

Zunächst ist eine apk-Datei nur eine modifizierte JAR-Datei. Die eigentliche Frage ist also, ob sie die Dex-Dateien darin dekompilieren können. Die Antwort ist irgendwie. Es gibt bereits Disassembler wie dedexer und smali . Man kann davon ausgehen, dass diese nur besser werden, und theoretisch sollte es möglich sein, die Java-Quelle (zumindest manchmal) zu dekompilieren. Siehe vorhergehende Frage DEX in Java-Quellcode zerlegen

Was Sie sich merken sollten ist, dass Verschleierung nie funktioniert. Wählen Sie eine gute Lizenz und geben Sie Ihr Bestes, um sie gesetzlich durchzusetzen. Verschwenden Sie keine Zeit mit unzuverlässigen technischen Maßnahmen.

78

Die Dekompilierung der APK-Datei ist möglich. Es kann jedoch schwierig sein, den Code zu verstehen, wenn er verschleiert wird.

ApkTool zum Anzeigen von Ressourcen in der APK-Datei 

  • Extrahiert AndroidManifest.xml und alles im res-Ordner (Layout-XML-Dateien, Bilder, in Webview verwendete HTMLs usw.). 
  • befehl: apktool.bat d sampleApp.apk
  • HINWEIS: Sie können dies erreichen, indem Sie das Zip-Dienstprogramm wie 7-Zip verwenden. Es extrahiert jedoch auch die .smali-Datei aller .class-Dateien.

Dex2jar verwenden

  • Generiert die .jar-Datei aus der .apk-Datei. Wir benötigen eine JD-GUI, um den Quellcode aus dieser .jar-Datei anzuzeigen.
  • befehl: dex2jar sampleApp.apk

Dekompilieren von .jar mit JD-GUI

  • dekompiliert die .class-Dateien (im Fall der Android-App verschleiert, bei anderen .jar-Dateien wird jedoch ein lesbarer Originalcode erhalten). wir erhalten .Java von der Anwendung zurück.
32
gtiwari333

Ich kann auch hinzufügen, dass es heutzutage möglich ist, Android-Anwendungen online zu dekompilieren.

Hier sind 2 Optionen für Sie:

1
Andrew Rukin

Laden Sie dieses jadx-Tool herunter https://sourceforge.net/projects/jadx/files/

Entpacken Sie es und starten Sie im lib-Ordner die jadx-gui-0.6.1.jar-Datei. Durchsuchen Sie nun Ihre apk-Datei . Apk wird automatisch dekompiliert und gespeichert, indem Sie auf die Schaltfläche "Speichern" drücken. Ich hoffe, es funktioniert für Sie. Danke

1
akhilesh Jha

Können die Benutzer die APK-Datei meiner Anwendung wieder in den eigentlichen Code konvertieren?

ja.

Menschen können verschiedene Werkzeuge verwenden, um:

  • analyse: Ihre apk
  • decodiere/hacke deine apk
    • verwenden von FDex2 zum Ausgeben der dex-Datei
      • dann mit dex2jar in jar konvertieren
        • verwenden Sie dann jadx, um zu Java-Quellcode zu konvertieren

Wenn ja - gibt es eine Möglichkeit, dies zu verhindern?

ja. Mehrere (kombinierbare) Möglichkeiten, dies zu verhindern (gewisser Grad):

  • niedrige Ebene: Code-Verschleierung
    • mit Android ProGuard
  • hohes Niveau: Android-Harden-Szenario verwenden

Weitere Details finden Sie in meinem Chinesisch Tutorial: 安卓 安卓 的 安全 和 破解

0
crifan

Manchmal kommt es zu fehlerhaftem Code, wenn dex2jar/apktool verwendet wird, vor allem in Schleifen. Um dies zu vermeiden, verwenden Sie jadx , das dalvik-Bytecode in Java-Quellcode dekompiliert, ohne vorher eine .jar/.class-Datei zu erstellen, da dex2jar dies tut (apktool verwendet dex2jar (glaube ich)). Es ist auch Open Source und in aktiver Entwicklung. Es hat sogar eine GUI für GUI-Fanatiker. Versuch es!

0
polym