Despector
1.0.0
Java / Kotlinの逆コンパイルツールとASTライブラリ。
このライブラリの主な目標は、すべての命令のノードを含むJavaクラスファイルの完全な抽象ソースツリー(AST)を構築することでした。メソッドのAST要素を備えたASMの上部で構築されていますが、そこに停止し、単純なオペコードリストを提供します。
ソースの変更と再構築には役に立たないJavaクラスファイルは、この塗りつぶしASTは、オペコードレベルではなくステートメントでパターンを検索したいコード分析に非常に役立ちます。
サポートとディスカッションについては、#DeCompilerチャンネルのIRC.ESPER.NETでの開発/サポートチャットを参照してください。
この時点で、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