我有一个.class文件,我想反编译。我尝试了JAD,但它导致了通常的break,goto和return语句,导致JAD生成的源代码中出现编译错误。我很难尝试解决这些编译错误,每当我尝试使用return语句修复goto语句时,都会引入其他编译错误。
然后,我不得不在odesk雇用一名自由职业者,工作完成了。我想知道用于反编译以下.class文件的确切过程,这些文件可以帮助我和其他人关于JAD添加的这些凌乱的goto,return和break语句。https://drive.google.com/file/d/0ByGLlk1Fq3QIYzVaMGZ4MEVzcjg/edit?usp=sharing
答案 0 :(得分:3)
原则上,有效的类文件可以由比java更多的语言生成,但只有标准java编译器生成的类文件才能反编译到有效的java
要添加侮辱,即使是从java源编译的类文件也可能无法正确反编译,如果代码流未被正确识别则是反编译器(可能是由原始代码非常 imaginative 或者该类已经使用编译器编译,该编译器生成反编译器无法理解的字节代码。我经历过,使用sun javac 6编译的自己的代码在一种情况下无法正确反编译,并且嵌套的while循环有标签和中断。
类文件可能也被精确地模糊到阻止反编译。
简而言之,不能保证类文件可以被反编译成有效的java代码,它的通常不是反编译器的错误,因为可以用字节代码表示无法用平面表达的代码流的java。
对这些类进行反编译的通用方法是使用javap(或任何其他可以显示字节代码的工具)并通过自己理解字节代码来提取逻辑,然后在普通java中表达逻辑。 / p>