【问题标题】:How can one secure the logic in a Java class file?如何保护 Java 类文件中的逻辑?
【发布时间】:2015-10-10 01:33:31
【问题描述】:

我想在第三方的 Java 基础架构上运行专有算法。他们给了我一个装有适当对象的罐子,让我可以建立我的班级。这个想法是我给他们一个实现我的算法的类。

就“反编译”的难易程度而言,已编译的 Java 类与 jar 相比如何?

我认为保护自己的 IP 免受逆向工程的最好方法是通过混淆器运行它,如 How to protect a Jar file from being decompiled? 中所述

除了因为他们的基础设施必须访问我的类中的命名方法之外,混淆器是否甚至提供 级别的保护?或者,如果一个人给另一方一个编译好的 Java 类,实际上不需要对算法进行逆向工程吗?如果是后者,那么还有哪些其他方法可以提供更高的安全性?

(我意识到所有可访问的代码都可以进行逆向工程。我只是希望它需要合理的努力——最好是编译后的 C 水平。)

【问题讨论】:

  • jar 基本上只是一个 .class 文件的 zip 文件,因此它们同样容易反编译。
  • 混淆并签署您的代码
  • @ThorbjørnRavnAndersen - 对代码进行签名是否有效地加密了我未向其提供密钥的用户?
  • 没有。它有助于避免您的代码被更改。

标签: java obfuscation reverse-engineering decompiling


【解决方案1】:

要了解反编译 Java 类和 JAR 有多么容易,请参阅this decompiler。如果您需要公开或实现公共 API,那么您可以混淆的内容将受到限制。

只要人们可以访问您的 java 二进制文件,就很难防止逆向工程。您可以尝试使用 JVM 脚本引擎(rhino,...)之一来实现您的算法并保护脚本,但是您会受到某人堆转储您正在运行的算法的摆布。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2021-05-21
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2014-07-19
    • 2015-11-29
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多