【发布时间】:2020-02-17 04:50:45
【问题描述】:
有没有一种方法可以安全地运送 Clojure 编写的代码,而不会(或最小化)它被反编译和访问的风险?
用 uberjar 生成的 jar 文件是否安全到可以传递?
谢谢大家!
【问题讨论】:
标签: clojure compilation executable-jar
有没有一种方法可以安全地运送 Clojure 编写的代码,而不会(或最小化)它被反编译和访问的风险?
用 uberjar 生成的 jar 文件是否安全到可以传递?
谢谢大家!
【问题讨论】:
标签: clojure compilation executable-jar
如果您可以在只有使用您的代码的人通过网络访问的网络服务器上运行代码,那么只要您保证该服务器的安全,该服务器是否有源代码都没有关系。
可以创建包含可部署的 Clojure 源代码的 JAR 文件,方法是使用部署 JAR 的计算机上的 Clojure 编译器,在 JVM 进程启动后不久将 Clojure 源编译为 JVM 字节码。您可以对 JAR 文件执行“unzip -v foo.jar”以查看其中的文件名列表,以及任何具有文件名后缀的文件,例如“.clj”、“.cljs”或“.cljc”可能是 Clojure 源代码。
如果 JAR 中的任何文件的文件名以“.class”结尾,则这些文件是包含 JVM 字节码的 Java 类文件。您可以对大多数此类文件运行反编译器,并且通常会返回与 Clojure 源代码行为相同的语法合法的 Java 源代码。例如请参阅https://github.com/clojure-goes-fast/clj-java-decompiler 或在 Google 上搜索“java decompiler”以了解许多其他此类工具。
如果您搜索“java 字节码混淆”之类的术语,您可能会找到声称提供某种程度的名称和/或 JVM 字节码功能的工具。我不知道它们的效果如何。
一般来说,与在合同中有损失的一方签订合同,或者比尝试对您的代码进行逆向工程更重要的事情,比技术方法更有效地防止逆向工程。
【讨论】: