javassist使用教程(jar破解)

Javassist是一个开源的java字节码操作工具,主要是对已经编译好的class文件进行修改和处理,这里我写了一个简单的说明,复杂的请去看www.javassist.com的官方文档。

首先说明的是我不是不尊重作者的成果,有时候需要给客户选择的时候不可能用户没看就要花钱买,可以先破解了让用户看效果,效果好自然会买的.

1.       首先下载开源的代码,或者直接使用它的jar,开源的代码里有sample,可以构建工程运行。

下载回来的文件结构如下,如果你想构造工程的话,先查看你的windowsclasspath是否引入了javatools.jar,没有的话你需要在工程里引入,这个jarJDKlib目录下面,主要作用是提供JDI的使用。

     

     

2.       Javassist下面有很多例子,包括的方法名字的修改,权限的修改和参数的修改等等,可以自己看,我主要说明一下jar破解方面的。

(1)       首先准备你要破解的jar,我现在要破解的是chart.ext.jar

         


    (2)       先用反编译工具,查看一下你需要修改代码的位置,反编译出来可能有错误,但是类名和方法名一般可以反编译正确,如果jar的加密混淆达到了类名和方法名都混淆掉的话,这个方法就不能用了(一般不会出现这么牛的混淆工具)。

(3)       经过分析反编译的jar文件,我们找到a.class这个类,这个类是在图上绘制版权的,去掉他就可以了(有的jar的授权是时间的,原理差不多,找到判断时间的关键跳转就可以了)

(4)       开始写代码,很简单的几句话

public static void main(String[] args) throws Exception {
         //这个是得到反编译的池
        ClassPool pool = ClassPool.getDefault();
        try {
        	//取得需要反编译的jar文件,设定路径
            pool.insertClassPath("E://crack//chart.ext.jar");
            //取得需要反编译修改的文件,注意是完整路径
            CtClass cc1 = pool.get("com.objectplanet.chart.a");
            //取得需要修改的方法
            CtMethod method = cc1.getDeclaredMethod("a");
           //插入修改项,我们让他直接返回(注意:根据方法的具体返回值返回,因为这个方法返回值是void,所以直接return;)
            method.insertBefore("{if(true) return ;}");
            //写入保存
            cc1.writeFile();
        } catch (NotFoundException e) {
			e.printStackTrace();
		} catch (CannotCompileException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

执行后会在工程下生成一个新的class文件,反编译打开查看,会发现

        if (1 != 0)

            return;

       这个就不会执行绘制了

             
             

(6)                把原有的用winrar解压开

            

(7)        把修改的class覆盖原有的class

           

(8)        winrar把解压出来的重新压缩,主要要选择压缩格式为zip

           

            

10 把生成的压缩文件chart.ext.zip修改为chart.ext.jar,完工。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
高级使用Javassist包括一些高级功能,如修改已有的类、动态生成类、修改类的字节码等。这些功能可以实现一些有趣和复杂的场景。 首先,我们可以使用Javassist来修改已有的类。这可以用于添加、删除或修改类的字段、方法和构造函数。通过获取类的CtClass对象,我们可以使用Javassist提供的API对其进行操作,然后将修改后的字节码重新写回class文件。这在实现日志切面、权限切面等功能时非常有用。 其次,Javassist还可以用于动态生成类。通过调用ClassLoader的defineClass方法,我们可以将由Javassist生成的字节码转换为Class对象,并在运行时加载。这样,我们可以在程序运行时创建新的类,而不需要提前定义它们。这在某些情况下非常有用,比如动态代理、动态生成工厂类等场景。 最后,Javassist还提供了修改类的字节码的能力。通过获取类的CtClass对象,我们可以使用Javassist提供的API对其进行字节码操作,比如修改方法的实现、添加方法的拦截器等。这在实现一些高级的AOP功能时非常有用。 总结来说,Javassist是一个强大的字节码操作工具,可以用于修改已有的类、动态生成类和修改类的字节码。它在实现一些高级的功能时非常有用,比如日志切面、权限切面、动态代理等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [javassist使用指南](https://blog.csdn.net/mChenys/article/details/122901039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值