查看及修改jar之JByteMod和javassist的使用

最近很多同学问我,JByteMod和javassist是怎么用的呐
我今天就来给大家梳理一下他们的使用方法吧
一、JByteMod
查看jar代码的工具,很多时候我们是拿不到源码的,想看jar的逻辑代码就需要用到JByteMod

下载链接:https://download.csdn.net/download/qq_42834405/12994116
使用方法:
1.cmd中输入java -jar JByteMod-1.6.1.jar
在这里插入图片描述
2.会出来这样的页面,点击file 点击load,选择你的jar在这里插入图片描述
3.就能看到代码了
在这里插入图片描述
二、javassist
1.Javassist是一个开源的分析、编辑和创建Java字节码的类库。
2.demo下载链接
https://download.csdn.net/download/qq_42834405/12965646
3.使用方法
将javassist.jar加入工程里面
在这里插入图片描述
4.代码,全部贴出来了,可以直接使用

 public static void main(String[] args) {
        //方法一,方法名唯一适用
       /* try {
            ClassPool.getDefault().insertClassPath("d:\\test\\aspose.pdf-17.8.jar");
            CtClass License =ClassPool.getDefault().getCtClass("com.aspose.pdf.z123");
            CtMethod a = License.getDeclaredMethod("m1");
            System.out.println(a);
            a.setBody("{return null;}");
            License.writeFile();
        } catch (NotFoundException | CannotCompileException | IOException e) {
            e.printStackTrace();
        }*/


        //方法二,适用于有同名不同参方法的修改
        try {
            ClassPool.getDefault().insertClassPath("d:\\test\\aspose-cells-19.2.jar");//需要修改的jar
            CtClass c2 = ClassPool.getDefault().getCtClass("com.aspose.cells.License");//jar中需要修改的类
            CtMethod[] ms = c2.getDeclaredMethods();//获取类中的方法
            for (CtMethod c : ms) {
                CtClass[] ps = c.getParameterTypes();

                //类中的方法名字为a(需要修改的方法,方法的参数有2个,都是string类型)
                if (c.getName().equals("a") && ps.length == 2 &&
                        ps[0].getName().equals("java.lang.String") &&
                        ps[1].getName().equals("java.lang.String")) {
                    //将方法修改
                    String aaa = "{return true;}";
                    //设置该方法
                    c.setBody(aaa);
                }
            }
            //写到类里面
            c2.writeFile();
            //运行之后去com里面获取该类,替换到原jar里面即可
        } catch (NotFoundException | CannotCompileException | IOException e) {
            e.printStackTrace();
        }

    }

5.去项目路径com里面找到生成的类
在这里插入图片描述

6.用压缩包方法打开你自己要修改的jar,将生成的类替换到jar里面即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值