我有一个.class文件,我想解压缩它。我尝试了JAD,但是它导致了通常的中断、goto和返回语句,这导致了JAD生成的源代码中的编译错误。我很难解决这些编译错误,每次我尝试用return语句修复goto语句时,它都会引入其他编译错误。
然后,我不得不在odesk上雇佣一名自由职业者,这项工作就完成了。我想知道用于解压缩以下.class文件的确切过程,这些文件可以帮助我和其他人处理JAD添加的这些混乱的goto语句、返回语句和中断语句。
https://drive.google.com/file/d/0ByGLlk1Fq3QIYzVaMGZ4MEVzcjg/edit?usp=sharing
发布于 2013-12-04 19:22:59
原则上,有效的类文件可以由更多的语言生成,而不仅仅是java,但是只有标准的java编译器生成的类文件才能分解为有效的java。
更糟糕的是,即使是从java源代码编译的类文件也可能无法正确地反编译,如果代码流不能正确识别为反编译器(这可能是因为原始代码非常富有想象力,或者类是用编译器编译的,编译器生成的字节代码不为反编译器所理解)。我曾经经历过,使用sun 6编译的自己的代码在一种情况下不能正确地反编译,而使用嵌套的while循环具有标签和中断。
类文件也可能被混淆,以防止反编译。
简而言之,不能保证类文件可以被解压缩为有效的java代码,这通常不是反编译器的错误,因为我们可以用字节代码来表示无法用普通java表示的代码流。
(某种程度上)分解此类类的一般方法是使用javap (或任何其他可以显示字节代码的工具),通过自己理解字节代码来提取逻辑,然后用普通java表示逻辑。
https://stackoverflow.com/questions/20367168
复制相似问题