美国开发的Java反编译器

10

我在一家政府承包商工作,他们对安装在机器上的软件非常挑剔(美国政府法律规定)。作为逆向工程的一部分,我需要弄清楚某个特定的.class文件集合的功能。反编译器会非常有帮助,但我似乎找不到符合要求的反编译器。基本上,我需要找到一款在美国开发的反编译器。有没有人知道任何的?免费的更好,但商业的也可以。

顺便提一下,JADJD不能用,因为它们不是在美国开发的。


1
如果只是想了解它的功能而不是生成可编译的代码,那么老牌的javap可能就足够了。它更像是一个字节码反汇编器而不是反编译器,但这可能已经足够了。 - Joachim Sauer
11
考虑到部分 JRE 开发在俄罗斯和中国完成,美国的要求似乎有些奇怪。 - Tom Hawtin - tackline
1
只是一个小问题。你们公司如何确信在美国开发的产品不会造成任何伤害?我想你应该在这方面说服你们的公司。 - Kalpak
13
这个问题需要一个“phb”标签 :) - Chetan S
1
@Chetan:美国政府法律,而不是公司政策;尽管这些也没好到哪去。 - geowa4
显示剩余4条评论
10个回答

5

我建议您告知雇主,将软件来源作为先决条件并不能保护他们,也无法得到他们想要的结果。美国在全球经济和全球互联网中竞争。他们认为不安装有效的软件可以获得任何优势或安全性,这听起来有些幼稚。 成为一名优秀的员工、设计师或程序员的一部分是帮助客户认识到他们的限制并克服它们。您应该帮助他们取得更大的成功。


8
这是政府制定的规则。因为他们出钱,所以他们制定规则。 - geowa4
4
无论这种限制听起来有多幼稚,我认为它并不像你想的那样幼稚。由政府构建的软件保护了政府的机密。虽然无法百分之百地保证安全,但至少可以尝试确保任何试图攻击软件的人都在政府的法律管辖范围内。开源并不能保证安全,正如Linux内核的开发人员所发现的那样:http://linux.slashdot.org/article.pl?sid=03/11/06/058249。绕过这个问题很麻烦,但大量的安全问题也是如此。 - rtperson
3
即使有这个理由,这个规则仍然非常愚蠢,大概类似于政府在90年代试图将128位加密方案归类为“军火”。看政府试图理解技术就像看一个小孩在海滩上用沙子筑墙保护他的沙堡免受涌来的潮水侵袭。 - rtperson

2

在虚拟机上安装“未经批准”的软件怎么办?


有趣的想法,我明天会研究一下。 - geowa4

2

当我听到这种胡言乱语来自于我的政府时,我感到很害怕。

运行jad -p命令,重新编译源代码并将编译后的类与原始类文件进行比较。

您可以在一台临时计算机/虚拟机实例上运行jad。如果编译后的类与原始类有合理的一致性,那么您就知道软件正常运行了。


运行 jad -p ... 现在如果我不能把两者放在同一台机器上,我该怎么办? - geowa4

2
我认为我应该回答这个问题,因为没有提供的内容起作用。最终,我通过使用 javap,猜测了很多东西,并且一遍遍地试错直到解决了要求。由于javap调用了很多本地代码,所以它没有给我太多我需要的东西。最终,我使用了经过验证的猜测和检查方法得到了我需要的东西。
确实需要一个反编译器。也许Sun(Oracle)可以制作一个...

是的,那似乎相当准确。我已经不在那里工作了。由于很多好的工具都是在其他地方开发的,所以工具一直是一个问题。 - geowa4

1

1

我假设您无法将.class文件从计算机移动到实验室计算机上安装JAD?

我也与政府合作,如果某个软件对项目的成功至关重要,您需要向项目经理传达这一点,然后项目经理会将其传达给政府对应方。之后,应该有一个清单供您的IA评估员遵循以批准该软件。


是的,我希望能够避免繁文缛节和官僚主义。 - geowa4
在我看来,这是一个荒谬的过程。 - Matthew Cox

0

我假设你在第一时间解编它们是合法的,对吗?我读过的大多数用户协议都规定你不允许反向工程任何东西... 假设这是合法的,那么为什么 JAD 和 JD 不行呢?

我用 DJ Java Decompiler 成功了,虽然它没有 JD 那么漂亮。还有SoThink Java Decompiler,但我个人从未使用过。

还有其他几个,但它们中的大多数似乎都是基于 JAD 构建的,所以我猜它们也不行。


3
JAD和JD不是在美国生产的。JAD是俄罗斯制造的,而JD似乎是法国制造的。 - Thomas Owens
合法性已得到解决,一切都好。 - geowa4

0

我曾经使用过免费软件cavaj,但我不知道它是不是在美国制作的。


0

嗯,相当具有讽刺意味,你不能使用反编译器,因为反编译器不是在美国制作的,但你仍然可以反编译代码?

如果你需要知道一个类是用来做什么的,那就问创建它的人要源代码

如果他们拒绝提供源代码,那我认为反编译可能是非法的。


逆向工程是合法的,这可能包括反编译(我不是律师)。它经常在许可协议中被禁止。 - David Thornley

-1

这里有一个想法,你可以把文件发送给其他人进行反编译,然后再把反编译的源代码发送给你吗?


3
显然事情并不那么简单。 - geowa4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接