เครื่องมือ decompilation Java / Kotlin และ AST Library
เป้าหมายหลักของไลบรารีนี้คือการสร้างทรีแหล่งที่มานามธรรม (AST) ที่สมบูรณ์สำหรับไฟล์คลาส Java รวมถึงโหนดสำหรับคำแนะนำทั้งหมด มันถูกสร้างขึ้นจากด้านบนของ ASM ซึ่งมีองค์ประกอบ AST สำหรับวิธีการ แต่หยุดอยู่ที่นั่นและให้รายการ opcode อย่างง่าย
ในขณะที่ไม่มีประโยชน์สำหรับการปรับเปลี่ยนแหล่งที่มาและสร้างไฟล์คลาส Java การเติม AST นี้มีประโยชน์มากสำหรับการถอดรหัสและสำหรับการวิเคราะห์รหัสที่คุณต้องการค้นหารูปแบบในคำสั่งมากกว่าระดับ opcode
สำหรับการสนับสนุนและการอภิปรายดูการพัฒนา/สนับสนุนการแชทของเราบน irc.esper.net ในช่อง #decompiler
ในเวลานี้การสนับสนุน Kotlin นั้นค่อนข้างใหม่และไม่ได้รับการสนับสนุนคุณสมบัติทั้งหมดและคาดว่าจะมีข้อบกพร่องในเอาต์พุต
java -jar Despector.jar <--config=[path]> <--lang=[java|kotlin]> [sources...] [destination]
--config= ช่วยให้คุณกำหนดไฟล์กำหนดค่าสำหรับการตั้งค่าการสลายตัวบางอย่าง--lang= บังคับให้เอาต์พุตเป็นภาษาเฉพาะ พฤติกรรมปกติคือการพยายามกำหนดภาษาแหล่งที่มาของไฟล์จากเนื้อหาdecompiler นี้ยังอยู่ภายใต้การพัฒนาที่หนักและปัญหาจะเกิดขึ้น หากคุณพบผลลัพธ์ที่ไม่ถูกต้องใด ๆ โปรดเปิดปัญหาในตัวติดตามปัญหา อย่างน้อยที่สุดก็รวมถึงผลลัพธ์ที่คาดหวังและพบ ชั้นเรียนที่รวบรวมแสดงให้เห็นว่าปัญหาจะเป็นประโยชน์อย่างมาก
คำขอคุณสมบัติยินดีต้อนรับเสมอและสามารถทำในตัวติดตามปัญหาที่มีข้อมูลให้มากที่สุด
นี่คือไฟล์การกำหนดค่าตัวอย่าง เป็นทางเลือก แต่ช่วยให้คุณสามารถควบคุมการตั้งค่าการสลายตัวเช่นการจัดรูปแบบ หากคุณต้องการการตั้งค่าเพิ่มเติมเปิดคำขอคุณสมบัติในตัวติดตามปัญหา ไฟล์การกำหนดค่าใช้รูปแบบการกำหนดค่า 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