将源代码隐藏在.jar文件中

可以轻松提取.jar文件并查看源代码。 我想保护源代码不被看到。 一个可能的答案是密码保护文件,就像我们为zip文件做的那样。

但是,如果密码已知,则可以很容易地看到源代码。

有没有办法隐藏源代码,仍然可以运行? 类似于.exe在Windows中的function。 这应该在Windows和Linux环境中运行。

你想要搜索的是“java obfuscation”。 有很多工具可以帮助解决这个问题,但是如果想要你的代码的人真的想要它,这将是一场失败的战斗。 如果这是一个严重的问题,你应该用C ++编写。

看看ProGuard ,它是java的流行混淆器。 至于将java程序打包为windows可执行文件,这篇文章可能会对你有所帮助: 如何将我的Java程序转换为.exe文件?

可以轻松提取.jar文件并查看源代码。

严格来说,这不是真的。 除非您实际将源代码文件包含在JAR中,否则有人无法看到原始源代码。 但是他们可以(通常)将JAR文件中的“.class”文件反编译为function上与原始源代码等效的 Java源代码。

正如其他答案所述,你可以让那些试图对你的代码进行逆向工程的人更难; 例如,通过使用混淆器或自定义类加载器来解密在JAR文件中以加密forms存储的代码。 但是,你无能为力,足以阻止坚定的黑客击败你的措施。 没有。

保护代码免受逆向工程的唯一实用方法是不释放它。 或使用软件许可或其他合法手段来实现目的。

如果您打算简单地阻止偶然的观众,那么Java的许多代码混淆工具中的任何一个都可能会有所帮助。 它会使字节码混乱,使您的算法不那么明显。

另一方面,如果您需要“绝对”保护,任何加密/混淆工具都将毫无用处 – 如果您的计算机可以运行它,那么一个坚定且知识渊博的攻击者将能够最终弄清楚您的代码是如何工作的。

一些可能的解决方案:

  • 使用客户端/服务器体系结构在您拥有的计算机上运行专有部件,这样您就不必在客户端应用程序中包含更有趣的代码部分。 当然,由于各种原因,这种解决方案并不总是可行的。

  • 聘请几位专门研究知识产权问题并为您的算法申请专利的律师。 在我看来,除了试图强制解决非技术性问题的技术解决方案之外,这是一种替代方案。

搜索“java obfuscation”。 有很多工具可以帮助解决这个问题,但如果有人真的想要检索源代码,你就无法阻止他。 要实现与安全相关的东西,你应该用C ++编写代码然后创建动态库(.dll用于windows和.so用于linux)并使用java jni来使用它们。

在Windows上,您可以使用mingw来编译代码。

看看这个https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html