【问题标题】:Can I compile Java into shared library(.so) and load it by System.load() function in Java?我可以将Java编译成共享库(.so)并通过Java中的System.load()函数加载它吗?
【发布时间】:2016-10-02 11:25:27
【问题描述】:

我可以将java编译成共享库(.so)并通过Java中的System.load()函数加载它吗?我之所以要这样做是因为我不希望其他人可以反转我的 java 代码。我想保守一些java代码的秘密。

感谢任何建议!如果可行,可以举个例子吗?非常感谢!

【问题讨论】:

  • 这闻起来像XY problem。改为研究“Java 混淆”。
  • 我不希望其他人可以反转我的 java 代码 然后不要给他们你的实现。如果您分发已编译的二进制文件,那么无论您将它们提供给谁,都将能够反转您的代码。所有的混淆都会使这项任务更难完成。您的代码仍然必须执行它的设计目的,并且它执行是很容易观察到的,无论它可能多么“模糊”。为什么你认为有人会费心去反转你的代码?
  • @AndrewHenle 我只是想逃避静态分析。无论如何,非常感谢!
  • @Biffen Roger 那。谢谢!

标签: java java-native-interface shared-libraries


【解决方案1】:

使 Java 代码可执行但不可能进行逆向工程并非易事,我建议不要采用这种技术解决方案。

您通常有两种选择:

  • 在许可证中强制执行“您不得对我的代码进行反向工程”。换句话说,使它成为一种政治而非技术解决方案。这通常最适合付费客户。

  • 将需要保密的代码保存在别处。执行此操作的典型方法是让您的程序通过您控制的服务器上的 Web 服务调用密码。

对于 Java,Jersey JAX-RS 实现非常适合我们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多