我有一个棘手的情况,我希望保护我在客户端机器上可用的jar文件。
我有一个java项目,我使用build.xml生成jar文件,该文件可在安装后的客户端计算机上获得。
现在我需要保护jar文件中可用的代码,如果所有客户端都尝试反编译然后查看代码库。
我有一个依赖,比如当客户端尝试使用UI触发我的项目时,我将在服务器中生成java文件然后在客户端机器上下载此java文件然后编译java获取.class 的文件。已下载到客户端计算机的java文件将引用jar文件及其在jar中的功能。
我担心如果使用proguard或其他工具进行代码混淆, jar中的所有函数名称都会被更改而下载的java文件将无法在客户端计算机中编译由于函数调用不匹配,这个java文件和jar有。
我无法更改生成java文件并在运行时下载到客户端计算机的任何服务器端逻辑。
我想要任何逻辑,我希望在客户端机器上保护jar文件而不破坏编译。主要是我不希望客户端使用他的机器中可用的jar来查看我的代码。
任何帮助都非常感谢,提前感谢
答案 0 :(得分:0)
如果您使用的是ProGuard,则可能对Processing callback methods:
感兴趣如果您的应用程序,applet,servlet,库等包含回调 方法,从外部代码调用(本机代码, 脚本,...),你会想要保存它们,也可能是它们的类 太。它们只是代码的入口点,就像主要代码一样 申请方法。如果他们没有被其他保存 - 保持 选项,类似以下选项将保持回调 类和方法:
-keep class mypackage.MyCallbackClass { void myCallbackMethod(java.lang.String); }
这将保留给定的类和方法不被删除或重命名。
如果您想要外部调用的方法和类数量有限,您可以在进行模糊处理之前自行重命名它们(缩小);因此,仅在这些方法上添加您自己的混淆/缩小。然后将此缩小的名称用于客户的程序。其余的由ProGuard来混淆。