Un outil de décompilation Java / Kotlin et la bibliothèque AST.
L'objectif principal de cette bibliothèque était de construire une arborescence source abstraite complète (AST) pour un fichier de classe Java, y compris les nœuds pour toutes les instructions. Il est construit en haut d'ASM qui a des éléments AST pour les méthodes mais s'arrête là et fournit une liste d'opcode simple.
Bien qu'il ne soit pas aussi utile pour modifier la source et la reconstruction, un fichier de classe Java, ce remplissage AST est très utile pour le décompilation et pour l'analyse de code où vous souhaitez rechercher des modèles sur une instruction plutôt qu'un niveau d'opcode.
Pour le soutien et la discussion, consultez notre développement de développement / support sur irc.esper.net dans la chaîne #Decompiller.
Pour le moment, le support Kotlin est assez nouveau et toutes les fonctionnalités ne sont pas prises en charge et les bogues dans la sortie sont à prévoir.
java -jar Despector.jar <--config=[path]> <--lang=[java|kotlin]> [sources...] [destination]
--config= vous permet de définir un fichier de configuration pour certains paramètres de décompilation.--lang= force la sortie à être dans une langue particulière. Le comportement normal consiste à tenter de déterminer le langage source des fichiers de classe à partir de son contenu.Ce décompilateur est toujours sous un développement intense et des problèmes se produiront. Si vous rencontrez une sortie incorrecte, veuillez ouvrir un problème dans le tracker du problème. Au minimum, incluez la sortie attendue et rencontrée. Une classe compilée démontrant que le problème serait également extrêmement utile.
Les demandes de fonctionnalités sont toujours les bienvenues et peuvent être faites dans le tracker du numéro avec autant d'informations que possible.
Voici un exemple de fichier de configuration. Il est facultatif mais vous permet de contrôler les paramètres de décompilation tels que la mise en forme. Si vous souhaitez que plus de paramètres ouvrent une demande de fonctionnalités dans le tracker du problème. Le fichier de configuration utilise le format de configuration hocon.
# 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