📜  jj (1)

📅  最后修改于: 2023-12-03 15:32:07.209000             🧑  作者: Mango

JJ介绍

JJ是一个自由且开源的Java字节码编辑器和反编译器。它允许您查看,编辑和分析Java类文件。

特性
  • 反编译Java类文件。
  • 编辑Java类文件,包括增加、删除和重命名类、方法和字段。
  • 可以将编辑后的类文件保存为新文件。
  • 在类文件中搜索和替换字节码。
  • 显示类文件的结构信息,例如:常量池、方法表、属性表等信息。
  • 可以将类文件导出为HTML格式,以便于对文件进行分析。
安装

JJ可以通过从官网下载安装包进行安装:https://jj-bytecode-editor.github.io/downloads.html

使用
反编译Java类文件

要反编译Java类文件,可以直接将文件拖放到JJ窗口中。要保存反编译的代码,可以单击“保存”按钮并将代码保存到计算机上。

编辑Java类文件

要编辑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