📅  最后修改于: 2023-12-03 15:32:07.209000             🧑  作者: Mango
JJ是一个自由且开源的Java字节码编辑器和反编译器。它允许您查看,编辑和分析Java类文件。
JJ可以通过从官网下载安装包进行安装:https://jj-bytecode-editor.github.io/downloads.html
要反编译Java类文件,可以直接将文件拖放到JJ窗口中。要保存反编译的代码,可以单击“保存”按钮并将代码保存到计算机上。
要编辑Java类文件,可以在JJ中打开该文件。要修改类、方法或字段的名称,请在文件窗格中右键单击该项并选择“重命名”。要删除类、方法或字段,请选择该项并按“删除”键。要添加新类、方法或字段,请单击相应按钮并填写相关信息。要保存更改,请单击“保存”按钮并保存文件。
要搜索和替换字节码,请选择“搜索”并输入要查找的字节码。可以使用十六进制值、关键字或正则表达式作为搜索字符串。找到要替换的字节码后,可以将其替换为新字节码。
要显示类文件的结构信息,可以在JJ中打开该文件,然后单击“展开所有”按钮。这将显示类文件的常量池,方法表,属性表等信息。
要将类文件导出为HTML格式,请单击“导出”按钮并输入导出文件的名称。导出的HTML文件将包含类文件的结构信息和反编译代码。
示例代码片段:
// Method descriptor #12 ()V
// Stack: 2, Locals: 1
public static void main(java.lang.String[] args);
0: new #2 // class java/lang/StringBuilder
3: dup
4: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
7: ldc #4 // String Hello,
9: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
12: ldc #6 // String World!
14: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
20: astore_1
21: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
24: aload_1
25: invokevirtual #9 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: return