有没有一种方法可以将Java程序部署成一种不是逆向工程的格式?
我知道如何将我的应用程序转换成一个可执行的JAR文件,但是我想确保代码不能被逆向工程,或者至少不容易。
源代码的混淆不算.它使理解代码变得更加困难,但不会隐藏它。
一个相关的问题是https://stackoverflow.com/questions/49379/how-to-lock-compiled-java-classes-to-prevent-decompilation
一旦我完成了这个程序,我仍然可以访问原始的源代码,所以维护应用程序就不是问题了。如果应用程序是分布式的,我不希望任何用户能够对其进行反编译。混淆并不能实现这一点,因为用户仍然能够对其进行反编译,虽然他们在跟踪操作流时会有困难,但他们将能够看到代码,并可能从代码中获取信息。
我关心的是,代码中是否有任何与远程访问有关的信息。应用程序使用用户提供的用户id和密码连接到一个主机。如果主机地址位于源代码中,是否有方法对用户隐藏该主机的地址?
发布于 2008-09-29 18:10:33
您可以使用YGuard混淆JAR文件。它不会混淆您的源代码,而是编译好的类,所以以后维护代码没有问题。
如果你想隐藏一些字符串,你可以加密它,使它更难通过查看源代码(如果你混淆JAR文件更好)。
发布于 2008-09-29 18:15:16
简短的回答是“不,它不存在”。
逆向工程是一个过程,并不意味着要查看所有上的代码。它基本上是试图理解潜在的机制,然后模仿它们。例如,通过复制Netscape的JScript行为,而不需要访问代码,MS实验室就是这样出现的。这个副本太完美了,连虫子都被复制了。
发布于 2008-09-29 18:14:34
如果您知道您的目标是哪个平台,那么可以获得将您的Java编译成本机代码的东西,比如精益喷射机或GCJ。
否则,您将永远无法隐藏源代码,因为用户总是有您的字节码,并且可以对其进行贾德。
https://stackoverflow.com/questions/149937
复制相似问题