<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,可以构建工程运行。
下载回来的文件结构如下,如果你想构造工程的话,先查看你的windows的classpath是否引入了java的tools.jar,没有的话你需要在工程里引入,这个jar在JDK的lib目录下面,主要作用是提供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,完工。
分享到:
相关推荐
总结来说,"javassistDemo.zip"是一个实践教程,通过实例演示了如何使用Javaassist库来动态修改Java类,包括插入新的方法和改变方法的实现。这对于理解和掌握Java运行时代码修改技术,尤其是对于那些需要在运行时...
在使用Javassist时,开发者通常会先引入对应的jar包,例如压缩包中的"jbosss-javassist-javassist-dfd0733"。这个文件很可能是Javassist的一个特定版本,包含必要的类库和可能的示例代码。要开始使用,可以按照以下...
11. **javassist.jar**:在某些Spring AOP实现中,如CGLIB代理,需要这个库来进行动态类生成。 为了成功运行Spring MVC教程中的实例,确保所有这些jar文件都被正确地导入并包含在类路径中至关重要。这不仅使我们...
初学者可以从官方文档、教程和示例代码开始,逐步熟悉其API和使用方式。理解如何创建、修改和加载类是关键,同时注意版本间的兼容性和性能差异。 总的来说,Javaassist是Java开发中一个强大的工具,尤其在需要动态...
3. **javassist.jar**: 这是 Javaassist 库的主要可执行文件,包含了所有的类和方法,可以直接引入到Java项目中使用。开发者可以通过`import javassist.*`来访问其提供的功能。 4. **使用javassist修改class文件....
6. **其他依赖的jar包**:Struts2运行还需要一些其他的库,如freemarker或velocity用于模板引擎,javassist用于动态类生成,log4j或slf4j用于日志记录等。 引入Struts2的jar包有多种方式: - **Eclipse/IDEA等集成...
2. `javassist-3.20.0-GA.jar`:Javassist是一个开源的Java字节码操作库,Thymeleaf使用它来处理和修改类在运行时的行为,例如动态生成模板处理类。 3. `log4j-1.2.15.jar`:Log4j是Apache的一个日志框架,提供了一...
8. **其他依赖库**:如log4j.jar用于日志记录,commons-lang3.jar、commons-logging.jar等Apache Commons库,还有javassist.jar用于动态字节码操作。 在实际开发中,你可能还需要其他的jar包来支持额外的功能,如...
本例子通過學習“002_尚学堂马士兵_Java视频...antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、hibernate3.jar、javassist-3.9.0.GA.jar、jta-1.1.jar、slf4j-api-1.5.8.jar、slf4j-nop-1.5.8.jar。
8. **javassist.jar**:动态字节码操作库,Struts2的拦截器机制在某些情况下会用到。 9. **commons-lang3.jar**、`commons-logging.jar`和`log4j.jar`:这些是常见的日志和工具库,用于Struts2的日志输出和其他辅助...
这个 "javassist-3.15.0-GA.jar" 文件就是一个 JAR 包,包含了 Javaassist 库的所有类和方法,使得开发者可以直接在他们的项目中引用和使用。 Javaassist 提供了一套API,可以方便地对字节码进行操作。这些操作包括...
《EJB3.0实例子教程》jar包1包含了多个重要的Java企业级开发库,这些库主要用于实现EJB(Enterprise JavaBeans)3.0规范,该规范是Java平台企业版(Java EE)的一部分,用于构建分布式、事务处理、安全性和可伸缩的...
本教程将详细阐述如何搭建一个使用Hibernate的项目环境,以及需要包含的jar包。 首先,理解Hibernate的核心功能是关键。Hibernate作为一个对象关系映射(ORM)工具,它允许开发者使用面向对象的方式来处理数据库,...
这通常涉及到`javassist.jar`或`cglib-nodep.jar`,取决于你选择的代理实现。 6. **DOM4J或JAXB**:用于XML解析,`dom4j.jar`用于处理Hibernate的配置文件和映射文件,而`jaxb-api.jar`和`jaxb-impl.jar`可能用于...
javassist-3.7.ga.jar ognl-3.0.jar struts2-core-2.2.1.1.jar xwork-core-2.2.1.1.jar 共8个包,将其复制到/Struts2/WebRoot/WEB-INF/lib下面 方法二:(不用复制,导入法) (1).右击项目名称Struts2-->Build ...
javassist-3.24.0-GA.jar javax.activation-api-1.2.0.jar javax.persistence-api-2.2.jar jaxb-api-2.3.1.jar jaxb-runtime-2.3.1.jar jboss-logging-3.3.2.Final.jar jboss-transaction-api_1.2_spec-1.1.1.Final....
4. `javassist.jar`:Hibernate使用Javassist库动态修改字节码,实现运行时的类增强,比如为实体类添加getter和setter方法,实现懒加载等特性。 在实际项目中,还需要包含`jta.jar`(Java Transaction API)以支持...
- `javassist.jar`:动态类生成库,Struts2使用它来处理动态方法调用。 3. **Struts2的生命周期**: - 用户发起HTTP请求。 - 请求被Struts2的Filter(通常名为`StrutsPrepareAndExecuteFilter`)截获。 - ...
6. **javassist.jar**:Hibernate 使用 javassist 库来动态修改类的字节码,实现运行时的类增强。 7. **dom4j.jar** 和 **xml-apis.jar**:用于 XML 解析和操作,Hibernate 使用它们来处理映射文件。 8. **slf4j-...