最近在做某个软件的破解程序的时候,很久前使用的javassist粉末登场了一次。
使用过程中开始有点不顺,经过调试总算OK了。
现将解决内容公布如下:
1. 在修改某jar包某类的方法时,如果想直接重写方法体,注意方法体里面的各种类,要直接写类
全局名称,因为编译时是可能imports会出现问题。
2. 在方法体内,引用形参,用$1,$2,$3,不能用反编译过来的变量名字。
3. for
循环,编译时不支持 jdk5的for(xx:xxx)的写法,要改成常规for循环或迭代。
4. 对同名的不同方法,获取时,采用
class="java">
cc = cp.get("xxx");
CtClass[] param = new CtClass[4];
param[0] = cp.get("java.lang.String");
param[1] = cp.get("java.lang.String");
param[2] = cp.get("java.lang.String");
param[3] = cp.get("int");
m = cc.getDeclaredMethod("a", param);