如何防止jar文件反编译

4

我在Eclipse中创建了一个插件项目,并将其分发为jar文件。 用户可以使用JAD反编译此jar文件。 是否有任何方法可以阻止jar文件的反编译? 或者,至少能否隐藏我的源代码不被用户看到?


请编辑您的问题,因为它非常难以理解。 - Danubian Sailor
与Java中的“不可反编译”源代码相关的问题可能是重复的。请参考这个链接 - user180100
2个回答

5

防止jar文件反编译的最佳方法是让用户没有想要这样做的理由。混淆只是一种权宜之计。事实上,如果jar文件足够有名,一些人可能会为了挑战而反向破解它。


+1 太棒了!“通过频繁、有意义的更新,你更有可能击败想要盗版的人,而不是通过让你的客户承受越来越繁琐的安全措施来打扰他们。” http://www.codinghorror.com/blog/2005/05/obfuscating-code.html - Erick Robertson
同意,因为如果您的代码被转移到另一个环境/主机并执行,它可能会被停止、调试、评估、转换等。您只能尝试加强这一点,或者像@Antimony所说的那样,不给它任何理由:1)使用需要更高级别知识才能反编译的技术(参见例如http://www.jproductivity.com/);2)为您的产品定价低廉;3)使用云/服务器逻辑(不要将代码移动到客户端)。还可以在此处查看:https://dev59.com/z3E95IYBdhLWcg3wHqWl - lospejos

3
如果您没有将源代码插入jar包中,则反编译器反编译的不是您的源代码,而是类似的东西。
但是,您可以使用混淆器使代码反编译产生非常丑陋的代码,例如Proguard

ProGuard是一个免费的Java类文件缩小器、优化器、混淆器和预验证器。它可以检测和删除未使用的类、字段、方法和属性。它可以优化字节码并删除未使用的指令。它会使用短而无意义的名称重命名剩余的类、字段和方法。最后,它会为Java 6或Java Micro Edition预验证处理后的代码。

搜索其他带有术语混淆器的产品。

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