Javassist使用经验

阅读更多
最近在做某个软件的破解程序的时候,很久前使用的javassist粉末登场了一次。
使用过程中开始有点不顺,经过调试总算OK了。
现将解决内容公布如下:

1. 在修改某jar包某类的方法时,如果想直接重写方法体,注意方法体里面的各种类,要直接写类全局名称,因为编译时是可能imports会出现问题。
2. 在方法体内,引用形参,用$1,$2,$3,不能用反编译过来的变量名字。
3. for循环,编译时不支持 jdk5的for(xx:xxx)的写法,要改成常规for循环或迭代。
4. 对同名的不同方法,获取时,采用
 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);


你可能感兴趣的:(java,javassist)