0

我有一个棘手的情况,我想保护客户端机器中可用的 jar 文件。

我有一个 java 项目,我正在使用 build.xml 生成 jar 文件,该文件可在客户端机器安装后使用。

现在我需要保护 jar 文件中可用的代码,如果所有客户端/s 将尝试反编译然后查看代码库。

当客户端尝试使用 UI 触发我的项目时,我有一个依赖项,我将在服务器中生成 java 文件,然后在客户端机器上下载这个 java 文件,然后编译 java 文件以获得一个 .class。下载到客户端的 java 文件将引用 jar 文件及其在 jar 中的功能

我担心如果我使用 proguard 或其他一些工具进行代码混淆,jar 中的所有函数名称都会更改,并且下载的 java 文件将无法在客户端机器中编译,因为该 java 文件具有的函数调用不匹配而 jar 具有.

我无法更改任何生成 java 文件并在运行时下载到客户端计算机的服务器端逻辑。

我想要任何我想在不破坏编译的情况下保护客户端机器上的 jar 文件的逻辑。主要是我不希望客户使用他机器中可用的 jar 来查看我的代码。

任何帮助都非常感谢,在此先感谢

4

1 回答 1

0

如果您使用 ProGuard,您可能对处理回调方法感兴趣:

如果您的应用程序、applet、servlet、库等包含从外部代码(本机代码、脚本等)调用的回调方法,您将希望保留它们,可能还需要保留它们的类。它们只是代码的入口点,就像应用程序的主要方法一样。如果其他 -keep 选项未保留它们,则类似以下选项的内容将保留回调类和方法:

-keep class mypackage.MyCallbackClass {
    void myCallbackMethod(java.lang.String); }

这将保护给定的类和方法不被删除或重命名。

如果您只想从外部调用有限数量的方法和类,您可以在混淆之前自行重命名(缩小)它们;因此,仅在这些方法上添加您自己的混淆/缩小。然后在您的客户程序中使用这个缩小的名称。其余的由 ProGuard 来混淆。

于 2016-02-06T08:04:29.560 回答