使用javassist对已经编译好的class文件进行修改

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

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

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

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

[img]http://dl.iteye.com/upload/attachment/0083/4148/23121653-a7a4-3883-90b0-be58906518a1.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0083/4152/47d81d7d-eee0-3e49-a69d-6cdf06d557c2.jpg[/img]


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

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

[img]http://dl.iteye.com/upload/attachment/0083/4154/7bd1f17f-fcdd-379d-aa32-e37b7d306bbb.jpg[/img]


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

[img]http://dl.iteye.com/upload/attachment/0083/4158/25e09a49-2a3e-39fb-92fc-e5c22a29faef.jpg[/img]


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

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

///入口启动函数

publicstaticvoid main(String[] args) throws Exception {

//这个是得到反编译的池

ClassPool pool = ClassPool.getDefault();

//取得需要反编译的jar文件,设定路径

pool.insertClassPath("E:""crack""chart.ext.jar");

//取得需要反编译修改的文件,注意是完整路径

CtClass cc1 = pool.get("com.objectplanet.chart.a");

try {

//取得需要修改的方法

CtMethod method = cc1.getDeclaredMethod("a");

//插入修改项,我们让他直接返回(注意:根据方法的具体返回值返回,因为这个方法返回值是void,所以直接return;)

method.insertBefore("{if(true) return ;}");

//写入保存

cc1.writeFile();

} catch (NotFoundException e) {

e.printStackTrace();

}

}

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

if (1 != 0)

return;

这个就不会执行绘制了

[img]http://dl.iteye.com/upload/attachment/0083/4160/057d9b77-b6ee-3133-b8d2-1791951a37d3.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0083/4167/5f3988e1-330d-3ab2-9a31-1e38a9416932.jpg[/img]


(6) 把原有的用winrar解压开
[img]http://dl.iteye.com/upload/attachment/0083/4169/f11ccda8-bae4-3b4d-ba94-34e03bc1c57c.jpg[/img]


(7) 把修改的class覆盖原有的class
[img]http://dl.iteye.com/upload/attachment/0083/4171/76d630a4-bc7d-3d13-9ffb-ef28a1e76d4d.jpg[/img]

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

[img]http://dl.iteye.com/upload/attachment/0083/4173/e116949d-fe64-36e5-ac42-040669d3cafb.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/0083/4175/fc5b2d9e-42d6-3d33-97b1-96f8d4798334.jpg[/img]


(10) 把生成的压缩文件chart.ext.zip修改为chart.ext.jar,完工。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值