Alat dekompilasi Java / Kotlin dan Perpustakaan AST.
Tujuan utama perpustakaan ini adalah untuk membangun pohon sumber abstrak lengkap (AST) untuk file kelas Java termasuk node untuk semua instruksi. Ini dibangun dari atas ASM yang memiliki elemen AST untuk metode tetapi berhenti di sana dan menyediakan daftar opcode sederhana.
Meskipun tidak berguna untuk memodifikasi sumber dan rekonstruksi file kelas java ist ini sangat berguna untuk mendekompilasi dan untuk analisis kode di mana Anda ingin mencari pola pada pernyataan daripada tingkat opcode.
Untuk dukungan dan diskusi, lihat obrolan pengembangan/dukungan kami di irc.esper.net di saluran #Decompiler.
Pada saat ini dukungan Kotlin cukup baru dan semua fitur tidak disetel dan bug dalam output diharapkan.
java -jar Despector.jar <--config=[path]> <--lang=[java|kotlin]> [sources...] [destination]
--config= memungkinkan Anda untuk menentukan file konfigurasi untuk pengaturan dekompilasi tertentu.--lang= memaksa output berada dalam bahasa tertentu. Perilaku normal adalah mencoba menentukan bahasa sumber file kelas dari isinya.Dekompiler ini masih dalam pengembangan besar dan masalah akan terjadi. Jika Anda menemukan output yang salah, silakan buka masalah di pelacak masalah. Minimal termasuk output yang diharapkan dan ditemui. Kelas yang dikompilasi yang menunjukkan masalah ini juga akan sangat membantu.
Permintaan fitur selalu diterima dan dapat dibuat dalam pelacak masalah dengan informasi sebanyak mungkin.
Berikut adalah file konfigurasi sampel. Ini opsional tetapi memungkinkan Anda untuk mengontrol pengaturan dekompilasi seperti pemformatan. Jika Anda ingin lebih banyak pengaturan membuka permintaan fitur di pelacak masalah. File konfigurasi menggunakan format konfigurasi 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