`
mazzystar
  • 浏览: 27333 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字节码工具asm使用的一个例子

阅读更多
ASM 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

初识字节码,现学现卖。
示例中演示的功能:

  • 生成被代理类的子类,并重写所有方法(除java.lang.Object类定义的方法),增加before和after拦截。
  • 重新定义被代理类的所有属性(不包括属性的赋值)。
  • 把生成的class文件保存到硬盘中。
  • 从内存中加载新生成的class。


jdk自带的代理(InvocationHandler)的不足:

  • jdk只能代理接口(被代理的类必须实现至少一个接口)。
  • jdk提供的代理方法,不能拦截同一类中方法的调用。eg.A.method1(){this.method2();}此时method2将不会被拦截。
  • asm_demo.zip (204.3 KB)
  • 描述: asm的实现类
  • 下载次数: 448
分享到:
评论

相关推荐

    java字节码框架ASM操作字节码的方法浅析

    通过深入理解字节码和ASM的使用,开发者可以创建自己的字节码工具,实现代码增强、性能优化或安全控制等多种目标。在实际项目中,ASM常被用于AOP框架(如AspectJ)、代理生成、代码混淆等领域。

    java字节码框架ASM的深入学习

    以下是一个简单的示例,展示如何使用ASM生成一个新的类的字节码: ```java import org.objectweb.asm.*; public class GeneratorClass { public static void main(String[] args) throws IOException { Class...

    ASM插桩在Android项目中的应用

    ASM是一个Java字节码操控和分析框架,它允许动态生成类或修改已有的类,尤其适用于运行时代码增强和静态代码插桩。本文将深入探讨ASM如何在Android项目中发挥作用,以及如何通过ASMInjectTest进行实践。 首先,了解...

    初学asm的简单例子

    下面以一个简单的例子说明汇编源程序的上机过程。 假定要在显示器显示如下一行信息: I am a student! 那么,其汇编源程序的过程如下: STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS DATA SEGM0ENT BUF DB ...

    asm.rar_asm d3d8例子

    总的来说,这个"asm.rar_asm d3d8例子"压缩包提供了一个学习和实践ASM与Direct3D 8结合使用的全面资源,不仅包含了ASM开发所需的工具和库,还有可能附带了示例代码和教程,对于想要深入理解底层图形编程的开发者来说...

    10 - ASM使用ClassWrite生成类 - 简书1

    ASM是一个强大的Java字节码操控和分析框架,它可以直接生成和修改Java类的字节码。在提供的代码示例中,我们看到如何使用ASM库来动态生成一个名为`HelloWorld`的类。以下是对该过程的详细解释: 1. **创建Class...

    08 - ASM使用ClassWrite生成接口 - 简书1

    ASM是一个强大的Java字节码操控和分析框架,它可以直接生成和修改Java类和接口的字节码。在本文中,我们将深入探讨如何使用ASM库中的`ClassWriter`类来生成接口。`ClassWriter`是ASM提供的一种用于创建字节码表示的...

    初探ASM

    ASM是一个Java字节码操控和分析框架,它可以直接生成和修改Java类和.dex文件。这个强大的工具广泛应用于动态代码生成、代理、混淆、性能优化等领域。ASM库的设计目标是小且高效,使得它成为Java字节码级别的编程的...

    09 - ASM使用ClassWrite生成接口+字段+方法 - 简书1

    ASM是一个强大的Java字节码操控和分析框架,它允许动态生成类或者增强已有类的功能。在本示例中,我们看到如何使用ASM的`ClassWriter`来生成一个接口及其相关的字段和方法。以下是对该代码的详细解释: 1. **创建`...

    AOP 的利器 ASM 3.0

    - 首先,我们需要使用ASM创建一个类访问器,该访问器将遍历Account类的字节码并对其进行修改。 - 接着,在遍历过程中,我们将在`operation`方法的前后添加对`SecurityChecker.checkSecurity()`的调用。 4. **实现...

    java源码剖析-asm:深入分析源代码和演示,Java字节码操作和分析框架

    ASM 是一个强大的 Java 字节码操作框架,对于想要深入理解 Java 类的内部工作机制,或者需要在运行时动态生成和修改类的开发者来说,是一个不可或缺的工具。通过学习和使用 ASM,开发者可以提升对 Java 底层机制的...

    asm bytecode

    - **JikesBT**:IBM开发的字节码工具包。 - **JOIE**:杜克大学的研究项目。 #### 应用字节码增强技术的产品 许多商业产品和服务都利用了字节码增强技术: - **Wily Technology**的Introscope:用于性能监控。 - ...

    asm-debug-all-3.2.jar.zip

    ASM是一个Java字节码操控和分析框架,主要用于动态生成类或者增强已有类的功能。这个"all"可能指的是包含了ASM的所有模块,包括核心库、分析器、类生成器等。 在描述中提到了"asm,debug,all,3.2,jar.zip包下载,依赖...

    javaasm源码-Compiler:使用Java和ASM代码生成框架,为新语言开发了编译器,该编译器将新语言的源代码转换为Java字节码

    `javaasm源码-Compiler`项目是一个使用Java和ASM库来构建编译器的例子,这个编译器可以将一种新的编程语言的源代码转化为Java字节码,从而可以在Java虚拟机(JVM)上运行。 1. **ASM框架介绍** ASM是一个低级别的...

    bytebuddy 字节码增强 创建注解

    ByteBuddy是一个强大的字节码库,它允许开发者在不使用Java代理(Java Proxy)或者ASM等底层字节码库的情况下,便捷地创建和修改Java类与接口。本资源主要关注如何使用ByteBuddy来创建和处理注解,这对于理解和实现...

    18 - MethodVisitor创建对象 - 简书1

    在Java字节码操作库ASM中,`MethodVisitor`是一个关键组件,用于创建和访问Java方法的字节码。在给定的代码示例中,我们看到如何使用ASM来动态生成一个名为`HelloWorld`的类,其中包含一个名为`test`的方法,该方法...

    W32asmW32asmW32asm

    【标题】"W32asmW32asmW32asm" 可能是指一个与W32汇编语言相关的项目或教程,因为"W32asm"通常指的是针对Windows 32位系统的汇编语言编译器或者相关工具。汇编语言是一种底层编程语言,直接对应计算机的机器指令,对...

    简单ASM示例

    总的来说,"简单ASM示例"是一个很好的起点,通过实践这些例子,你可以逐步掌握ASM的基本语法和编程思想。同时,建议配合相关的教材或在线资源,深入学习汇编语言与计算机体系结构的关系,以便更好地理解和利用这种...

    16 - MethodVisitor生成构造方法 - 简书1

    在Java世界中,ASM是一个强大的字节码操纵和分析框架,它可以用来动态生成类或者增强已有类的功能。本文主要探讨如何使用ASM库中的`MethodVisitor`来生成构造方法。构造方法在字节码中通常表示为`<init>`,它是实例...

    动态代理和cglib例子

    - CGLIB通过ASM库(一个Java字节码操控和分析框架)来生成字节码,动态创建一个目标类的子类。 - 在子类中,CGLIB会重写目标类的所有非final方法,添加方法拦截器(MethodInterceptor)。 - 当调用子类的方法时,...

Global site tag (gtag.js) - Google Analytics