有没有办法以不可逆向工程的格式部署 Java 程序?
我知道如何将我的应用程序转换成可执行的 JAR 文件,但我想确保代码不能被逆向工程,或者至少不能轻易被逆向工程。
源代码的混淆不算数...它使代码更难理解,但不会隐藏它。
一个相关的问题是 How to lock compiled Java classes to prevent decompilation?
完成程序后,我仍然可以访问原始资源,因此维护应用程序不是问题。如果应用程序是分布式的,我不希望任何用户能够反编译它。混淆并不能实现这一点,因为用户仍然能够对其进行反编译,虽然他们很难遵循操作流程,但他们能够看到代码,并可能从中获取信息。
我担心的是代码中是否有任何与远程访问相关的信息。有一个主机,应用程序使用用户提供的用户 ID 和密码连接到该主机。如果主机地址位于源代码中,是否有办法向用户隐藏主机地址?
最佳答案
简短的回答是“不,它不存在”。
逆向工程是一个根本不意味着要查看代码的过程。它基本上是试图了解底层机制,然后模仿它们。例如,这就是 JScript 在 MS 实验室中出现的方式,通过复制 Netscape 的 JavaScript 行为,而无需访问代码。复制的太完美了,连bug都复制过来了。
关于java - 创建不可逆向工程的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/149937/