我想为我的 java 项目创建一个 exe 文件,但问题是任何人都可以从 exe 获取我的应用程序代码。有什么方法可以让任何人都无法从 exe 文件中获取应用程序的源代码?
2 回答
您可以使用诸如Excelsior Jet之类的应用程序(就像我过去所做的那样)或来自 Internet 的其他免费软件(如果您想投资的话,也可以是付费软件)创建一个 exe。excelsior jet 的问题是,如果你想要免费的话,你只能获得 90 天的试用期,并且所有创建的 exe 在试用期结束后都会停止工作。Exes 不是防破解的,但是它们确实使获取源代码变得更加困难。创建 exe 的另一个好处是最终用户将不会如此依赖 Java 安装在他们的计算机上。
有什么方法可以让任何人都无法从 exe 文件中获取应用程序的源代码?
不。
还有一个简短的阐述(我期望作者问的):Java 类被编译为字节码,由 JVM 执行。由于 JVM 最初设计为通过软件实现,因此 JVM 指令集包含某些高级操作,例如对象创建、方法调用等,允许 1:1 映射到源代码中的高级操作。这一点,再加上 JVM 指令集有很好的文档记录,是重构 Java 源代码如此容易的主要原因之一。
以及一个简短的详细说明(针对所要求的内容):从 Java 类中创建面向平台的可执行文件并非易事。原因之一可能是整个 Java 标准库(包括基本java.lang
类)都是用 Java 实现的。假设您已经解决了这个问题,很可能是通过提供本地实现的标准库类的子集,生成的汇编代码仍然可以反向工程回源代码。可以跟踪类/对象/方法边界并从那里向上工作。当然,生成的源代码可能几乎没有可读性/可理解性。