可能重复:
你混淆你的商业Java代码?
是否有任何其他方式然后混淆,以保护罐由别人被打开? 问题是,我不希望任何人访问的代码,这就是为什么我不喜欢的Java。 从在C#和Java做我用反编译,程序所拥有的一切,如变量不变这将可以很容易地获得访问不属于免费节目的名称。 更糟的是,给出的源代码。
可能重复:
你混淆你的商业Java代码?
是否有任何其他方式然后混淆,以保护罐由别人被打开? 问题是,我不希望任何人访问的代码,这就是为什么我不喜欢的Java。 从在C#和Java做我用反编译,程序所拥有的一切,如变量不变这将可以很容易地获得访问不属于免费节目的名称。 更糟的是,给出的源代码。
大多数这些点都是由上述评论所覆盖,但我会有点这里对他们展开:
如果你的代码在用户的机器上运行,用户可以反编译代码。 不要紧,它是什么语言。 的Java,C,空白,brainfuck,没关系。 如果代码在计算机上运行时,人类可以阅读。 即使你自己制作的自制语言和编译器,编译后的代码仍然将是标准的机器指令序列,其中反编译将会轻而易举地变成C或任何一种语言,你喜欢可读的代码。
没有例外。 忘掉它。
但是,有办法得到你想要的:保护一些秘密的业务逻辑。 一个简单的方法来做到这将是把你自己的机器上的业务逻辑和与Web服务公开它。 用户仍然可以看到客户端的请求和服务响应,但是,否则你的逻辑是一个黑盒子。
你也可以将你自己的机器,它们锁定,并把它们分发给用户。 要知道,虽然这是可能的,这在技术上是相当困难的做正确的(认为所有的黑客攻击游戏机和智能手机),并会显著增加服务的成本。
据我所知, jar
文件(与NetBeans产生的)可能只包含.class
文件,这是Java bitecode,而不是源代码。 我不知道是否有一种方法来反向工程.class
文件,但它具有非常小的ASCII文本可以使用。