`

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

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

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

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

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





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

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




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



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

       这个就不会执行绘制了





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



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


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







(10) 把生成的压缩文件chart.ext.zip修改为chart.ext.jar,完工。
  • 大小: 85.2 KB
  • 大小: 101.1 KB
  • 大小: 74.3 KB
  • 大小: 112 KB
  • 大小: 63.7 KB
  • 大小: 67.5 KB
  • 大小: 70.2 KB
  • 大小: 89 KB
  • 大小: 70.5 KB
  • 大小: 51.3 KB
分享到:
评论

相关推荐

    使用Javassist对.class文件进行修改.doc

    Javassist 提供了一套 API,使得开发者可以轻松地对 `.class` 文件进行解析、修改和生成,即使没有原始的源代码。 在给定的例子中,展示了如何使用 Javassist 修改已有的 `.class` 文件中的方法。以下是一些关键...

    借助jclasslib与javassist修改java class字节码

    在软件开发过程中,有时我们可能面临一种情况:即需要对已经编译好的`.class`文件进行修改,但手中并没有对应的源代码。这种情况下,我们可以借助一些工具来实现对`.class`文件的修改,例如`jclasslib`和`javassist`...

    java 反编译工具 jboss-javassist

    通过这个工具,开发者无需重新编译源代码就能对Java类进行修改和增强,这对于理解和调试已部署的软件或者创建元编程应用非常有用。 Javassist主要提供了以下功能: 1. **字节码生成**:Javassist可以动态生成类的...

    通过自定义Gradle插件修改编译后的class文件

    下面是一个简单的自定义Gradle插件示例,展示了如何使用ByteBuddy修改编译后的class文件: 1. 创建一个新的Gradle插件项目,包含以下目录结构: ``` my-plugin/ ├── src/main/groovy │ └── ...

    jclasslib反编译工具包,修改class文件

    总的来说,jclasslib是一款强大的Java字节码分析工具,它使得开发者能够深入到程序运行的本质,对Java Class文件进行探索和修改,从而提升代码的优化能力和问题解决效率。无论是初学者还是经验丰富的开发者,...

    javassistDemo.zip

    - 保存或加载修改:修改完成后,可以使用`toClass()`方法将CtClass对象转换回实际的Java类,或者将其保存为新的.class文件。 这个"javassistDemo.zip"的示例可能涵盖了这些基本操作,并提供了具体的代码示例,帮助...

    修改.class文件.zip

    总结来说,修改.class文件涉及到使用如jclasslib这样的工具进行分析,以及编写Java程序利用javassist等库进行字节码级别的修改。这个过程需要对Java虚拟机的工作原理、字节码表示以及反射有充分的理解。务必谨慎操作...

    javassist+jd-gui

    Java编程语言以其跨平台性和强大的库支持而广受欢迎,但有时候开发者可能需要在程序已经编译后对字节码进行修改。在这种情况下,`javassist` 和 `jd-gui` 这两个工具就显得尤为重要。 `javassist` 是一个开源库,...

    Java下的Class代码查看器+修改器

    Java下的Class代码查看器与修改器是用于深入理解与操作Java字节码的重要工具,它们可以帮助开发者查看并可能修改已编译的Java类文件(即.class文件),这对于调试、逆向工程、性能优化以及理解Java运行时机制具有...

    jboss-javassist和JByteMode整合包

    与Javassist不同,JByteMode专注于对字节码进行读取、分析和反编译,尤其适用于查看和修改已打包的.jar文件中的.class文件。其特点包括: 1. 能够将字节码反编译为可读的Java源代码。 2. 提供了修改已编译类的方法,...

    Javassist学习手册

    一旦使用 `writeFile()`、`toClass()` 或 `toBytecode()` 方法将 `CtClass` 对象转化为类文件后,该对象就会被冻结,无法再进行任何修改。这主要是为了避免对已加载到 JVM 中的类进行非法修改。 - **解冻**: 通过...

    javassist demo

    Javaassist是一个开源库,它允许在运行时对Java类进行操作和修改。这个库在许多领域都有应用,比如动态代理、AOP(面向切面编程)框架、代码生成和测试等。`javassist demo`是关于如何使用Javaassist的一个实例展示...

    javassist-3.18.0-GA

    4. **使用javassist修改class文件.txt**: 这个文件可能是一个示例或教程,解释了如何利用 Javaassist 修改已存在的 `.class` 文件。通过读取这个文件,开发者可以学习到如何在运行时改变类的行为,例如添加新的...

    java解析class文件

    Class文件是Java编译器将源代码编译后的结果,包含了类的结构信息、方法定义、常量池等关键数据。理解并能解析Class文件,对于进行JVM优化、字节码分析、动态代理、插桩等高级技术至关重要。 首先,Class文件是以二...

    修改javaclass工具包

    在这种情况下,如果需要对已有的`.class`文件进行修改,传统的通过修改源代码并重新编译的方式就行不通了。这时,我们就需要借助一些专门的工具来对`.class`文件进行反编译、修改和再编译。标题为“修改javaclass...

    javassist-3.15.0-GA

    - **字节码操作**:Javaassist通过字节码操作实现对类的修改,它可以解析.class文件,并允许用户以Java语法修改字节码。 2. **使用场景**: - **AOP(面向切面编程)**:在不修改源代码的情况下,插入切面代码,...

    Javassist入门手册

    Javassist是一款用于操作Java字节码的类库,它允许开发者在运行时动态修改类的结构和行为,其核心功能是读取、修改和保存Java的.class文件,也即字节码文件。.class文件是一种二进制文件,每一个文件代表一个Java类...

    javassist.jar

    Javassist version 3,2019年最新版本的javasssit工具,亲测可用,可以直接修改class文件。不需要反编译

    javassist-3.11

    2. **字节码解析**:Javassist能够解析.class文件,并将其转换为可操作的CtClass对象。这使得开发者可以在运行时对类进行分析和修改,而无需重新编译源代码。例如,你可以使用`ClassPool.getClass()`来获取已加载类...

    JVM之用Java解析class文件共10页.pdf.zi

    我们主要关注的是标题所提及的"JVM之用Java解析class文件"这一主题,这涉及到Java程序编译后的二进制表示以及JVM的类加载机制。 首先,让我们了解class文件的结构。一个Java源文件被编译后会生成对应的class文件,...

Global site tag (gtag.js) - Google Analytics