Jump to content
Swissdroid

[Anleitung] Dekompilieren (decompile) einer .apk

Recommended Posts

Swissdroid

Hallo Leute

Hatte Heute gerade mal Lust ein kleines Tutorial zu erstellen, wie man eine App dekompiliert.

Was bedeutet dekompilieren?

Und zwar wird beim dekompilieren die Maschienensprache (z.B. Bytecode unter Java) wieder Rücküberstetzt in den Quellcode der von einem Menschen geschrieben wurde.

Das dekompilieren ist das Gegenteil was ein Compiler macht.

Der Compiler "übersetzt" das fertig von Hand (bzw. mit einem Programm (Notepad++/Eclipse usw.)) geschriebene Programm in Maschienensprache damit es von einer Laufzeitumgebung (bei Java die JRE)ausgeführt werden kann.

In diesem Thread geht es vorallem um das dekompilieren einer .apk.

Dazu stelle ich euch 4 Möglichkeiten vor:

No code has to be inserted here.

7325_apk_multi_tool.jpg

Danke vielmals an PrimeDeluxe für den Hinweis

Was wir alles brauchen:

Vorbereitung:

Als erstes Entpackt ihr die Heruntergeladene (.zip Datei) APK Multi-Tool. (z.B. mit 7Zip)

Dies sollte dann in etwa so Aussehen:

7006_multi_tool1.jpg

Nun führt ihr als erstes Setup durch (Doppelklick auf "Setup"):

7007_multi_tool2.jpg

Hier führt ihr den Punkt 1 und 3 nacheinander aus.

Punkt 1 um auf Updates zu checken und Punkt 3 erstellt euch die nötigen Ordner die wir nacher noch brauchen. Wie etwa "place-apk-here-for-modding" usw.

Das Dekompilieren:

Nun Startet ihr das Apk Multi-Tool: (Doppelklick auf "Script")

Nun erhaltet ihr die Antwort, das Adb nicht installiert ist.

Darunter steht: "Weiter mit einer Belibigen Taste"

INFO: Was Adb ist und wie ihr es euch installiert, Erfahrt ihr am Ende dieser Erklärung zu Apk-Multi-Tool.

Wenn Adb hingegen Installiert ist, erhaltet ihr diesen Bildschirm:

(Auch hier: "Weiter mit Belibiger Taste")

7008_multi_tool3.jpg

Nun habt ihr das Programm gestartet.

Minimiert das Script

Die .apk die ihr Dekompilieren wollt fügt ihr nun unter "place-apk-here-for-modding" ein.

Maximiert das Script

Nun wählt ihr das gewünschte App mit Option 23 aus.

Jetzt nur noch Dekompilieren mit Option 9.

Fertig! Die Dekompilierte .apk findet ihr nun unter "Projekts".

Info: Der Grosse Vorteil hier Gegenüber dem APK Manager ist, das der smali/Baksmali Dekompiler schon im Tool integriert ist.

Für Interresierte:

Anleitung APK Multi-Tool in Englisch (XDA)

ADB (Android Debug Bridge)

Was ist das?

Die Adb erlaubt euch gewisse Funktionen auf eurem Androidphone vom PC Fernzusteuern.

Für uns ist hier ist z.B. wichtig Apps aus dem Phone heraus zu Kopieren bzw. danach wieder Hereinzukopieren.

Adb hat noch unzählige weiter Funktionen.

Wie kann ich Adb verwenden?

Dazu haben wir das SDK heruntergeladen. Wenn ihr SDK Entpackt habt, findet ihr darin unter android-sdk/platform-tools/ eine Datei Namens "adb".

Diese Datei Kopiert ihr und fügt sie im Apk Multi-Tool ebenfalls unter /platform-tools ein.

Wenn ihr nun das Script startet solltet ihr den gleichen Bildschirm erhalten wie ich Oben.

Falls ich mal genug Zeit habe und genügend Infos über die ADB habe, schreibe ich auch mal ein Thread hier im Developer Forum.

7324_apk_manager.jpg

Was wir alles brauchen:

Vorbereitung:

Als erstes Entpackt ihr nun den APK Manager (z.B. mit 7Zip)

Dies sollte dann etwa so aussehen:

6993_ansicht_apk_manager.jpg

