除了混淆之外的Jar保护

时间:2016-02-06 07:27:03

标签: java jar obfuscation decompiling java-security

我有一个棘手的情况,我希望保护我在客户端机器上可用的jar文件。

我有一个java项目,我使用build.xml生成jar文件,该文件可在安装后的客户端计算机上获得。

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

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

我担心如果使用proguard或其他工具进行代码混淆, jar中的所有函数名称都会被更改下载的java文件将无法在客户端计算机中编译由于函数调用不匹配,这个java文件和jar有。

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

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

任何帮助都非常感谢,提前感谢

1 个答案:

答案 0 :(得分:0)

如果您使用的是ProGuard,则可能对Processing callback methods

感兴趣
  

如果您的应用程序,applet,servlet,库等包含回调   方法,从外部代码调用(本机代码,   脚本,...),你会想要保存它们,也可能是它们的类   太。它们只是代码的入口点,就像主要代码一样   申请方法。如果他们没有被其他保存 - 保持   选项,类似以下选项将保持回调   类和方法:

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

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

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