不重新编译就不能用 recaf.0.9 编辑类文件

逆向工程 反编译 爪哇 字节码
2021-06-12 12:00:39

我有这个java代码

public class HelloWorld
{
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

我编译成类文件,运行它,一切都很好。

我想通过类文件编辑它。

HelloWorld.class用 recaf.0.9打开,点击重新编译,然后我编辑代码并保存它,但代码没有改变。

如何编辑 .class 文件而不重新编译它,并且不使用字节码。

例如,我想将 if else 添加到此代码中(通过类文件)

1个回答

如何编辑 .class 文件而不重新编译它,并且不使用字节码。

这些要求是相互矛盾的。您必须选择其中之一。

有两种主要的方法来编辑 Java 代码。您可以反编译类文件,编辑反编译的源代码,然后再次尝试编译它,也可以使用字节码反汇编器和汇编器(如Krakatau)或字节码编辑器(如 Recaf)直接在字节码级别进行编辑。

反编译和重新编译是不可靠的,因为这个过程在两个方向上都是有损的,所以它通常只在简单的情况下起作用。您最好直接编辑字节码,因为这样更快并且保证适用于所有类文件,但它确实需要您了解字节码。请注意,Recaf 也是有损的(与 Krakatau 不同),尽管除非您正在做一些非常不寻常的事情,否则这无关紧要。