Ein Java / Kotlin -Dekompilierungstool und eine AST -Bibliothek.
Das Hauptziel dieser Bibliothek war es, einen vollständigen abstrakten Quellbaum (AST) für eine Java -Klassendatei mit Knoten für alle Anweisungen zu erstellen. Es besteht aus Top of ASM, das AST -Elemente für Methoden enthält, aber dort aufhört und eine einfache Opcode -Liste bietet.
Obwohl dies nicht so nützlich ist, um die Quelle zu ändern und zu rekonstruieren, ist eine Java -Klassendatei für diese Füllung sehr nützlich für die Dekompeten und für die Codeanalyse, bei der Sie nach Mustern auf einer Anweisung und nicht für eine Opcode -Ebene suchen möchten.
Für Unterstützung und Diskussion finden Sie in unserem Entwicklungs-/Support -Chat auf irc.essper.net im #Decompiler -Kanal.
Zu diesem Zeitpunkt ist die Kotlin -Unterstützung ziemlich neu und alle Funktionen werden nicht unterstützt und Fehler in der Ausgabe sind zu erwarten.
java -jar Despector.jar <--config=[path]> <--lang=[java|kotlin]> [sources...] [destination]
--config= ermöglicht es Ihnen, eine Konfigurationsdatei für bestimmte Dekompilierungseinstellungen zu definieren.--lang= erzwingt die Ausgabe, sich in einer bestimmten Sprache zu befinden. Normales Verhalten besteht darin, zu versuchen, die Sprache der Klassendateien aus ihrem Inhalt zu bestimmen.Dieser Dekompiler befindet sich noch unter starker Entwicklung und Probleme werden auftreten. Wenn Sie auf eine falsche Ausgabe begegnen, öffnen Sie bitte ein Problem im Problem Tracker. Zumindest die erwartete und auftretende Ausgabe einschließen. Eine kompilierte Klasse, die das Problem demonstriert, wäre ebenfalls äußerst hilfreich.
Feature -Anfragen sind immer willkommen und können im Problem Tracker mit so vielen Informationen wie möglich gestellt werden.
Hier ist eine Beispielkonfigurationsdatei. Es ist optional, ermöglicht es Ihnen jedoch, die Einstellungen für die Dekompilierung wie die Formatierung zu steuern. Wenn Sie mehr Einstellungen wünschen, öffnen Sie eine Feature -Anfrage im Problem Tracker. Die Konfigurationsdatei verwendet das Hocon -Konfigurationsformat.
# Despector decompiler configuration:
# Cleanup configuration
cleanup {
# Cleanup operations to apply before emitting
operations=[]
}
# Targeted cleanup operations
"cleanup_sections"=[]
# Emitter configuration
emitter {
# Whether to emit synthetic members
emit-synthetics=false
# The path of the formatter configuration
formatting-path="run/eclipse_formatter.xml"
# One of: eclipse,intellij
formatting-type=eclipse
# The path of the import order configuration
import-order-path="run/eclipse.importorder"
}
# Kotlin specific configuration
kotlin {
# Whether to replace strings containing new lines with raw strings
replace-multiline-strings=true
}
# Prints out opcodes of a method when it fails to decompile.
print-opcodes-on-error=true