Auch die anderen zwei Datei entpackt ihr (vlt. müsst ihr 2x entpacken) und das sollte dann etwa so aussehen (Grün sind die Beiden ursprünglichen Dateien,Rot die daraus entpackten Dateien):

6994_ansicht_apk_tool.jpg

Die 3 Dateien die ihr nun erhalten habt (mit Grünem Pfeil) fügt ihr nun beim APK Manager im Ordner "Other" ein.

Falls die Dateien schon vorhanden sind, und das sollten sie. Wählt ihr "Einfügen und Ersetzten".

Als nächstes Entpackt ihr den SDK Ordner den ihr heruntergeladen habt. Dort geht ihr in "tools" und verschiebt die darin befindliche "zipalign.exe" (siehe Bild) auch nach Apkmanager/others. Auch hier Einfügen und Ersetzten.

6995_ansicht_sdk.jpg

.

Das Dekompilieren:

Fügt die .apk die ihr nun Dekompilieren wollt ein unter: place-apk-here-for-modding.

Dann startet ihr den Apk Manager durch Doppelklick auf "Script"(siehe Bild)

7009_apk_manager.jpg

Dann landet ihr hier:

6997_apk_manager_2.jpg

Nun mit 22 die App auswählen.

Dann mit 9 Dekompillieren.

Fertig.

Die Dekompillierte Datei findet ihr unter "Projects"

Info:

Manchmal ist es nötig die "classes.dex" vorher aus der App zu entfernen.

Da sich diese nur mit einem Speziellen Programm namens Baksmali dekompilieren lässt.

7326_apk_one_click.jpg

