3

您如何保护/加密您的 Java 类?

我一直在阅读有关 java.lang.ClassLoader 的一些文章和一篇 PDF 文章了解 Java ClassLoader建议我可以使用自定义类加载器即时解密一些加密的类文件。在那里我发现另一篇文章认为使用自定义类加载器来保护您的代码是没有意义的。关键是它最终必须调用 defineClass 方法。

也许这是我的无知,但如果我
1. 用密钥加密我的类
2. 我的应用程序启动器接受用户的密码(密码是密钥)
3. 我的应用程序启动器调用我的自定义类加载器
4. 然后我的自定义类加载器使用密码(密钥)解密加密文件
5. 然后整个事情开始运行


这不会成功地保护类文件不被反编译吗?

PS
我这样做只是为了好玩。

4

1 回答 1

0

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

你的解密类加载器仍然需要调用defineClass。任何人都可以在他们自己的类加载器中启动您的应用程序启动器,只需将一个 java.lang.ClassLoader 版本交给您的应用程序启动器,它将写出任何传递给 defineClass 的内容。

defineClass没有办法(我想除了本机代码)。

如果您非常担心您的类被反编译,您最好使用混淆器(ProGuard 等)可能提前使用本机编译器(GCJ、Jet)。

于 2013-06-12T10:44:19.893 回答