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

时间:2012-03-09 11:40:37

标签: java jar protection decompiling

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

5 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

这样做的缺点是,如果您的客户面临一些问题,您将很难调试和支持混淆代码,因为异常中的堆栈跟踪会有混乱的类和方法名称。

答案 4 :(得分:1)

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