赞
踩
很多时候我们都想修改别人的jar来满足自己的需求,很多jar都是混淆且我们是没有源码的,那怎么办呢。。。
1、下载javassist.jar
2、新建一个java工程,如果有android内容的,我们还需要添加android.jar
3、解压jar,我们就可以看到jar的class文件了,然后找到我们需改修改的类和方法
4、进阶学习javassist.jar的使用
下面是简单的修改的一个demo
- import javassist.ClassPool;
- import javassist.CtClass;
- import javassist.CtMethod;
- import javassist.NotFoundException;
-
-
- public class Test {
- public static void main(String[] args) throws Exception{
-
-
- //这个是得到反编译的池
-
- ClassPool pool = ClassPool.getDefault();
-
- //取得需要反编译的jar文件,设定路径
-
- pool.insertClassPath("/Users/flyjun/Desktop/release/tbs.jar");
-
- //取得需要反编译修改的文件,注意是完整路径
-
- CtClass cc1 = pool.get("com.tencent.smtt.utils.b");
-
- try {
-
- //取得需要修改的方法
-
- CtMethod method = cc1.getDeclaredMethod("c");
- method.setBody("return null;");
-
-
-
- //取得需要修改的方法
-
- CtMethod method2 = cc1.getDeclaredMethod("d");
-
- method2.setBody("return null;");
-
- CtMethod method3 = cc1.getDeclaredMethod("e");
-
- method3.setBody("return null;");
-
- //写入保存
-
- cc1.writeFile();
-
- } catch (NotFoundException e) {
-
- e.printStackTrace();
-
- }
-
-
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
更多的使用方法自行百度
5、下面我们学习怎么把class文件打回jar,上面我们执行之后再根目录的包名下面会生成修改后的class文件,覆盖需要修改的文件即可
6、重新打包,jar命令的使用 jar -cvf test.jar com/ .
7、test.jar为打包成jar的名字 ,com为class文件夹,/ . 是将文件夹下面的所有class文件打包进jar
8、我们进入放class的文件夹下,执行上面的命令就会在同级目录下生成目标jar了
是不是很6
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。