Mein neues Lieblingsprogramm ^^ (Danke XDA(<--- Link zum Originalthread)

Was wir alles brauchen:

Vorläufig nur APK One Click

Der Rest installieren wir aus dem Tool heraus.

Vorbereitung:

7227_apk_one_click1.jpg



  • 1. Als erstes Entpackt ihr den Heruntergeladenen .zip Ordner, das sollte dann so aussehen wie im Bild Oben.
    Danach installiert ihr euch mit "shellext-add" (Hinweis: Mit Rechtsklick / "Als Administrator ausführen" ), die Möglichkeit mit einem Rechtsklick auf einer .apk Datei , diese direkt zu dekompilieren.
    Falls Gewünscht könnt ihr euch das dann später mit "shellext-remove" wider deinstallieren.


  • 2. Geht unter "Tools". Dort findet ihr Oben die 3 Tools

    -apktool(.apk dekompilieren)/
    -dex2jar(.dex in .jar)/
    -jd-gui (.jar in .java (Quellcode von java))

    Und unten die Verlinkung zu den Tools.

    Zuerst Aktualisiert ihr das ganze indem ihr die Seiten-Links aufruft und apktool und dex2jar downloaded. jd ist aktuell.

    Die heruntergeladenen Dateien fügt ihr unter dem entsprechendem Tool ein und ersetzt die alten durch die neuen.


  • 3. Fertig

Das Dekompilieren:

Ganz einfach:

-Rechtsklick und "Decompile APK"

-Fertig.

Unter anderem sei mal wieder gesagt, das die Classes.dex Datei welche die smali Dateien enthält, das Dekompilieren stört. (die classes.dex wird zwar in smali "übersetzt" aber nicht mehr)

-Dazu 2 Lösungen:

-Vor dem dekompilieren:(einfachste Lösung solange keine Änderung an den smali vorgenommen werden soll)

Die .apk Entpacken , danach die Classes.dex ausschneiden und irgendwo (z.B. Desktop) ablegen wieder bepacken und dann dekompilieren.

Ent- bzw. Bebacken könnt ihr mit einem zip Programm oder einem .apk Tool der oberen 2 Lösungen des Dekompilier-Vorgangs.

Hinweis: Vor dem Recompilen die Classes.dex wieder einfügen.

-Während oder nach dem Decompilieren:(Lösung wenn auch Änderungen an den smali Dateien vorgesehen sind.)

Dazu müsst ihr das Tool Dex2jar einrichten.

Ich habe das seperat Eingerichtet, um euch auch die Einrichtung dieses Tools zu Demonstrieren, welches ja auch verwendet werden kann ohne APK One Click.

Tool Dex2Jar [Einrichtung und Verwendung].

Bedingung:Java muss in der VM installiert sein

Also Liebe Leute

Hier Beginnt alles mit dem Ordner "dex2jar-(manchmal mit Versionsnummer (Aktuell 0.0.9.8))"

7228_dex2jar1.jpg

  • 1. Falls das Tool seperat heruntergeladen wurde, zuerst entpacken.
  • 2. Nun fügt ihr die .dex Datei zu dem Ordner hinzu. Ist im Bild oben an erster Stelle zu erkennen. Dieser Schritt sollte bei Verwendung des "APK One Click" eig. entfallen.
  • 3. Öffnet den Windows Befehlsinterpreter (Windowstaste + "R")
  • [Hinweis: Ihr könnt auch nun direkt in das dex2jar Verzeichniss wechseln, um euch das lange Eingaben des Verzeichniss zu ersparen. (Bsp: cd C:\Users\Hans\Desktop\dex2jar-0.0.9.8 --> Enter)
  • 4. Fügt das Verzeichniss in der "setclasspath.bat" liegt(wird im Exlporer ohne .bat angeziegt) ein.
    [beispiel: "C:\dex2jar-0.0.9.8\dex2jar-0.0.9.8\setclasspath.bat"]
  • 5. Enter. --> Der Interpreter sollte in etwa folgendes ausgeben:

    SET _CLASSPATHCOMPONENT=
    IF a == a GOTO gotAllArgs
    SET CLASSPATH =

  • 6. Nun gebt ihr in den Interpreter zuerst das Verzeichniss der "dex2jar.bat"
    und darauf Folgend ohne Enter zu drücken das Verzeichnis der zu dekompilierenden classes.dex (welche ihr ja auch in diesen Ordner verschoben habt) ein.
    [beispiel: "C:\dex2jar-0.0.9.8\dex2jar-0.0.9.8\dex2jar.bat C:\dex2jar-0.0.9.8\dex2jar-0.0.9.8\classes.dex"]

    Das sieht bei mir so aus:

    7229_dex2jar2.jpg

    ---> Nun Arbeitet das Tool ein wenig und nach ein paar Sekunden sollte "Done" im Interpreter erscheinen.

  • 7. Fertig. Das dekompilierte .dex liegt nun als .jar in dem Verzeichnis, in dem der dex2jar-Ornder liegt.

  • Ist das APK One Klick auch installiert, kann nun mit Rechtstaste / Decompile APK in den Quellcode übersetzt werden. (siehe Bild unten)

  • Ist hingegen AOK nicht installiert, macht man das mit dem Java Decopiler (kurz jd).

    Download

7230_dex2jar3.jpg

7327_vts.jpg

Danke für den Hinweis geht an albertostein

System Voraussetztungen (requirements)

  • Windows XP SP3 oder höher (kein Windows 8 Unterstützung bis .net 4.5 Veröffentlicht ist)
  • Microsoft .net frameworks 4.0 Full(wenn noch nicht vorhanden, wird ein direkter Link nach dem Setup des VTS erscheinen)
  • JRE = Java Runtime Environment (Java Laufzeit Umgebung)
  • >= 1GB RAM empfohlen

Was wir alles brauchen:

Vorbereitung:

Der Download ist eine .rar Datei mit ungefähr diesem Namen:

"VTS_1.5.24.4946.rar"

Diesen Entpackt ihr mit einem Entpackungtool (wie z.B. 7Zip)

Nun Erhaltet ihr einen Ordner mit dem gleichen Namen, welcher nun das "Setup" enthält.

Die installiert ihr wie ihr es gewöhnt seid von einem normalen Programm.

Als letztes Startet ihr nun das Programm, das sieht dann so aus:

7323_vts1.jpg

Das Dekompilieren:

  • 1. Als erstes geht ihr nun unter das Kapitel "File" dort wählt ihr "New Project" aus. Nun öffnet sich ein Pop-Up Fenster mit dem Namen "Create New Project"


  • 2. Unter Project:
    Nun vergebt ihr einen Projekt Namen , den Speicherort sowie Namen (hier nehmt ihr am Besten der Name der App, damit ihr wisst worum es sich handelt)


    7322_vts2.jpg


  • 3. Unter APK Tool:
    Hier könnt ihr als erstes das apktool aus welches verwendet werden soll (Das Originale wird empfohlen). Das Framework Tag könnt ihr in den meisten Fällen (solange ihr kein HTC habt :-) ) überspringen. Dazu schreibe ich weiter unten noch was. Ebenso wählt ihr aus, was mit der .apk (bzw. .jar) gemacht werden soll. Und ebenso wählt ihr die App aus welche modifiziert werden soll.


    7321_vts3.jpg


    No code has to be inserted here.


  • 4. Unter Build und Overview:
    Unter Build könnt ihr noch auswählen ob ihr die App gleich noch Signieren und Komprimieren (Zipalign). In der Overview könnt ihr nochmals alles Kontrollieren.

    Stimmt alles dann klickt auf OK.

  • 5. Nun arbeitet das Tool was in etwa so aussehen sollte:


    7320_vts4.jpg


  • 6. Fertig
    Nun sollte die App dekompiliert sein. Was dann etwa so aussieht.

    7319_vts5.jpg

Das VTS hat noch viele Weitere Interresante Tools intergriert, mehr dazu findet ihr Oben unter "Features".

Weitere Anhänge:

Andere App Tools mit Decompile-Funktion.

APKTool

Auto APK-Tool

bearbeitet von Swissdroid
  • Like 9

Diesen Beitrag teilen


Link zum Beitrag
Qpa

Coole Anleitung und Danke das du hier ein bisschen Leben rein bringst ;)

