【问题标题】:Protect Java source using JNI使用 JNI 保护 Java 源代码
【发布时间】:2012-06-26 18:42:37
【问题描述】:

我有一个想法, 是否可以使用 JNI 代码或其他东西来保护我的 java 源(打包到 jar 文件中),这些源是用自定义类加载器加载的?

由于JNI代码不能被反编译,所以能够保护java代码也很好。

这可能吗?

谢谢。

【问题讨论】:

  • “因为 JNI 代码不能被反编译”——也许不像 Java 字节码那么容易,但仍然可能。
  • @PhilippReichart 是的,我知道使用基本调试器会给我一个关于代码如何工作的重要线索,但这肯定会限制破解我的应用程序的人数。
  • 看看this article。它展示了一些使您的 Java 应用程序更难逆向工程的方法。
  • 最好的办法是一种自定义 JRE 检测器,它可以阻止倾倒者。

标签: java jar java-native-interface protection copy-protection


【解决方案1】:

我已经搜索了很多类似的东西,这是我的看法。

在 JVM 级别编写您自己的自定义引导带类加载器,该类加载器必须使用 C 进行编码。该类加载器将使用加密密钥将已加密的 java 类文件即时解密为字节数组以进行类定义.

现在您只剩下在哪里存储您的加密密钥以及如何保护它了。

最后,您最好还是购买 Excelsior-Jet,我以前用过它,它是一款非常棒的应用。非常值得您花 3,000 美元左右。

【讨论】:

  • 因提及我们的产品而受到支持(我为 Excelsior 工作),但我必须向您指出一篇 DZone 文章,解释为什么 software encryption of bytecode does not make much sense
  • 和re Excelsior JET价格,有discounts for small businesses
  • 感谢 Dmitry 的支持,我阅读了 excelsior 网站上有关字节码加密的所有文章,并提到有一些硬件 USB 令牌可以完成低级加密工作。我提到修改 JVM 的引导类加载器它自己不使用 Java 中的类加载器。因此,本质上 JVM 被重新编译以在本地进行加密/解密工作。我还没有这样做,因为这很头疼。我宁愿购买 excelsior 并拥有原生的一切:)
猜你喜欢
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2018-02-25
  • 1970-01-01
相关资源
最近更新 更多