如何使 Java 程序闭源?
How can one make a Java program closed source?
当通过使用 jad 或类似程序可以轻松检索源代码时,Java 程序如何成为封闭源代码?
例如,一个jar可以解压得到class个文件,这些文件可以反编译、读取、编辑和再次编译。
那么,如何呢?
因为专有许可证不会隐藏代码。
好吧,我能建议的最好的事情是网络开发人员所做的,这就是使算法无法阅读。您可以从代码中删除每个 space 或制表符开始(当然使用算法),然后使 var 名称混乱等等。
"Closed source"表示未发布源代码,并不是无法获得代码表示。
混淆后的代码在反编译时可能很难阅读,但是,随着时间、工具和决心,所有代码的秘密都会揭开。
您最好的选择是在公开之前混淆您的代码。
基本思想是用尽可能短的无意义名称(例如"a")替换所有"readable"名称(例如"fetchTaxRate")。如果您的源代码 "taxManager.fetchTaxRate(customerClass, countryID);" 中有一条指令最终可能会变成 "aB.e(zY, Q);" 并且任何试图反编译二进制文件的人都会看到后者而不是前者。
一篇关于混淆的好文章位于 https://www.excelsior-usa.com/articles/java-obfuscators.html
这篇文章还有一个混淆器列表,我个人使用最满意的混淆器 (ProGuard) 也在列表中。
当通过使用 jad 或类似程序可以轻松检索源代码时,Java 程序如何成为封闭源代码?
例如,一个jar可以解压得到class个文件,这些文件可以反编译、读取、编辑和再次编译。 那么,如何呢?
因为专有许可证不会隐藏代码。
好吧,我能建议的最好的事情是网络开发人员所做的,这就是使算法无法阅读。您可以从代码中删除每个 space 或制表符开始(当然使用算法),然后使 var 名称混乱等等。
"Closed source"表示未发布源代码,并不是无法获得代码表示。
混淆后的代码在反编译时可能很难阅读,但是,随着时间、工具和决心,所有代码的秘密都会揭开。
您最好的选择是在公开之前混淆您的代码。
基本思想是用尽可能短的无意义名称(例如"a")替换所有"readable"名称(例如"fetchTaxRate")。如果您的源代码 "taxManager.fetchTaxRate(customerClass, countryID);" 中有一条指令最终可能会变成 "aB.e(zY, Q);" 并且任何试图反编译二进制文件的人都会看到后者而不是前者。
一篇关于混淆的好文章位于 https://www.excelsior-usa.com/articles/java-obfuscators.html
这篇文章还有一个混淆器列表,我个人使用最满意的混淆器 (ProGuard) 也在列表中。