我想在第三方的 Java 基础设施上运行专有算法。他们给了我一个 jar ,里面装着合适的物体,供我构建我的类(class)。我的想法是我给他们一个实现我的算法的类。
就“反编译”的难易程度而言,已编译的 Java 类与 jar 相比如何?
我认为保护自己的 IP 免遭逆向工程的最佳方法是通过混淆器运行它,如 How to protect a Jar file from being decompiled? 中所述。
除了因为他们的基础设施必须访问我的类中的命名方法,混淆器甚至提供那个级别的保护吗?或者,如果一方向另一方提供一个已编译的 Java 类,那么实际上不需要对算法进行逆向工程吗?如果是后者,那么还有什么其他方法可以提供更高的安全性?
(我意识到所有可访问的代码都可以进行逆向工程。我只是希望它需要合理水平的努力 - 理想情况下是编译 C 级别的东西。)
最佳答案
要了解反编译 Java 类和 JAR 有多么容易,请参阅 this decompiler 。如果您需要公开或实现公共(public) API,您可以混淆的内容将受到限制。
只要人们能够访问您的 Java 二进制文件,就很难防范逆向工程。您可以尝试使用 JVM 脚本引擎之一(rhino,...)来实现您的算法并保护该脚本,但您会受到某人堆转储您正在运行的算法的支配。
关于java - 如何保护 Java 类文件中的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31524785/