我不希望我的课程被反编译。
我浏览了一些文章,找到了一个专利网站 Zelix KlassMaster
市场上是否有任何以类似方式工作的免费工具..
据我所知,没有具有相同功能的免费工具。
在我看来,ProGuard 和Stringer Java Obfuscator的组合是保护 Java 和 Android 应用程序的最好也是最便宜的方法。
注意,我是 Licel LLC 的首席执行官。Stringer Java 混淆器的开发者。
Proguard是最好的免费和开源混淆器。混淆器会混淆您的类、字段和方法名称,因此很难从反编译的代码中理解。
Zelix Klassmaster 是一个商业混淆器,是商业领域中最好的之一。此外,它还有一些附加功能可以加密字符串常量,使字符串在反编译时不可见。还有一些其他的商业工具,如 yguard、DashO-pro、Allatori 和 Smokescreen 等。
您可以混淆您的代码,以便在反编译时不容易阅读(对于程序员)
你不能专门阻止它被反编译。毕竟,反编译器只要能够读取字节码就可以将其转化为源代码,而读取字节码也是JVM要做的事情。因此,如果您想出某种方法来阻止程序读取字节码,JVM 将无法运行您的类。
正如其他人指出的那样,如果您真的需要这样做,那么混淆是要走的路,但我会质疑您是否真的需要这样做。还值得指出的是,如果你确实使用了混淆,发现错误会更加困难,因为堆栈跟踪也会被混淆。
混淆当然是保护代码的一种方式。此外,还有其他工具可以加密您的类并提供自定义类加载器,可以在运行时解密和加载您的类。这不是一个非常万无一失的方法,但是是的,有工具可以做到这一点。
你不能阻止一个 java 类被反编译。但是,你可以让那些试图理解你的代码的人的生活变得非常困难。这是所谓的混淆器的任务,比如 KlassMaster。
请参阅此列表以了解开源混淆器。
另请参阅我的一个问题:https ://stackoverflow.com/questions/1872170/how-to-protect-intellectual-property-in-java-app
不幸的是,在 Java 中,就像在 JavaScript 中一样,获取源代码很容易。理解它是另一回事。如果您足够努力并通过数十个函数发送日期,每个函数只做一小部分并将其传递,然后对其进行混淆,并可能添加一些假函数,您可能会给那些有恶意的人足够的头脑,他们会在成功之前退出。
我在我的应用程序Visual Watermark中使用 Zelix Klassmaster已有大约两年的时间了。从那以后没有发布新的程序“裂缝”。因此,这似乎是保护 Java 应用程序的好选择。