将Java编译为本地代码

3

是否有开源的Java编译器可以产生无字节码的输出?我正在销售一款Java应用程序,我希望阻止人们对我的程序进行逆向工程并免费分享它。


1
我建议阅读这篇文章,以了解市面上有哪些Java混淆器。文章链接:http://www.excelsior-usa.com/articles/java-obfuscators.html - Boris the Spider
1
风险通常比你想象的要小得多(除了某些应用领域)。而且你寻找免费解决方案,这不是有点讽刺吗? - Alan Stokes
"防止人们对我的程序进行反向工程..." 如果它很糟糕,他们不会费心去做。如果它不是糟糕的,没有什么可以阻止他们(转换为本地语言只会稍微困难一些)。通过法律手段解决此问题,而非通过编程手段。" - Andrew Thompson
你看过IKVM、RoboVM和Excelsior JET吗?它们都与编程有关。 - Janus Troelsen
2个回答

0

有一些方法可以使Java代码难以被反向工程,例如使用代码混淆器,如ProGuard,但这并不能阻止某人免费分享它。

为了防止别人免费分享,您需要使用某种序列号,分配给每个客户。至少这样,如果他们分享了它,你就知道是谁做的。


1
为了防止人们随意分享软件,您需要使用一种分配给每个客户的序列号。哇?如果他们可以读取字节码,那么是什么阻止他们撕掉检查序列号的代码呢? - om-nom-nom

0

如果它在计算机上运行,就可以被逆向工程。你需要使用混淆技术。这样,你的代码将更难被复制,因为混淆代码中的逻辑比你最初编写的代码复杂得多。


1
但是反汇编汇编语言比反转Java字节码要复杂得多。是的,也有去混淆器。 - om-nom-nom
关于混淆器,您可能希望阅读我的文章《通过混淆器和更多方式保护您的Java代码》(免责声明:我为其中提到的一种工具的供应商工作)。 - Dmitry Leskov

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