众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆或加密(混淆工具如ProGuard),本文介绍的是采用jvmti方式对Class文件进行加密,使用C++生成加密和解密库,先用加密库对Jar包进行加密,将加密后的Jar包及解密库文件发布出去,执行时候需要JVM引入解密库文件,解密后执行。PS:高手请忽略。
假设我的代码包含两个类:
package com.lxw1234.test;
public class Test {
public static final String a = "This is Test Class ..";
public static void main(String[] args) {
System.out.println(a);
new Test2();
}
}
package com.lxw1234.test;
public class Test2 {
public Test2() {
System.out.println("This is Test2 Class ..");
}
}
编译后打包成Test.jar,使用jd-gui打开:
源代码一目了然。
接下来对Jar包进行加密处理。
下载此加密程序