`
wangjavablog
  • 浏览: 23381 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

javaassist 的用处

阅读更多

      一直有个想法:破解软件,让好用的商业软件为我所用。破解java软件,其实就是让将软件中的验证方法失效,让check方法返回true,直接暴力破解。正好javaassist为我们提供了修改class文件的方法。

 

import java.lang.reflect.Method;

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.CtNewMethod;
import javassist.NotFoundException;

public class B {
	public static void main(String[] args) throws Exception {
		ClassPool pool = ClassPool.getDefault();

		 CtClass cc = pool.get("sample.A");
		 A test=new A();
		 Class c=test.getClass();
		 Method []method=c.getDeclaredMethods();
		 for(int i=0;i<method.length;i++){
		  System.out.println(method[i]);
		 }
		 try {
		     cc.getDeclaredMethod("g");
		     System.out.println("g() is already defined in sample.Test.");
		 }
		 catch (NotFoundException e) {
		     /* getDeclaredMethod() throws an exception if g()
		      * is not defined in sample.Test.
		      */
		     CtMethod fMethod = cc.getDeclaredMethod("method");
		     CtMethod gMethod = CtNewMethod.copy(fMethod, "g", cc, null);
		     cc.addMethod(gMethod);
		     cc.writeFile(""); // update the class file
		     CtMethod []methods=cc.getDeclaredMethods();
		     for(int i=0;i<methods.length;i++){
				  System.out.println(methods[i]);
		     }
		     System.out.println("g() was added.");
		 }
	}
	    
}

 A是一个有method方法的。通过javaassist我们可以修改class文件,做任何我们想做的事。

分享到:
评论
1 楼 suifeng 2010-04-20  

相关推荐

    javassist-3.7.ga.jar

    Javaassist 是一个强大的 Java 字节码操作库,它允许开发者在运行时动态修改或创建类。这个库在软件开发中的主要用途是实现元编程,即在程序运行时修改程序的行为。`javassist-3.7.ga.jar` 文件是 Javaassist 库的一...

    javassist-3.18.2-GA.jar

    Javaassist 是一个强大的 Java 字节码操作库,它允许开发者在运行时动态修改或创建类。这个库在软件开发中的主要用途是实现元编程,即在程序运行时修改程序的行为。`javassist-3.18.2-GA.jar` 是 Javaassist 的一个...

    Visual Assist.zip

    Visual Assist VC的软件支持Microsoft Visual Studio 2003-2017,C/C++,C#,ASP,VisualBasic,Java和HTML等语言,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误...

    hibernate里面常用jar包

    2. **javassist-x.x.x.GA.jar**:Javaassist是一个开源的Java字节码操作库,Hibernate使用它来动态地修改类的字节码,实现运行时的透明持久化。例如,Hibernate可以使用Javaassist生成代理类来添加一些持久化相关的...

    Whole Tomato Visual Assist X v10.6.1842.0 原程序 + Patch

    本文将详细介绍这个版本的特性以及配套的Patch文件的用途。 首先,Visual Assist X 是一个强大的源代码辅助工具,它极大地提升了Visual Studio的代码编写体验。它支持多种编程语言,包括C++, C#, VB.NET, ASP.NET, ...

    Eclpise-java开发环境搭建(JDK+Eclipse+VE)

    本文主要讲解如何搭建一个基于Eclipse的Java开发环境,包括安装JDK、配置环境变量、安装Eclipse以及设置编码自动提示,并介绍了Eclipse VE的安装和用途。 首先,我们需要安装Java Development Kit(JDK)。JDK是...

    jdk-7u6-apidocs

    2. 链接API文档:在“Window” &gt; “Preferences” &gt; “Java” &gt; “Editor” &gt; “Content Assist” &gt; “Favorites”中,点击“Add...”,选择“Javadoc”,然后指定`jdk-7u6-apidocs`目录作为API文档的路径。...

    eclipse快捷键大全

    用途:用于打开类型(类、接口等),可以通过输入类名来快速打开对应的Java文件。这个快捷键对于大型项目非常有用,因为可以快速定位到特定的类。 **3. Ctrl+Shift+R (Open Resource)** 用途:类似于Ctrl+Shift+T...

    ssm整合中jar包作用介绍.docx

    - **javassist.jar**:JavaAssist是一个用于在运行时修改类和创建新类的库。 - **ant-launcher.jar**:Apache Ant的一部分,用于执行Ant任务。 - **jaas.jar**:Java Authentication and Authorization Service...

    eclipse快捷键eclipse快捷键eclipse快捷键

    用途:此快捷键用于提供内容辅助。当你在编写代码时,如果你不知道某个方法或者属性的具体拼写,或者需要快速获取某个类的方法列表,按下 `ALT+ /` 可以帮助你完成自动补全或列出当前上下文中可用的所有选项。这对于...

    Eclipse中文教程

    - **用途:** 例如,Java开发视景会显示与Java开发相关的编辑器和视图。 **2.7 重新排列视图和编辑器** - **操作方法:** 用户可以通过拖拽的方式调整视图和编辑器的位置。 - **优点:** 灵活地调整界面布局,提高...

    eclipse常用快捷键

    1. **ALT+/ (Content Assist)** - 用途:此快捷键用于自动完成代码或提供当前上下文中的代码建议。 - 描述:当你在编写代码时,如果忘记了某个方法的名字或者类的属性等,只需输入一部分内容后按下ALT+/,Eclipse...

    hibernateJAR包

    - **javassist.jar**:Javaassist是一个用于修改正在运行的Java类的库。 - **ant-lanuncher.jar**:Apache Ant的启动器。 - **jboss-jmx.jar**:JBoss JMX管理服务。 - **xerces.jar**:一个高性能、全功能的XML解析...

    常用jar包说明

    - **javassist.jar**:JavaAssist是一个用于生成和修改Java字节码的框架,用于实现AOP等功能。 - **jta.jar**:Java Transaction API,用于实现分布式事务。 - **mysql-connector-java.jar**:MySQL的官方JDBC驱动,...

    myeclipse-eclipse快捷键大全.txt

    ALT+/ (Content Assist)** - **用途**: 在编辑代码时提供内容辅助,如自动完成方法名、变量名等。 - **应用场景**: 编写代码时快速补全代码片段,提高编码效率。 **2. Ctrl+O (Quick Outline)** - **用途**: 快速...

    Eclipse里设置javadoc.pdf

    Javadoc是Java语言的一种规范,用于生成关于类、方法和字段的文档,它使用特殊的注释来描述代码的用途和功能。以下是详细的步骤来在Eclipse中设置Javadoc: 1. **检查已安装的JREs** 在Eclipse中,首先需要确认...

    eclipse中文教程

    这得益于其灵活的插件系统,开发者可以根据自己的需求安装不同的插件来增强Eclipse的功能,使其成为一个真正的多用途开发平台。 #### Eclipse平台架构详解 Eclipse平台主要由工作区(workspace)、工作台...

    Eclipse 中文教程

    - **Code Assist**:提供更多类型的代码辅助功能,如方法提示等。 **4.4 执行Java程序** - **运行配置**:配置Java程序的运行参数。 - **运行方式**:支持直接运行或调试运行。 **4.5 Java实时运算簿页面(Java ...

Global site tag (gtag.js) - Google Analytics