Proguard是最好的免费开源混淆器。混淆器可以将您的类、字段和方法名称混淆,使得反编译代码变得困难。
Zelix Klassmaster是一款商业混淆器,是商业领域中最好的之一。它还具有一些额外功能来加密字符串常量,以便在反编译时字符串不可见。还有一些其他商业工具,如yguard、DashO-pro、Allatori和Smokescreen等。
您可以混淆您的代码,这样当它反编译时,对于程序员来说就不容易阅读。
你无法特别地阻止反编译。毕竟,反编译器只需要能够读取字节码并将其转换为源代码,而读取字节码也是JVM必须执行的操作。因此,如果你想出某种方法来防止程序读取字节码,JVM将无法运行你的类。
正如其他人指出的那样,混淆是解决这个问题的方法,但我会质疑你是否真的需要这样做。同时,值得注意的是,如果你使用混淆,查找错误将会更加困难,因为堆栈跟踪也会被混淆。
混淆无疑是保护您的代码的一种方式。此外,还有其他工具可以加密您的类,并提供自定义类加载器,可以在运行时解密和加载您的类。这不是非常可靠的方法,但确实有一些工具可以做到。
我现在已经使用Zelix Klassmaster两年了,用于我的应用Visual Watermark。自那时以来,没有发布新的程序“破解”。因此,它似乎是保护Java应用程序的一个不错的选择。
无法防止 Java 类被反编译。但是,您可以让试图理解您的代码的人感到非常困难。这就是所谓的混淆器(如 KlassMaster)的任务。
请参见此列表以获取开源混淆器。
请还参见我的一个问题:https://stackoverflow.com/questions/1872170/how-to-protect-intellectual-property-in-java-app
不幸的是,在Java中就像在JavaScript中一样,获取源代码很容易。 理解它是另一回事。 如果你足够努力,通过数十个函数发送数据,每个函数都执行一小部分并将其传递,然后对其进行混淆,可能添加一些虚假函数,那么你可能会给予那些有不良意图的人足够的挫败感,让他们在成功之前放弃。