أداة فك Java / Kotlin ومكتبة AST.
كان الهدف الرئيسي من هذه المكتبة هو بناء شجرة مصدر مجردة كاملة (AST) لملف فئة Java بما في ذلك العقد لجميع التعليمات. إنه مبني من أعلى ASM الذي يحتوي على عناصر AST للطرق ولكن يتوقف عند هذا الحد ويوفر قائمة Opcode بسيطة.
على الرغم من أنها ليست مفيدة لتعديل المصدر وإعادة بناء ملف فئة Java ، يعد هذا التعبئة مفيدًا جدًا لإزالة التجميع وتحليل التعليمات البرمجية حيث ترغب في البحث عن أنماط في بيان بدلاً من مستوى الرمز.
للحصول على الدعم والمناقشة ، راجع دردشة التطوير/الدعم على IRC.ESPER.NET في قناة #Decompiler.
في هذا الوقت ، يكون دعم Kotlin جديدًا تمامًا ولا يتم تعيين جميع الميزات المدعومة ، ومن المتوقع أن تكون الأخطاء في الإخراج.
java -jar Despector.jar <--config=[path]> <--lang=[java|kotlin]> [sources...] [destination]
--config= تحديد ملف التكوين لبعض إعدادات إلغاء الإلغاء.--lang= يجبر الإخراج ليكون بلغة معينة. السلوك الطبيعي هو محاولة تحديد لغة مصدر ملفات الفصل من محتوياتها.هذا الانزلاق لا يزال تحت التنمية الثقيلة وستحدث القضايا. إذا واجهت أي إخراج غير صحيح ، فيرجى فتح مشكلة في تعقب المشكلات. على الأقل تشمل الإخراج المتوقع والمواجهة. فئة مجمعة التي توضح القضية ستكون مفيدة أيضًا.
تكون طلبات الميزات موضع ترحيب دائمًا ويمكن عملها في تعقب المشكلات بأكبر قدر ممكن من المعلومات.
فيما يلي ملف تكوين عينة. إنه اختياري ولكنه يسمح لك بالتحكم في إعدادات إلغاء التجميع مثل التنسيق. إذا كنت ترغب في المزيد من الإعدادات ، افتح طلب ميزة في تعقب المشكلات. يستخدم ملف التكوين تنسيق تكوين 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