【发布时间】:2012-03-26 20:50:28
【问题描述】:
我正在使用 java 开发一个应用程序,但我不会发布代码。问题是,我测试了其中一个 jar 反编译器,它几乎可以完美地从我的 jar 文件中获取代码! 我的问题是如何分发我的 jar 文件而不从中提取我的代码?
【问题讨论】:
-
我发现建议的副本确实回答了我的问题。感谢您的指导。
标签: java jar protection decompiling
我正在使用 java 开发一个应用程序,但我不会发布代码。问题是,我测试了其中一个 jar 反编译器,它几乎可以完美地从我的 jar 文件中获取代码! 我的问题是如何分发我的 jar 文件而不从中提取我的代码?
【问题讨论】:
标签: java jar protection decompiling
由于 Java 在编译期间保留了大部分“元数据”(允许动态加载和反射),因此反编译(不仅是反汇编)已编译的类文件很简单。这就是为什么恢复的代码与原始代码非常相似。
虽然不完美,但您可能唯一的选择是使用混淆器,例如 ProGuard。
【讨论】:
你不能。至少,JVM 需要取出代码才能运行它。如果 JVM 可以将代码取出来,那么任何人都可以。
你能做的最好的就是混淆代码,但我建议不要这样做,因为它会使跟踪生产错误变得非常困难,因为堆栈跟踪将难以跟踪。
【讨论】:
不可能保护代码不被反汇编。您可以使用“proguard”之类的混淆工具。即使在反编译之后,也几乎不可能理解代码。
【讨论】:
使用市场上的一些混淆器来混淆您的代码。混淆器将您的类及其方法的名称更改为一些看起来很奇怪的名称,这样人们就很难理解代码。请注意,人们仍然可以反编译您的代码,但唯一的问题是由于名称混乱,他们很难理解它。
这样做的缺点是,如果您的客户遇到一些问题,因为异常中的堆栈跟踪会包含混乱的类和方法名称,您将很难调试和支持混淆代码。
【讨论】:
在 Java 中进行逆向工程从来都不是不可能的 但我认为 Proguard 是最好的。也可以将它与您的 IDE(例如 NetBeans)集成。 和蚂蚁的ygard
【讨论】: