Github链接https://github.com/Col-E/Recaf javassist 可以
但是比较复杂
ClassPool pool = ClassPool.getDefault();
//设置目标类的路径
pool.insertClassPath("C:\\Users\\voidm\\AppData\\Local\\finalshell\\finalshell.jar");
//获得要修改的全路径类名
CtClass clazz = pool.get("myssh.abc");
// CtField field = clazz.getDeclaredField("field");
//添加构造器
// CtConstructor constructor = new CtConstructor(new CtClass[]{},clazz);
// constructor.setBody("{this.flag= true;}");
// clazz.addConstructor(constructor);
// 编辑已有构造
CtConstructor[] declaredConstructors = clazz.getDeclaredConstructors();
declaredConstructors.insertAfter("this.flag= true;");
//保存到文件里
clazz.writeFile() ;
clazz.writeFile("C:\\Users\\voidm\\Desktop\\temp"); 方法很多:
1:转Java,修改后再重新打包
2:使用字节码直接修改
页:
[1]