前段时间,在我的工作中,我需要保护一些课程,以防止其他人阅读代码。为此,我创建了一个EncryptedClassLoader,它加载了以前加密的类,并且还可以加载普通(未加密)类。 以这种方式工作有点复杂,并且也在测试(编译,然后加密,然后解密)。
是否有任何免费框架可以完成我需要的工作并且易于处理?我的意思是,不仅混淆,而且还加密文件,所以没有人可以读取或调试这部分代码。我可以很容易地更改加密密钥(在我的应用程序中,它是硬编码的)。
提前致谢。
答案 0 :(得分:7)
简短的回答,你不能。加密不起作用。这是一篇关于为什么pointless to use an encrypted class loader:
的旧文章不幸的是,你错了, 都认为你是 首先提出这个想法并在 认为它确实有效。和 原因与此无关 加密方案的优势。
你可以对它进行模糊处理,但这只会到目前为止,最后我坚信你的时间会更好地修复错误或添加功能。
答案 1 :(得分:3)
加密不会增加混淆的安全性。任何能够运行程序的人也可以将删除的字节码转储到磁盘上。我假设这就是加密字节码的原因并不常见,例如签名就是这样。
如果您确实要加密字节码,请确保您也对其进行模糊处理,我认为您当前使用的方法可以正常工作而无需添加任何框架或库。
答案 2 :(得分:1)
我们使用JarProtector库来加密我们的jar文件。没有混淆,但只加密。没有更改加密密钥的选项,但永远不会调用defineClass()。
答案 3 :(得分:0)
保护代码的唯一方法就是不允许用户运行代码。而不是分发应用程序,销售对在线服务的访问权限。然后你的代码就坐在服务器上,你唯一暴露的就是界面。
另一种方法是用合同和律师来保护你的代码,但除非你写了真的好的东西,否则这将花费你超过你原本丢失的收入。
答案 4 :(得分:0)
你可以尝试VLINX Java Protector,它通过修改JVM来加密和解密类数据,而不是用Java编写的ClassLoader,可以有效地保护你的java代码,从而使本地的ClassLoader成为