Ich muss eine vorhandene APK ändern, die Quellen ändern und sie dann neu kompilieren.
- Ich kann es mit dex2jar oder apktool dekompilieren, es funktioniert großartig
- Aus der JAR-Datei kann ich die Java-Quellen erhalten (mit jd-gui)
- Dann kann ich die Java-Dateien ändern
Aber jetzt möchte ich wissen, wie man die Java-Dateien neu kompiliert und wieder in eine JAR-Datei legt! (Der JAR-Teil sollte einfach sein, das Hauptproblem scheint zu sein, wie man die Java-Dateien für Android neu kompiliert)
Ich weiß, dass eine andere Lösung darin besteht, apktool zu verwenden und dann die smali-Dateien zu ändern, aber es scheint wirklich kompliziert zu sein, wenn wir viel Code hinzufügen wollen!
Meine Anwendung ist eine grundlegende HelloWorld ohne Verschleierung.
java
android
decompiling
recompile
darkheir
quelle
quelle
Antworten:
Dank Chris Jester-Young habe ich es geschafft, dass es funktioniert!
Ich denke, die Art und Weise, wie ich es geschafft habe, wird nur bei wirklich einfachen Projekten funktionieren:
Mit apktool habe ich das Android Manifest und die Ressourcendateien bekommen.
In Eclipse erstelle ich ein neues Projekt mit den gleichen Einstellungen wie das alte (überprüfe alle Informationen in der Manifestdatei).
/! \ stelle sicher, dass du die alte apk vom Gerät entfernt hast. Es wird ein Fehler ausgegeben, der besagt, dass die apk-Signatur nicht mit der alten identisch ist!
quelle
Ich weiß, dass diese Frage immer noch beantwortet wird. Ich möchte eine Information weitergeben, wie man Quellcode von apk ohne Dexjar erhält.
Es gibt einen Online-Dekompiler für Android-Apks
Ich weiß nicht, wie zuverlässig das ist.
@darkheir Antwort ist die manuelle Methode zum Dekompilieren von apk. Es hilft uns, verschiedene Phasen in der Apk-Erstellung zu verstehen.
Wenn Sie den Quellcode haben, befolgen Sie den in der akzeptierten Antwort genannten Schritt
Ein weiterer Online-Apk-De-Compiler @Andrew Rukin : http://www.javadecompilers.com/apk
Immer noch wert. Hut ab vor den Schöpfern.
quelle
But now I would like to know how to recompile the java files and put them back into a jar file!
War die Kernfrage richtig? Das beantwortet es nicht.Laden Sie zuerst das Tool dex2jar über den folgenden Link herunter: http://code.google.com/p/dex2jar/downloads/list
Extrahieren Sie die Datei, die der
dex2jar
Ordner erstelltNun wählen Sie Ihre APK - Datei und ihre Erweiterung APK nach Erweiterung .zip ändern zu ändern scheint es zip zu sein Datei dann diese Zip - Datei extrahiert gefunden Sie
classes.dex
DateiWählen Sie nun die Datei classes.dex aus und legen Sie sie in einem
dex2jar
Ordner abÖffnen Sie nun das cmd-Fenster und geben Sie den Pfad des
dex2jar
Ordners eindex2jar.bat classes.dex
Geben Sie nun den Befehl ein und drücken Sie die EingabetasteÖffnen
dex2jar
Sie nun den Ordner, in dem Sie dieclasses_dex2jar.jar
Datei gefunden habenAls nächstes laden Sie das Java-Dekompiler-Tool über den folgenden Link herunter: http://java.decompiler.free.fr/?q=jdgui
Letzter Schritt Öffnen Sie die Datei
classes_dex2jar.jar
im Java Decompiler Tool, jetzt können Sie Apk-Code sehenquelle
Die Antworten sind bereits veraltet oder nicht vollständig. Dies funktioniert möglicherweise für nicht geschützte Apks (kein Proguard), aber heutzutage stellt niemand eine ungeschützte Apk bereit. Die Art und Weise, wie ich eine (meine) gut geschützte apk (Proguard, Sicherheitsüberprüfung, die nach "Hacking-Tools" sucht, Sicherheitsüberprüfung, die prüft, ob die App im Debug-Modus neu gepackt wurde, ...) ändern konnte, erfolgt über apktool as bereits von anderen hier erwähnt. Aber niemand hat erklärt, dass man die App erneut signieren muss.
apktool d app.apk //generates a folder with smali bytecode files. //Do something with it. apktool b [folder name] -o modified.apk //generates the modified apk. //and then jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore modified.apk androiddebugkey //signs the app the the debug key (the password is android) //this apk can be installed on a device.
In meinem Test hatte die ursprüngliche Version apk keine Protokollierung. Nachdem ich mit apktool dekompiliert hatte, tauschte ich eine vollständige Bytecodedatei ohne Protokollierung durch eine vollständige Bytecodedatei mit Protokollierung aus, kompilierte sie neu und signierte sie und konnte sie auf meinem Gerät installieren. Danach konnte ich die Protokolle in Android Studio sehen, als ich die App damit verband.
Meiner Meinung nach ist das Dekompilieren mit
dex2jar
undJD-GUI
nur hilfreich, um besser zu verstehen, was die Klassen tun, nur zu Lesezwecken. Aber da alles sicher ist, bin ich mir nicht sicher, ob Sie diesen halbgebackenen Java-Code jemals zu einer funktionierenden apk neu kompilieren können. Wenn ja, lassen Sie es mich bitte wissen. Ich denke, die einzige Möglichkeit besteht darin, den Bytecode selbst zu manipulieren, wie in diesem Beispiel erwähnt.quelle
dex2jar mit jd-gui gibt alle Java-Quelldateien an, aber sie sind nicht genau gleich. Sie sind fast gleichwertige .class-Dateien (nicht 100%). Wenn Sie also den Code für eine APK-Datei ändern möchten:
dekompilieren mit apktool
apktool generiert für jede Java-Datei mit demselben Namen eine smali- Datei (Assembly-Version von dex).
smali ist für den Menschen verständlich, nimmt Änderungen in der entsprechenden Datei vor und kompiliert mit demselben apktool (
apktool b Nw.apk <Folder Containing Modified Files>
) neuquelle
Ich weiß, dass diese Frage beantwortet wurde und ich versuche hier keine bessere Antwort zu geben. Ich werde nur meine Erfahrungen in diesem Thema teilen.
Einmal habe ich meinen Code verloren und ich hatte nur die
apk
Datei. Ich habe es mit dem Tool unten dekompiliert und es hat meinen Tag gemacht.Diese Tools MÜSSEN in einer solchen Situation verwendet werden, da dies sonst unethisch und manchmal sogar illegal ist (Diebstahl der Bemühungen eines anderen). Also bitte mit Bedacht einsetzen.
Das sind meine Lieblingswerkzeuge dafür:
javadecompilers.com
und um die apk von google play zu bekommen, kannst du sie googeln oder dir diese seiten ansehen:
apk-dl.com
apkpure.com
Zum Zeitpunkt der Veröffentlichung dieser Antwort habe ich alle Links getestet und es hat perfekt für mich funktioniert.
HINWEIS: Die Apk-Dekompilierung ist im Fall von geschütztem Code nicht wirksam. Weil Proguard den Code verkleinert und verschleiert und Klassen in unsinnige Namen umbenennt, die es ziemlich schwierig machen, den Code zu verstehen.
Bonus:
Grundlegendes Tutorial zur Verwendung von Proguard :
quelle
Dies ist ein Weg:
Verwenden
apktool
zum Dekodieren:Verwenden Sie anschließend JADX (unter github.com/skylot/jadx).
2 Tools extrahieren und dekompilieren in denselben Ausgabeordner.
Einfacher Weg: Verwenden des Online APK Decompilers
quelle
-f
löscht den gesamten Ordner.Ich weiß, dass diese Frage immer noch beantwortet wird und ich versuche hier nicht, klug zu sein. Ich möchte nur eine andere Methode zu diesem Thema vorstellen.
Laden Sie Anwendungen mit apk grail herunter
APK Grail stellt die kostenlose Zip-Datei der Anwendung zur Verfügung.
quelle