可以轻松提取.jar
文件并查看源代码。我想保护源代码不被看到。一个可能的答案是密码保护文件,就像我们为zip文件做的那样。
但是,如果密码已知,则可以很容易地看到源代码。
有没有办法隐藏源代码并仍然可以运行?类似于.exe
在Windows中的作用。这应该在Windows和Linux环境中运行。
答案 0 :(得分:5)
您要搜索的是“java obfuscation”。有很多工具可以帮助解决这个问题,但是如果想要你的代码的人真的想要它,那将是一场失败的战斗。如果这是一个严重的问题,你应该用C ++编写。
答案 1 :(得分:4)
看看ProGuard,它是java的流行混淆器。至于将java程序打包为windows可执行文件,这篇文章可能会对您有所帮助:How can I convert my Java program to an .exe file?
答案 2 :(得分:4)
可以轻松提取.jar文件并查看源代码。
严格地说,事实并非如此。除非您实际将源代码文件包含在JAR中,否则有人无法看到原始源代码。但是他们可以(通常)将JAR文件中的“.class”文件反编译为与原始源代码功能相同的Java源代码。
正如其他答案所述,你可以让那些试图对你的代码进行逆向工程的人更难;例如通过使用混淆器或自定义类加载器来解密在JAR文件中以加密形式存储的代码。但是你无能为力就足以阻止坚决的黑客击败你的措施。 NOTHING。
保护代码免受逆向工程的唯一实用方法是不释放它。或者使用软件许可或其他合法手段来实现目标。
答案 3 :(得分:2)
如果您打算简单地阻止偶然的观众,那么Java的许多代码混淆工具中的任何一个都可能会有所帮助。它会使字节码混乱,使你的算法不那么明显。
另一方面,如果您需要“绝对”保护,任何加密/混淆工具都将毫无用处 - 如果您的计算机可以运行它,那么一个坚定且知识渊博的攻击者将能够最终弄清楚你的代码是如何工作的。
一些可能的解决方案:
使用客户端/服务器体系结构在您拥有的计算机上运行专有部件,这样您就不必在客户端应用程序中包含更有趣的代码部分。当然,出于各种原因,这种解决方案并不总是可行的。
聘请几位专门研究知识产权问题和专利算法的律师。在我看来,除了试图强制解决非技术性问题的技术解决方案之外,这远远不是一个替代方案......
答案 4 :(得分:0)
搜索" java混淆"。有很多工具可以帮助解决这个问题,但如果有人真的想要检索源代码,你就无法阻止他。 要实现与安全相关的东西,你应该用C ++编写代码然后创建动态库(.dll用于windows和.so用于linux)并使用java jni来使用它们。
在Windows上你可以使用mingw来编译代码。
看看这个 https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html