Am besten bekommst du Bilder in einen Post wenn du sie in deinem Profil unter Alben hoch lädst und dann als Image hier einbindest.

Als Anhang kannst du sie dann raus nehmen ^^

sdk = Software Development Kit

Mit freundlichen Grüßen

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Gerne doch :biggrin:

Achso das mit den Bildern suche ich schon lange, Danke:dankescho

SDK schon geändert.

  • Like 1

Diesen Beitrag teilen


Link zum Beitrag
PrimeDeluxe

Danke für die Anleitung.

Ich würde aber eher das Multitool empfehlen.

Als Installationsverzeichnis soll man den Android-SDK Ordner wählen.

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Meinst du das APK Multitool?

Es gibt ja auch eines welches von XDA entwickelt wurde.

Kann ja sonst diese noch oben Verlinken.

Kann ich sonst auch noch ändern. (Du meinst den APK Manager im SDK Ordner platzieren oder?)

Diesen Beitrag teilen


Link zum Beitrag
PrimeDeluxe

Ja ich meine das APK Multitool vom selben Entwickler.

Dieses wird wie ein Programm installiert.

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Füge APK Multi-Tool gerade im Thread hinzu .

Hab aber gerade gesehen das der Server des Hersteller Down ist.:eusa_eh:

You may or may not be aware that server Shared2 is currently offline. We are working as hard as we can towards a resolution of the problem. We had a dual spindle failure on the hard drives associated with Shared2. We are attempting to recover the journals manually and the process has been going on all day. With the way the recovery is going, it appears it is going to be a long recover that could span well into tomorrow. We wanted to reach out to your ahead of time and give you some options. We know that the majority of our clients keep local backup copies of their websites. If you have a local backup of your website and you would like to have your account re-created on a another server, we can recreate your account instantly, and you will have the ability to re-upload your website, to your new hosting account

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Stimmt :-) Bei mir auch, Stand so auf der Seite.

Aber auf der Offiziellen Seite gibts schon 1.0.4 Beta hab die beiden mal eingefügt.

Diesen Beitrag teilen


Link zum Beitrag
Assassine.92

bei mir taucht diese datei ".Apk.Manager" nicht auf

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Was meinst du mit, er taucht nicht auf?

Um ihn zu öffnen kannst du auch ein Doppelklick auf das "Script" machen...

bearbeitet von Swissdroid

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

@ PrimeDeluxe

Hi Prime

Also ich hab mir mal das APK Multi Tool angesehen.

Wirklich ein Gutes Tool.:dankescho

Was mich wirklich beeindruckt hat, ist das der smali/baksmali decompiler integriert ist.

Muss man beim APK Manager halt manuell machen.

Die ersten Tests haben Super geklappt.

Ich kann auch noch eine Anleitung zu diesem Tool oben dran setzten.

