你会用javassist修改Jar包吗

原创
2016/11/02 11:59
阅读数 1.2K

不管是工作中,还是自己平时学习时候,或多或少都会碰到一些问题。没有源码的Jar文件或者是混淆过得Jar文件,里面提供的某个方法不适合自己,甚至某个方法是用来进行判断license的。

下面说的这个javassist.jar文件,就具备修改jar文件里面某个class的功能。上代码!

public static void main(String[] args) throws Exception {
		try {
			ClassPool pool = ClassPool.getDefault();
			//指定class所在的路径
			pool.insertClassPath("E:\\test");
			//指定要修改class的完整类名
			CtClass cc = pool.get("com.test.runtime");
			//设置要修改的方法需要的参数,没有参数可以不设置
			CtClass[] param = new CtClass[1];
			param[0] = pool.get("int");
			//指定要修改的类方法
			CtMethod m = cc.getDeclaredMethod("check", param);
			//插入新的代码到最前面
			//m.insertBefore("{if(true) return ;}"); 
			//重新设置方法体
			m.setBody("{return ;}");
			//保存到文件里,文件会保持到该工程下
			cc.writeFile();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

方法很简单,但是对需要的人来说,很重要。

Jar包下载地址:https://git.oschina.net/eliyanfei/api_tools.git

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部