javassist使用教程(jar破解)

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 12"> <meta name="Originator" content="Microsoft Word 12"> <link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cphoenix%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> <link rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Cphoenix%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso"> <!--[if !mso]> <style> v":* {behavior:url(#default#VML);} o":* {behavior:url(#default#VML);} w":* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Cphoenix%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> <link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Cphoenix%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"> <!--[if gte mso 9]><xml> Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 </xml><![endif]--><!--[if gte mso 9]><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:""@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal { mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; font-family:"Times New Roman","serif";} a:link, span.MsoHyperlink { color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed { color:purple; text-decoration:underline; text-underline:single;} .MsoChpDefault { font-size:10.0pt; mso-ascii-font-family:"Times New Roman"; mso-hansi-font-family:"Times New Roman";} /* Page Definitions */ @page {} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {} @list l0:level1 { mso-level-text:""(%1")"; margin-left:57.0pt; text-indent:-36.0pt;} @list l1 {} @list l1:level1 { margin-left:48.0pt; text-indent:-37.5pt;} @list l2 {} @list l2:level1 { margin-left:18.0pt; text-indent:-18.0pt;} @list l2:level2 { margin-left:57.0pt; text-indent:-36.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable { mso-style-parent:""; font-size:10.0pt; font-family:"Times New Roman","serif";} </style> <![endif]-->

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

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

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

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

  


<!--[if gte vml 1]> <![endif]-->

<!--[if gte vml 1]> <![endif]-->

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

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

<!--[if gte vml 1]> <![endif]-->

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

      <!--[if gte vml 1]> <![endif]-->

(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;

       这个就不会执行绘制了



<!--[if gte vml 1]> <![endif]-->

<!--[if gte vml 1]> <![endif]-->

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

<!--[if gte vml 1]> <![endif]-->

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

<!--[if gte vml 1]> <![endif]-->

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

<!--[if gte vml 1]> <![endif]-->

<!--[if gte vml 1]> <![endif]-->

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值