【问题标题】:How to prevent jar decompilation如何防止jar反编译
【发布时间】:2012-01-11 05:13:53
【问题描述】:

我在 Eclipse 中创建了一个插件项目,作为 jar 分发。 用户可以获取这个 jar 并使用 JAD 对其进行反编译。 有什么方法可以停止对 jar 文件的反编译? 或者,至少,对用户隐藏我的源代码?

【问题讨论】:

标签: java jar obfuscation source-code-protection


【解决方案1】:

阻止你的 jar 被反编译的最好方法是让用户没有理由想要这样做。混淆只是一个创可贴。事实上,如果它足够有名,有些人可能会为了挑战而扭转它。

【讨论】:

  • +1 多么棒的答案! “与通过越来越繁重的安全措施来打扰您的客户相比,您更有可能通过频繁、有意义的更新来击败潜在的盗版者。” codinghorror.com/blog/2005/05/obfuscating-code.html
  • 同意,因为如果您的代码转移并执行到另一个环境/主机中 - 它可能是:停止、调试、评估、转换等。您只能尝试来强化这一点或者,正如@Antimony 所说,没有理由这样做:1)使用需要更高知识水平的技术进行反编译(参见 fe jproductivity.com); 2)为您的产品提供低价,3)使用云/服务器逻辑(不要将代码移动到客户端)。另见此处:stackoverflow.com/questions/2443542/…
【解决方案2】:

如果您不将源代码插入到 jar 中,则您的源代码不是由反编译器反编译的,而是类似的。

但是,您可以使用混淆器使代码反编译产生非常难看的代码,例如Proguard

ProGuard 是一个免费的 Java 类文件收缩器、优化器、混淆器, 和预验证。它检测并删除未使用的类、字段、 方法和属性。它优化字节码并删除未使用的 指示。它重命名剩余的类、字段和方法 使用无意义的短名称。最后,它预先验证处理过的 Java 6 或 Java Micro Edition 的代码。

使用术语混淆器搜索其他产品。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2014-02-07
    • 2018-01-13
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多