下面程序为一个破解jar包license验证的javassist 使用
package DesCompile;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;
public class Test {
/**
* Description:
* @author Administrator DateTime 2014-7-10 下午3:15:42
* @param args
*/
///入口启动函数
public static void main(String[] args) throws Exception {
//这个是得到反编译的池
ClassPool pool = ClassPool.getDefault();
//取得需要反编译的jar文件,设定路径
pool.insertClassPath("D:xxxx_bootstrap.jar");
//取得需要反编译修改的文件,注意是完整路径
CtClass cc1 = pool.get("org.xxxx.bootstrap.LocalSystemInfo");
try {
//取得需要修改的方法
CtMethod method = cc1.getDeclaredMethod("validate");
//插入修改项,我们让他直接返回(注意:根据方法的具体返回值返回,因为这个方法返回值是void,所以直接return;)
method.insertBefore("{if(true) return false;}");
//取得需要修改的方法
CtMethod method2 = cc1.getDeclaredMethod("impregnate");
//插入修改项,我们让他直接返回(注意:根据方法的具体返回值返回,因为这个方法返回值是void,所以直接return;)
method2.insertBefore("{if(true) return false;}");
//写入保存
cc1.writeFile();
} catch (NotFoundException e) {
e.printStackTrace();
}
}
}