gpt4 book ai didi

java - 选择和测试java反编译器

转载 作者:IT老高 更新时间:2023-10-28 20:44:06 33 4
gpt4 key购买 nike

现在我正在努力寻找最好的 java 反编译器,我找到了这些:

使用这些反编译器,我可以处理此类的字节码:

public class ss
{
public static void main(String args[])
{
try{
System.out.println("try");

}
catch(Exception e)
{
System.out.println("catch");
}
finally
{System.out.println("finally");}
}
}

我得到了以下结果:

蕨花:

public class ss {

public static void main(String[] var0) {
try {
System.out.println("try");
} catch (Exception var5) {
System.out.println("catch");
} finally {
System.out.println("finally");
}

}
}

DJ Java 反编译器:

import java.io.PrintStream;

public class ss
{

public ss()
{
}

public static void main(String args[])
{
System.out.println("try");
System.out.println("finally");
break MISSING_BLOCK_LABEL_50;
Exception exception;
exception;
System.out.println("catch");
System.out.println("finally");
break MISSING_BLOCK_LABEL_50;
Exception exception1;
exception1;
System.out.println("finally");
throw exception1;
}
}

cavaj:

import java.io.PrintStream;

public class ss
{

public ss()
{
}

public static void main(String args[])
{
System.out.println("try");
System.out.println("finally");
break MISSING_BLOCK_LABEL_50;
Exception exception;
exception;
System.out.println("catch");
System.out.println("finally");
break MISSING_BLOCK_LABEL_50;
Exception exception1;
exception1;
System.out.println("finally");
throw exception1;
}
}

http://java.decompiler.free.fr/ :

import java.io.PrintStream;
public class ss
{
public static void main(String[] paramArrayOfString)
{
try
{
System.out.println("try");
}
catch (Exception localException)
{
System.out.println("catch");
}
finally {
System.out.println("finally");
}
}
}

我看到反编译器的最佳结果:http://java.decompiler.free.fr/

为了测试,我写了非常简单的代码。你怎么看,写什么代码来测试反编译器?也许这个想法比 try{} catch(){} finally{} 更好?

最佳答案

您用于测试的代码应该测试 JDK 中用于编译目标类的可用功能。例如,如果您知道您的目标是用 Java 1.5 编写的,那么假设代码可能包含 generics 是合理的。 ,因此您需要确保您选择的反编译器正确处理它们。根据我的经验,免费提供的反编译器在 1-2 版本支持的功能方面往往落后于 JDK 版本。

基于个人的反复试验,JD一般来说,他们往往做得最好。但是,如果您要反编译以 1.3 或更低版本编写的代码,我还建议您提供 JODE试一试。

编辑,5 年后:

CFR , Procyon , 和 Fernflower在这个领域引领潮流。

关于java - 选择和测试java反编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3898391/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com