如何轻松编辑.class文件



我有一个.jar文件,它不是我创建的,里面有很多类文件。我需要编辑一个特定的类文件。我有jd-gui。这个类文件的未编辑代码,如JD所示为:

package net;
import java.util.UUID;
public class a1b {
XF a = aTt.e();
@aez
public int getFoodLevel() {
return aFO.q(this.a.aa).b();
}
@aez
public void setSlot(int paramInt) {
this.a.aa.ba.b = paramInt;
}
}

我想把它改成:

package net;
import java.util.UUID;
public class a1b {
XF a = aTt.e();
@aez
public int getFoodLevel() {
return aFO.q(this.a.aa).b();
}
@aez
public void setSlot(int paramInt) {
this.a.aa.ba.b = paramInt;
}
@aez
public int getSlot() {
return this.a.aa.ba.b;
}
}

所以我只想添加一个简单的函数,它返回"0"的值;这个.aa.ba.b";(这个类文件所在的游戏中的玩家插槽((jar文件被混淆(

我是java的新手,我尝试过包括recaf在内的几种不同的方法,但recaf不起作用,因为文件被混淆了,并以"编译错误";。

这个编译错误并不是由于我添加了函数而发生的,相反,其中还有一些其他函数我没有包括在内,因为它们与这个问题无关,从而阻止了它的编译。当我删除它编译的有问题的函数时。

您正试图编辑一个模糊的JAR文件。

混乱的JAR文件是由供应商创建的,其明确目的是防止您修改代码。一个好的代码混淆器要做的一件事是转换字节码,使反编译工具(比如你正在使用的工具(很难生成有效的(即可编译的(Java源代码。

这就是这里发生的事情。您正在使用的反编译器生成了无效的Java源代码。

你能做什么?

  • 您可以尝试不同的反编译器。

  • 您可以尝试自己读取字节码,找出正确的代码(对于每个错误(,然后修复源代码。(但对于一个Java程序员来说,这将很难。(

  • 您可以要求软件供应商向您提供(真实的(源代码的副本。

  • 你可以停下来。如果你阅读了你试图修改的软件的许可证,你可能会发现它禁止反编译、反向工程等等


请注意,由于您所做的很可能是非法的,我们不建议为您提供帮助。这将使我们(StackExchange公司和协助您的人(处于法律尴尬的境地。

最新更新