Java/Android: APK wieder in Java-Sourcecode de-kompilieren

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Java/Android: APK wieder in Java-Sourcecode de-kompilieren

Beitrag von inne » 27.03.2016 09:21:22

Hallo,

ich habe vor einer kleinen Ewigkeit mal eine Android-App geschrieben die schon etwas umfangreicher war...

Nun ist meine SSD kaputt gegangen und damit ist leider auch der Sourcecode dieser App verloren gegangen.
Gibt es eine Möglichkeit wieder halbwegs brauchbaren Java-Code aus eine APK zu erstellen? Warscheinlich nicht – *crying*
Zuletzt geändert von Anonymous am 27.03.2016 15:28:03, insgesamt 1-mal geändert.

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 09:27:48

Oke, wer suchet der findet: http://www.decompileandroid.com/

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 09:34:00

Wo finde ich denn via Eclipse installierte APKs auf dem Phone wieder? Installiert ist die App noch...

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von catdog2 » 27.03.2016 10:02:55

Müsste /data/app/foo.bar.baz/base.apk sein.
Unix is user-friendly; it's just picky about who its friends are.

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 10:43:22

Hm... Als APK scheint die App nicht (mehr) vorzuliegen. Ich kann sie aber starten und ausführen, also muss die noch installiert sein.

Ich habe so gesucht, das findet aber nichts:

Code: Alles auswählen

$ mkdir foo/
$ jmtpfs foo/
Unable to read MTPZ public exponent from ~/.mtpz-data, MTPZ disabled.
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
$ cd foo/
$ find -iname "*.apk"
$ fusermount -u foo
Wie könnte ich noch an die App kommen?

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von catdog2 » 27.03.2016 10:48:44

Hm... Als APK scheint die App nicht (mehr) vorzuliegen. Ich kann sie aber starten und ausführen, also muss die noch installiert sein.
Du wirst wohl root rechte brauchen, ansonsten kannst du sie evtl. per adb backup ziehen (gibt tools die das backup format extrahieren können).
Unix is user-friendly; it's just picky about who its friends are.

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 10:51:05

catdog2 hat geschrieben: Du wirst wohl root rechte brauchen, ansonsten kannst du sie evtl. per adb backup ziehen (gibt tools die das backup format extrahieren können).
Auf dem Phone braucht es root-rechte oder?

Mit adb werde ich es noch probieren ...

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 11:03:47

Ich glaube das wars... es mangelt an Rechten:
$ adb shell
shell@serranolte:/ $ cd data
shell@serranolte:/data $ ls
opendir failed, Permission denied
255|shell@serranolte:/data $

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von catdog2 » 27.03.2016 11:11:13

Code: Alles auswählen

adb backup -f somefile -apk name.des.pakets
Dann https://sourceforge.net/projects/adbextractor/ auf somefile anwenden.
Unix is user-friendly; it's just picky about who its friends are.

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 12:06:11

Das funktioniert schonmal. Nur ist das tar-Archiv leer. Weil ich den genauen Namen nicht mehr weiss.

Hast du/jemand da noch einen Tipp wie ich an den vollen Namen (reverse domain name) der App komme.
Ich erinnere mich nicht mehr was ich da damals angegeben habe und sehe überall nur den aufgelösten Namen.

Gibt es da eine App für, vlt. im FDroid-Market?

Das com.example.Hello aus Eclipse funktioniert leider nicht. Aber ansonsten könnte das echt funktionieren :-)

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von catdog2 » 27.03.2016 12:13:30

Steht normalerweise bei den App Infos dabei, Einstellungen->Apps
Unix is user-friendly; it's just picky about who its friends are.

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 12:16:11

catdog2 hat geschrieben:Steht normalerweise bei den App Infos dabei, Einstellungen->Apps
Leider nein dort steht nur der "einfache" App Name auf Deutsch. Aber das com.* ist mir entfallen.

Ich werde mal noch suchen, da wird wohl eine Lösung genen eine Taskmanager-App o.ä. geben.

Kann ich mit der ADB nicht in ein Live-Log o-ö schauen und dann die App per Touch-Click starten und sehen was gestartet wurde oder so?

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 12:25:30

Die App Taskmanager zeigt einem beide Namen an.

https://play.google.com/store/apps/deta ... askmanager

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: JAVA/Android. APK wieder in Java sourcecode

Beitrag von inne » 27.03.2016 12:29:43

Vielen Dank an das APK bin ich schon mal gekommen:
$ tar -xvf thx.tar
apps/com.example.hello/_manifest
apps/com.example.hello/a/com.example.hello-487.apk
apps/com.example.hello/sp/com.example.hello_preferences.xml

Vielen Dank catdog2!

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Java/Android: APK wieder in Java-Sourcecode de-kompilier

Beitrag von inne » 27.03.2016 16:36:52

Mit dem APK-Multi-Tool (https://github.com/APK-Multi-Tool/APK-Multi-Tool) bekomme ich nur .smali-Dateien.

Auch wirft das Tool Fehlermeldungen, wenn man die Frameworks installieren will. Da stimmt die Syntax nicht...

Jemand einen Tipp? Ist das Projekt APK-Multi-Tool tot (von 2013 – Website offline)? Werde wohl mal eine Mail an den Programmierer schicken...

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Java/Android: APK wieder in Java-Sourcecode de-kompilier

Beitrag von inne » 27.03.2016 16:52:25

Habe nun auch die Linux-Version gefunden, aber die kommt nichtmal soweit:

Code: Alles auswählen

Selected: com.example.hello-487.apk
I: Using Apktool 2.0.1-825476-SNAPSHOT on com.example.hello-487.apk
I: Loading resource table...
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
	at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:52)
	at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:538)
	at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:63)
	at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:55)
	at brut.androlib.Androlib.getResTable(Androlib.java:64)
	at brut.androlib.ApkDecoder.setTargetSdkVersion(ApkDecoder.java:209)
	at brut.androlib.ApkDecoder.decode(ApkDecoder.java:92)
	at brut.apktool.Main.cmdDecode(Main.java:165)
	at brut.apktool.Main.main(Main.java:81)
Caused by: java.io.IOException: Expected: 0x00000008, got: 0x00000000
	at brut.util.ExtDataInput.skipCheckShort(ExtDataInput.java:56)
	at brut.androlib.res.decoder.ARSCDecoder.readValue(ARSCDecoder.java:254)
	at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:203)
	at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:191)
	at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:159)
	at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:116)
	at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:78)
	at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:47)
	... 8 more

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Java/Android: APK wieder in Java-Sourcecode de-kompilier

Beitrag von inne » 27.03.2016 16:58:37

Kann das an OpenJRE vs. Suns JRE liegen?

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Java/Android: APK wieder in Java-Sourcecode de-kompilier

Beitrag von catdog2 » 27.03.2016 21:30:59

Mit dem APK-Multi-Tool (https://github.com/APK-Multi-Tool/APK-Multi-Tool) bekomme ich nur .smali-Dateien.
Das ist praktisch nur disassemblierter bytecode. Es gibt noch so ein Tool was sich dex2jar nennt, das spuckt dann normalen java bytecode aus. Den sollte man dann in handelsübliche java Decompiler werfen können.

Kannst ja mal den Probiern, der macht direkt apk zu java: https://github.com/skylot/jadx
Unix is user-friendly; it's just picky about who its friends are.

Antworten