关于java:Custom ClassLoader使用密钥来解密预加密的类文件(已使用密钥加密)

Custom ClassLoader uses secret key to decrypt pre-encrypted class files (which had been encrypted with the secret key)

如何保护/加密Java类?

我在Java.Lang.Class加载程序和一个PDF文章上读到一些文章,了解Java类加载器建议我可以使用自定义类加载器来对某些加密的类文件进行即时解密。在那里,我发现了另一篇文章,认为使用自定义类加载器来保护代码是毫无意义的。关键是它最终必须调用defineclass方法。

也许是我的无知,但如果我
1。用密钥加密我的类
2。我的应用程序启动程序接受用户的密码(密码是密钥)
三。我的应用启动程序调用我的自定义类加载器
4。然后,我的自定义类加载器使用密码(密钥)解密加密的文件
5。然后一切开始运转


这不会成功地保护类文件不被解压缩吗?

P.S.
我只是为了好玩才这么做。


您已经回答了自己的问题:

解密类加载器仍然需要调用defineclass。任何人都可以在自己的类加载器中启动你的应用启动程序,并简单地将java.lang.Class加载器的一个版本交给你的应用启动程序,这个版本可以写出任何传递给定义类的内容。

定义类周围没有办法(我想除了本机代码之外)。

如果你如此担心你的类被反编译,你最好使用一个模糊器(proguard或类似工具),或者一个提前本地编译器(gcj,jet)。