【问题标题】:How to protect a Jar file from being decompiled? [duplicate]如何保护 Jar 文件不被反编译? [复制]
【发布时间】:2012-03-26 20:50:28
【问题描述】:

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

【问题讨论】:

  • 我发现建议的副本确实回答了我的问题。感谢您的指导。

标签: java jar protection decompiling


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    你能做的最好的就是混淆代码,但我建议不要这样做,因为它会使跟踪生产错误变得非常困难,因为堆栈跟踪将难以跟踪。

    【讨论】:

    • 我了解(好的)混淆工具提供了一个表格,您可以使用该表格将可运行的堆栈输出转换为原始类和代码行。但它们通常在压缩代码方面比保护代码更有效。
    【解决方案3】:

    不可能保护代码不被反汇编。您可以使用“proguard”之类的混淆工具。即使在反编译之后,也几乎不可能理解代码。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        在 Java 中进行逆向工程从来都不是不可能的 但我认为 Proguard 是最好的。也可以将它与您的 IDE(例如 NetBeans)集成。 和蚂蚁的ygard

        【讨论】:

          猜你喜欢
          • 2011-01-16
          • 2011-03-06
          • 1970-01-01
          • 1970-01-01
          • 2012-05-09
          • 1970-01-01
          • 2011-08-29
          • 2016-04-20
          相关资源
          最近更新 更多