【问题标题】:How can one make a Java program closed source? [duplicate]如何使 Java 程序成为封闭源代码? [复制]
【发布时间】:2018-06-07 09:15:43
【问题描述】:

当通过使用 jad 或类似程序轻松检索源代码时,Java 程序如何成为封闭源代码?

例如,可以解压缩 jar 以获得类文件,并且可以对这些文件进行反编译、读取、编辑和再次编译。 那么,如何?

因为专有许可证不会隐藏代码。

【问题讨论】:

  • 我知道封​​闭源代码许可证,但您确实使用这些许可证来忽略代码
  • 封闭源代码意味着您没有公开您的源代码。这并不意味着任何人都无法掌握您源代码的任何版本。

标签: java reverse-engineering


【解决方案1】:

您的最佳选择是在公开之前混淆您的代码。

基本思想是用尽可能短的无意义名称(例如“a”)替换所有“可读”名称(例如“fetchTaxRate”)。如果您的源代码中有一条指令“taxManager.fetchTaxRate(customerClass, countryID);”最终可能是“aB.e(zY, Q);”任何试图反编译二进制文件的人都会看到后者而不是前者。

关于混淆的好文章在https://www.excelsior-usa.com/articles/java-obfuscators.html

这篇文章还有一个混淆器列表,而我个人使用的一个让​​我满意的混淆器 (ProGuard) 也在其中。

【讨论】:

    【解决方案2】:

    “闭源”是指不公开源代码,并不是无法获得代码的表示形式。

    经过反编译的混淆代码可能非常难以阅读,但是,随着时间、工具和决心,所有代码的秘密都会泄露。

    【讨论】:

      【解决方案3】:

      嗯,我能建议的最好的事情是网络开发人员所做的,这就是让算法无法阅读。您可以从删除代码中的每个空格或制表符开始(当然使用算法),然后使 var 名称混乱等等。

      【讨论】:

      • 删除空格不会影响反编译的 Java 源代码。
      • 但是您仍然可以采取一些措施使其不可读。
      • 但这只是一个猜测。我还没读过反编译的java。
      • @StrikerEliteGaming 不要猜。猜测没有用,知识才是。为此:编写和编译一些 Java 代码并反编译它。然后使用-g:none编译代码并反编译。然后通过混淆器运行你的代码并反编译它。
      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多