Java JAR保护

Man*_*oba 2 java classloader urlclassloader source-code-protection

我编写了一个Java应用程序,我计划在线发布它.每个版本都将使用我制作的秘密序列密钥锁定.

我需要从反编译器等保护我的jar文件.这是我到目前为止所做的:

  1. 用户将其序列密钥输入表单
  2. 串口通过php脚本发送到我的开发服务器
  3. 该脚本生成一个新的jar bin文件,该文件在AES 128中加密
  4. 我的"loader"将jar文件作为字节下载并解密.
  5. 它调用main方法.
  6. 用户可以随意使用该应用
  7. 用户关闭应用程序
  8. 缓存被清除,一切都返回到步骤1或之前.

我做了1〜3步,但我需要知道是否有可能使,抓住从HTTP字节,解密它们,并调用main方法的定制ClassLoader.由于文件是完全加密的(在PHP服务器上保存为bin),我不能使用基本的类加载器.关于步骤8,是否可以从计算机的内存中卸载内容?

npe*_*npe 5

是的,这是可能的,但它也没用.

您的类加载器将是您的安全系统中最薄弱的环节.它无法加密,因此反编译它会相对容易.

现在,因为在类加载器中有一个位置,你必须有一个bytearray形式的解密类,攻击者唯一需要做的就是将这个字节数组转储到一个文件中.

参考dystroy代码:

classBytes = EncryptionUtil.decryptBytes(url, key); 

// In this moment, classBytes contains unencrypted class.
// If an attacker adds:   
//
//   FileOutputStream fos = new FileOutputStream("some.name");
//   fos.write(classBytes);
//   fos.close();
// 
// he will destroy all your security.


return defineClass(name, classBytes, 0, classBytes.length);
Run Code Online (Sandbox Code Playgroud)