Nur eines muss ich noch wissen: Wo hast du den Ordner genau platziert damit er adb erkennt? Im Ordner wo zum Beispiel SDK Manager ist oder im Ordner platform/tool (wo adb drin steckt). Oder ganz wo anders?

Ich habs nicht gefunden:huh:

Bei mir gibt er am Anfang an:

"ADB was not found, you will not be able to manipulate the files on your phone":computer:

Obwohl adb im Path Ordner ist und ich über die Kommando Zeile auch adb ausführen kann. Auch Java ist installiert und im Path.

Edit: OK habs rausgefunden:redface:

Hab das mit dem platform-tool Ordner falsch verstanden...

Einfach adb Kommando aus SDK in APK-MultiTool/platform-tool kopieren...

Letzter EDIT: So Artikel Aktualisiert. Bitte einen Mod noch um die Freigabe der Bilder in meinem Album. Thanks

- Apk Multi-Tool hinzugefügt

-Minimale Erklarung zu ADB eingefügt

-Fehler in Apk Manager behoben

-Diverse Links verschoben

Viel Spass.

@ Prime: Ich weiss immer noch nicht welches Installationsverzeichniss in SDK du meinst. Kannst du mir Helfen?

bearbeitet von Swissdroid

Diesen Beitrag teilen


Link zum Beitrag
PrimeDeluxe

Einfach in den Android-SDK Ordner.

Die bat ist dann in dem Ordner, wo die platform tools usw sind.

Ich schreibe später auch noch ein bisschen dazu, evtl könnte man das dann mit einfügen.

PS: Vielen Dank für deine Mühe

Diesen Beitrag teilen


Link zum Beitrag
albertostein

Da die meisten bzw. alle hier noch Anfänger sind, empfehle ich euch "Virtuous Ten Studio".

Ist ein klasse Tool und kinderleicht zu bedienen, speziell für Smali Edit's ist es sehr übersichtlich gestaltet.

Diesen Beitrag teilen


Link zum Beitrag
Assassine.92

Was meinst du mit, er taucht nicht auf?

Um ihn zu öffnen kannst du auch ein Doppelklick auf das "Script" machen...

danke hat sich aber schon erledigt

Diesen Beitrag teilen


Link zum Beitrag
thunder82

bekomme folgende fehlermeldung wenn ich eine apk decompilieren möchte

I: Baksmaling...

Exception in thread "main" java.lang.RuntimeException: bad magic value: 64 65 78 0a 30 33 36 00

at org.jf.dexlib.DexFile.<init>(DexFile.java:377)

at org.jf.dexlib.DexFile.<init>(DexFile.java:274)

at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:44)

at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:33)

at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:68)

at brut.androlib.ApkDecoder.decode(ApkDecoder.java:85)

at brut.apktool.Main.cmdDecode(Main.java:128)

at brut.apktool.Main.main(Main.java:65)

kann mir da einer weiterhelfen

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Danke das du hier weiterschreibst. Bin noch bei der Arbeit und kann nicht immer sofort antworten.

Was ist das für eine Settings.apk?

Von einem HTC?

Du hast sie schon in "place-apk-for -modding-here" plaziert?

Diesen Beitrag teilen


Link zum Beitrag
thunder82

die settings.apk ist vom galaxy s2 ja die datei liegt in dem ordner bekomme den selben fehler auch wenn ich es mit apktool versuche

Diesen Beitrag teilen


Link zum Beitrag
Swissdroid

Entpacke die .apk mal und schau ob darin eine Datei liegt Namens classes.dex?

Wenn ja schneide diese aus, deponiere sie i.w. bepacke die datei nochmals. und Versuchs nochmals.

Wenn nicht, lade die Datei mal hoch und ich seh sie mir dann heute gegen Abend an. Wenn ich an meinem Rechner sitze.

Diesen Beitrag teilen


Link zum Beitrag

Please sign in to comment

You will be able to leave a comment after signing in



Jetzt anmelden

×
×
  • Neu erstellen...

Wichtige Information

Bitte beachten Sie folgende Informationen: Nutzungsbedingungen und Impressum & Datenschutzerklärung. Wir haben Cookies auf deinem Gerät platziert, um die Bedienung dieser Website zu verbessern. Du kannst deine Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist.