2010-12-07 164 views
21

你能推荐一个用于Eclipse的Java反编译器吗?我的其他问题是使用来自其他Java程序的反编译代码的限制吗?非法或什么?我对许可证知之甚少。谢谢阅读。Java反编译器

+0

类似的讨论是在[选择和测试Java反编译](http://stackoverflow.com/questions/3898391 )。 – 2012-01-02 14:48:44

+0

“Eclipse类反编译器”也许?网站位置是`http:// feeling.sourceforge.net/update /`。阅读更多http://www.blogjava.net/cnfree/archive/2012/10/30/390457.html和http://feeling.sourceforge.net/ – 2013-11-13 10:59:54

+8

有趣的是,这些问题是作为题外话闭上的,因为许多程序员(例如我自己)都会为这些确切问题找到答案(并找到答案,这要感谢下面发布的答案)。另外,根据本网站的“Ask”部分,问题应该“通常涵盖......程序员常用的软件工具”。 – 2013-11-25 15:43:43

回答

30

我建议在google上弹出一个,它是JD Java反编译器。 它的工作非常好。

至于限制,您必须阅读特定软件的许可证,否则可能会写入任何反编译方式被禁止。

+3

+1 - 阅读许可证。 *“我对许可证知之甚少”。*如果因违反许可条款而被起诉,则不是有效的借口。 – 2010-12-07 10:24:42

2

JD是我认识的最好的Java反编译器。

+0

JD-GUI无法反编译weaven类型weaven通过aspectj - 所呈现的Java代码被截断。 – mark 2011-12-08 11:42:08

7

我喜欢JadClipse - 但它显示了它的年龄。你将需要:

  • 一个JAD二进制
  • jadClipse安装
  • 点Eclipse的喜好上述JAD二进制
  • 告诉它生产线数量和排列用于调试

有有几个缺点:

  • code is pr如果字节代码被重新排列,所以在字节代码中有些迟到,但是在原始源代码早期,jad不倒带以将反汇编代码放到正确的行。
  • jad不太了解Java 5 + 6字节码。
1

我发现JD是非常好的。虽然,我遇到了一两个小错误,导致在运行时出现意外的行为。

例如,我有一个例子,其中最初的case语句在最后一个节点上没有'break'(因为当然这是不必要的),但是因为JD结束了对节点的重新排序,默认“情况被意外调用。我还遇到了字符集问题,我需要一些额外的toString()调用才能按预期退出。除此之外,这真是太棒了!

我使用了另一个反编译器DJ来帮助我弄清楚由JD反编译的代码出了什么问题。但还有其他的东西,DJ无法处理,所以我想这两个反编译器的混合物为我工作:)

希望杜普伊先生会读这个!

5

我已经尝试了几个反编译器,其中大多数都未能为我正在尝试反编译的小程序(这是http://mrl.nyu.edu/~perlin/experiments/emotive-actors/,以防任何人想要重现)生成正确的源文件。

完美无缺的工作是Cavaj 1.11,它生成的代码不包含语法错误,并且从源文件编译的小程序与原文完全相同。我在UI端缺少的是:Ctrl-A/Ctrl-C键盘快捷键不起作用,并且没有可用的批量转换。

我已经试过其他的反编译如下:

  • JD Java decompiler(免费)看起来不错,但它提出了很多与变量声明错误的(一些声明人失踪,其他被严重放置)
  • Neshkov DJ Java Decompiler (共享软件)也看起来不错,它生成的代码包含更少的语法错误,然后JD,但代码不起作用。鉴于产品不是免费的,人们会期望更多。