使用自定义类加载器加密JavaFXJAR

使用自定义类加载器加密JavaFXJAR,java,security,encryption,javafx,javafx-8,Java,Security,Encryption,Javafx,Javafx 8,我正在windows 8.1 64位PC上使用JDK 8 update 60 32位为windows桌面开发一个JavaFx 8应用程序 我将JVM和JavaFX程序作为一个自包含的应用程序一起提供,我真的希望通过加密Jar文件,然后在运行时对其进行解密,在使用Proguard进行混淆的同时增加一些安全性,但我找不到实现这一点的最新示例 我在SO中搜索过,在Google上搜索过,所有的答案都说这不是一条路,也不安全,但事实上,这种方法增加了一层安全性,因为据我所知,从内存中获取类并不像下载反编译

我正在windows 8.1 64位PC上使用JDK 8 update 60 32位为windows桌面开发一个JavaFx 8应用程序

我将JVM和JavaFX程序作为一个自包含的应用程序一起提供,我真的希望通过加密Jar文件,然后在运行时对其进行解密,在使用Proguard进行混淆的同时增加一些安全性,但我找不到实现这一点的最新示例

我在SO中搜索过,在Google上搜索过,所有的答案都说这不是一条路,也不安全,但事实上,这种方法增加了一层安全性,因为据我所知,从内存中获取类并不像下载反编译器然后获取所有代码那么容易

因此,我的问题是:-

1) 如何加密Jar文件,然后使用JavaFX8加密类应用程序实现自定义类加载器

2) 我还发现,您可以使用自定义JVM动态解密JAR,而且更安全!!如何实现这一点


谢谢

从内存中获取类并不像下载反编译器然后获取所有代码那么简单
——这与现实正好相反,没有什么比列出内存中的所有类更容易的了,事实上每个JDK默认都附带了一个强大的内存转储工具——它被称为“jvisualvm”并且可以在您的
bin
目录中找到。显然,您对java有一些主要的误解。既不可能实现机器代码级的模糊处理,也没有任何意义——java操作字节码,因此可以在任何时候解除对字节码的使用。如果您想“保护”您的代码,请为其设置限制性许可证或使用另一种语言,java无意在任何程度上“保护”您的创作。你使用了错误的工具。还有一件事:反编译器不会“获取你的代码”。完全您可以推断的是程序集助记符——有了这些,强大的反编译器可以估计可能的源代码变体;没有一个像原来的。。。这就像在看一个人的影子时,试图画一张非常详细的脸。不可能。即使是Java反编译程序也是如此,但由于字节码可用,因此可以跳过组装步骤,估计值也会接近原始值。当然,您可以列出内存中的所有类,甚至字段,但我认为您无法轻松查看代码。我不想完全阻止反编译,因为我知道这不是可能,但我想让它尽可能困难。是的,使用像Excelsior JET这样的AOT可以达到机器代码级别,但成本很高。我引用“下载一个反编译器,然后获得所有代码”。我同意反编译器永远不会得到确切的代码,但大部分情况下它会得到“足够”的代码