现在我正在尝试找到最好的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");}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果:
fernflower:
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
DJ Java Decompiler:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我看到反编译器的最佳结果:http://java.decompiler.free.fr/
为了测试,我编写了非常简单的代码.你怎么看,用什么代码来测试反编译器?也许这个想法比try {} catch(){} finally {}更好?
我已经使用http://java.decompiler.free.fr/很长一段时间了,发现它是最好的一个.特别是我用它来反编译第三方jar,我也可以用它来修改源代码.
它易于使用,用户界面也整洁干净.
更新:http ://java.decompiler.free.fr/上不再提供Java Decompiler .它有新的链接http://jd.benow.ca/可以从哪里下载.
它看起来像fernflower和JD的Java反编译器是生产反编译的代码是一样好,有可能这个特殊的测试用例.另外两个人做得不好,IMO.
你怎么看,用什么代码来测试反编译器?
在尝试从源代码编译的代码时,尝试使用不同的"-g"选项,并使用不同的Java编译器.
如果您期望获得任何有意义的结果,那么您真的应该使用更多非平凡的代码进行测试.Fernflower的创建旨在处理极不寻常和混淆的字节码.因此,反编译这样简单的片段并不是什么大问题.顺便说一句,如果你有兴趣测试Fernflower的独立版本,请给我发一个注意:fernflower(dot)decompiler(at)gmail(dot)com.版本0.8.4现在处于半公开测试阶段(但尚未在网站上提供).
| 归档时间: |
|
| 查看次数: |
40927 次 |
| 最近记录: |