如何保护Jar文件不被反编译?

我正在使用java开发一个应用程序,但我不打算发布代码。 问题是,我测试了其中一个jar反编译器,它能够几乎完美地从我的jar文件中获取代码! 我的问题是如何在不从中提取代码的情况下分发我的jar文件?

由于Java在编译期间保留了大部分“元数据”(允许动态加载和reflection),因此直接对编译后的类文件进行反编译(不仅是反汇编)。 这就是为什么恢复的代码与原始代码非常相似的原因。

虽然不完美,但您可能唯一的选择是使用混淆器,例如ProGuard 。

你不能。 至少,JVM需要输出代码才能运行它。 如果JVM可以获取代码,任何人都可以。

你能做的最好的事情就是对代码进行模糊处理,但我建议不要使用它,因为它会使跟踪生产错误非常困难,因为堆栈跟踪很难遵循。

不可能保护代码免于拆卸。 您可以使用’proguard’之类的混淆工具。 即使在反编译之后,几乎不可能理解代码。

使用市场上的一些混淆器来混淆您的代码。 混淆器将您的类及其方法的名称更改为一些奇怪的名称,以便人们很难理解代码。 请注意,人们仍然可以对您的代码进行反编译,但由于名称混乱,他们很难理解它。

除此之外,如果您的客户面临一些问题,您将难以调试和支持混淆的代码,因为exception中的堆栈跟踪将具有混乱的类和方法名称。

在java中进行逆向工程永远不可能,但我认为Proguard是最好的。 也可以将它与IDE集成(例如NetBeans)。 和ant的ygard