「disassemble.py」

  CREATED BY JENKINSBOT

disassemble.py,反汇编器。完全支持JAVA8。

命令行语法格式(Usage)

python disassemble.py [-out OUT] [-r] [-roundtrip] target

命令描述

该命令将class文件转化为可读的汇编格式。不像javap命令,该工具可以反汇编不正常的class文件,然后输出内容可以重新汇编。

assemble.py一起,该工具可以通过汇编将任何类进行。将任何class转到等价的Class中。

如果给出了-roundtrip选项,那么它可以通过汇编来回处理有效的类,并准确地再现原始的二进制类文件。

命令行参数含义

OUT
用于写入源文件的文件或者目录,即反汇编的输出位置。
默认为当前目录。
如果文件名为zip或者jar结尾,则输出zip文件。

-r
反汇编target目录中的所有(递归).class文件。

-roundtrip
创建一个汇编文件,该汇编文件用于汇编回被反汇编的那个二进制文件。
如果没有-roundtrip,它将汇编出等价于原始的具有相同的行为类文件,但可能会在二进制编码细节方面不同,例如常量池项的精确排序。
重新产生精确的原始类文件需要在汇编文件中输出那些低级别的信息,这导致反汇编的输出更难阅读和编辑,因此默认情况下禁用此选项。
有没有-roundtrip的主要差别在于:有-roundtrip时,反汇编的输出中显示的是字符串的地址;而没有-roundtrip时,反汇编的输出中显示的是字符串。

target
要反汇编的文件名或者jar文件。
如果指定了jar文件,则反汇编jar文件中的所有class文件。
如果指定了-r,target应该是一个目录。

注意(Note)

如果你发现一个正确的Class无法反汇编,请提交问题到:https://github.com/Storyyeller/Krakatau/issues