ASM 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
ASM 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
ASM 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 红薯
适用人群 未知
收录时间 2009-02-25

软件简介

ASM是一个通用的Java字节码操作和分析框架。 它可以用于修改现有类或直接以二进制形式动态生成类。 ASM提供了一些常见的字节码转换和分析算法,可以从中构建自定义复杂转换和代码分析工具。 ASM提供与其他Java字节码框架类似的功能,但专注于性能。 因为它的设计和实现尽可能小而且快,所以它非常适合在动态系统中使用(但当然也可以以静态方式使用,例如在编译器中)。

 

展开阅读全文

评论 (1)

加载中
软件文档404 @红薯 ASM
2014/10/26 11:02
回复
举报
更多评论
发表于大前端专区
2019/03/25 09:29

ASM 7.1 发布

ASM是一个久经考验的框架,包括Spring在内的多个框架都使用ASM作为字节码工具。 7.1 更新如下 用于Java 13的新常量Opcodes.V13 asm.Type中的小优化 检查CheckMethodAdapter.visitLocalVariable中的签名 重构单元测试使用Arrange-Act-Assert模式 弃用 弃用ClassReader.b 弃用ASMifiable和Textifiable(替换为ASMifierSupport和TextifierSupport) 不推荐使用不合适的*将适配器类重新映射到新的asm-deprecated.jar 删除asm.util....

5
16
发表了资讯
2014/03/21 00:00

ASM 5 发布,Java 字节码操纵框架

新特性: 1、支持java8 2、visitMethodInsn(int,String,String,String)方法被标记为 deprecated,用visitMethodInsn(int,String,String,String,boolean) 替代。 Bug fixes: 317111 source debug extension size should not be limeted to 64k 316682 maxLocals not updated in AnalyzerAdapter constructor. 316630 Type verification in CheckAnnotationAdapter. 316545 ASM incorrectly merges Object[] and byte[][] in Sta...

11
28
发表了资讯
2011/11/01 00:00

ASM 4.0 发布,Java 字节码操纵框架

ASM 是一个 Java 字节码操纵框架。它可以直接以二进制形式动态地生成 stub 类或其他代理类,或者在装载时动态地修改类。ASM 提供类似于 BCEL 和 SERP 之类的工具包的功能,但是被设计得更小巧、更快速,这使它适用于实时代码插装。 ASM 4.0 完全支持 Java 7,详细改进内容请看发行说明。

0
10
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
2015/03/16 04:04

ASM

原有的类 Java代码 public class Aop1{ public void doSomething() throws Throwable{ //打我啊,拍我啊! } } 改造后 Java代码 public class Aop1$$Aop extend Aop1{ @Override public void doSomething() throws Throwable{ try { if (_Nut_before(188)) { super.doSomething(); } _Nut_after(188, null); } catch (Exception e) { if(_Nut_Exception(188, e)) throw e; } catch (Throwable e) { if(_Nut_Error(188, e)) throw...

0
0
发表了博客
2012/03/09 16:22

创建ASM实例及ASM数据库

--======================== -- 创建ASM实例及ASM数据库 --======================== 一、ASM相关概念 1.什么是ASM(Auto Storage Management) 简称自动存储管理,是一种用于管理磁盘的工具 能够在多个物理设备之间实现条带化、镜像数据文件、恢复文件等 文件按分配单元AUs(allocation units)平衡分布在磁盘组的所有磁盘中,ASM使用索引技术来跟踪每个AUs的位置 支持联机磁盘的动态增加和减少,当磁盘发生变化后,AUs会自动重新实...

0
0
发表了博客
2019/07/24 09:10

ASM命令

在Oracle 环境下,使用grid帐号执行 运行asmcmd进入asm命令模式,如: [grid@oradb-node1 ~]$ asmcmd ASMCMD> ASMCMD> du //显示指定的ASM目录下ASM文件占用的所有磁盘空间 ASMCMD> ls -ls //列出ASM目录下的内容及其属性、磁盘空间占用 ASMCMD> pwd //查看当前路径 ASMCMD> cd ../DATA //切换目录 ASMCMD> lsct //列出当前ASM客户端的信息 ASMCMD> lsdg //列出所有磁盘组及其属性 ASMCMD> lsof //列出数据文件信息 ASMCMD> ls...

0
0
发表了博客
2015/08/03 01:25

ASM 介绍

引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成...

2
20
发表于服务端专区
2016/06/10 10:11

asm 笔记

# asm 读书笔记 标签(空格分隔): asm 类 --- #####类 编译过后的class结构: * 一部分描述修饰符,名称,超类,接口以及其上的annotation * 每个field为一部分,每部分里面包含属性的修饰符,名称,类型,annotation * 每个方法为一部分,包含构造函数,每部分包含了修饰符,名称,返回值,参数类型以及annotation,也包含方法的实现代码 #####源文件与类文件的不同##### * 一个类文件只描述一个class,源文件可以包含多个,...

0
0
发表了博客
2013/04/16 21:50

[ASM]两个比较有用的ASM工具类

org.objectweb.asm.util.ASMifierClassVisitor:分析类,并生成asm生成该类的代码, 如果自己不想了解具体的asm指令,这个类最有帮助 java -classpath asm-3.3.1.jar;asm-util-3.2.jar org.objectweb.asm.util.ASMifierClassVisitor java.lang.Runnable org.objectweb.asm.util.TraceClassVisitor:这个类是asmifier里用到的一个ClassVisitor,可以帮助自己了解class的结构 java -classpath asm-3.3.1.jar;asm-util-3.2.jar org...

0
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/10/24 17:41

java asm框架如何访问匿名内部类?

java asm框架如何访问匿名内部类?

1
1
发表于大前端专区
2020/07/09 22:14

asm中visitMethodInsn方法动态注入问题

注意:我能够确定我的其他程序是没有问题的,因为这是我从其他地方复制粘贴的代码,并且可以跑通,我的目的是实现自己的动态注入。 当我尝试通过ASM对字节码进行注入时,遇到了以下问题。 在我借助idea的 ASM Bytecode Outline 插件将代码转换后,再对照ASM进行设置。 下图是我想要注入到字节码中的代码: 下面是该代码生成的asm辅助文件: public class cn/test/Temp { // compiled from: Temp.java // access flags ...

2
0
发表于大前端专区
2018/11/10 21:51

内联汇编,是C++标准,还是某些编译器独有的特色?

如_asm asm之类的内联汇编

3
0
2012/12/15 12:46

asm-3.3.1.jar,它是干嘛的?

asm-3.3.1.jar,它是干嘛的?spring依赖它做什么事?期待大侠们的回复

10
0
发表了问答
2016/09/05 20:34

求解gcc编译链接汇编和c++代码找不到引用的问题

汇编代码文件如下: section .bss section .data section .text global _gettsc _gettsc: rdtsc rol rdx,32 or rdx,rax mov rax,rdx ret C/C++代码文件如下: #include <stdio.h> extern unsigned long _gettsc(); int main() {   unsigned long count = _gettsc();   return 0; } 如果c++代码文件命名为.cpp则按照C++去编译链接会报错: nasm -f elf64 -F stabs -Ox standerd.asm -o standerd.asm.o make: Circular standerd....

6
0
发表了问答
2016/09/03 13:45

求解gcc编译c内联汇编标号报错的一个问题

使用gcc编译c语言内联汇编使用-O优化时,是标号部分报错,请问有知道怎么解决的吗? unsigned long strcpy0(char* dst,const char* src) {   __asm__ __volatile__     (      ".intel_syntax noprefix\n"      "POS2:\n"      "lodsb\n"      "stosb\n"      "test al,al\n"      "jnz POS2\n"      :      :      :"rax","rbx"      ); } 报错信息如下: gcc -masm=intel -O3 -c -o test.o test.c test.c: Assembler messages: test.c:7: Error: sym...

3
0
发表了问答
2010/03/29 13:52

使用 ASM 从 .class 文件中提取类的详细信息

ASM 是一个 Java 字节码操纵框架。它可以直接以二进制形式动态地生成 stub 类或其他代理类,或者在装载时动态地修改类。 今天我们提供一个简单例子用来掩饰 ASM 最基本的功能,解析 .class 文件的信息。ASM 提供了一个 ClassReader 类用来解析 class 文件,该类需要一个 ClassVisitor 接口的实例,使用类似事件的模式来触发这个实例。当解析一个类文件时,会严格依照下列顺序调用 ClassVisitor 的方法(请看下面源码): packag...

3
5
发表了问答
2015/12/22 17:03

asm 生成 class 问题

public Map getTextParams() { MideaHashMap localMideaHashMap = new MideaHashMap(); localMideaHashMap.put("mobilePhone", this.mobilePhone); localMideaHashMap.put("telephone", this.telephone); localMideaHashMap.put("qq", this.qq); localMideaHashMap.put("weixin", this.weixin); localMideaHashMap.put("openId", this.openId); localMideaHashMap.put("modelId", this.modelId); localMideaHashMap.put("r1", t...

1
0
发表了问答
2014/09/08 19:55

Java ASM 如何获取字段值和方法返回值

@邸星星 你好,想跟你请教个问题: 在使用ASM的时候,我能获取字段的名称和方法名称,但是就是无法获取字段或方法的返回值。 代码如下: TestBean package test; public class TestBean {   public int in = 9 ;   public int getIn() {     return in;   }   public void setIn(int in) {     this.in = in;   }    } TestVisitor: package test; import java.io.IOException; import org.objectweb.asm.ClassReader; import org.ob...

1
0
发表了问答
2014/10/02 04:09

为什么破解要学win32汇编?

听说破解要学win32汇编,写壳也要用win32汇编?为什么呢?不学不能学破解吗?

14
3
发表了问答
2011/08/15 15:49

动态实时跟踪你的java程序

文章转自:http://www.tbdata.org/archives/1851 之前有写 基于AOP的日志调试 讨论一种跟踪Java程序的方法, 但不是很完美.后来发现了 Btrace , 由于它借助动态字节码注入技术 , 实现优雅且功能强大. 只不过, 用起来总是磕磕绊绊的, 时常为了跟踪某个问题, 却花了大把的时间调试Btrace的脚本. 为此, 我尝试将几种跟踪模式固化成脚本模板, 待用的时候去调整一下正则表达式之类的. 跟踪过程往往是假设与验证的螺旋迭代过程, 反复的...

1
30
发表了问答
2014/07/22 20:39

汇编语言获取dll基地址

这段话运行了10多次得到kernel32都为75cc0000 push eax; mov eax, dword ptr fs:[0x30]; mov eax, [eax + 0x0c]; mov eax, [eax + 0x1c]; mov eax, [eax]; mov eax, [eax + 0x08]; mov addrkernel32, eax; pop eax; 用ida查看kernel32的imagebase得到的却是 7DD60000 请问这是什么原因,是我汇编代码有错误还是因为重定位的关系...

3
1
发表了问答
2013/07/13 10:11

自定义ClassLoader在 Web环境下的问题

尝试通过自定义ClassLoader 配和 ASM实现AOP. package com.hkliang.core.web; public class WebClassLoader extends ClassLoader{    public WebClassLoader(){ super(WebClassLoader.class.getClassLoader()); }    public Class<?> defineClass(String name, byte[] code) throws ClassNotFoundException{ return defineClass(name, code, 0, code.length ); } } 在Servlet中 @Override prot...

6
2
发表了问答
2012/06/30 22:14

关于使用cglib动态代理的问题

我想自己做一套ORM的产品,然后在做某一部分时,因为所有方法都需要调用一个公共方法,因此想使用动态代理,后来选择了CGLib。但在代理时出现了这样一个问题。 net.sf.cglib.core.CodeGenerationException: java.lang.NoSuchMethodException-->org.zhc.jdbc.BaseDAO$$EnhancerByCGLIB$$724bfabe.<init>(com.mysql.jdbc.JDBC4Connection)   at net.sf.cglib.core.ReflectUtils.getConstructor(ReflectUtils.java:248)   at net.sf....

11
0
发表了问答
2011/09/26 20:42

Java 字节码工具 ASM 在 web services 开发中的应用

在基于 JAX-WS 标准的 web services 的开发中,不少实际场景都是希望采用自底向上的开发方式, 即基于已有的 Java bean 来创建 web services 。WebSphere Application Server ( 以下简称 WAS ) 提供了命令行的工具 wsgen 和相对应的 Ant task 来支持这种开发过程,而且这两个工具比较适合大型项目的自动化构建。 这两个工具的使用前提是 Java bean 中事先添加有 web services 的 Annotation 标注,而在现有的业务系统中,class...

2
11
发表了问答
2010/03/14 22:42

CGLib的性能看来比较差

CGLib (Code Generation Library) 是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。 下面是一段典型的用 CGLib 扩展指定类的方法: @SuppressWarnings("unchecked") private static <T> T createProxy(Class<T> targetClass){ Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(targetClass); enhancer.setCa...

11
5
发表了问答
2012/07/15 21:07

asm 包从哪下载啊

9
0
发表了问答
2010/03/13 21:25

一个小例子演示 cglib 动态代理库

cglib是个好东东,说牛刀,是因为它很强大,用途很广。小试,是因为仅仅用它做了个类似hello world的小程序。 cglib是Spring、Hibernate依赖的核心包,但是cglib还算不上最底层的,因为它是在asm包之上做了封装,以增强易用 性。据了解,Hibernate3.2已经不再依赖cglib了,而直接依赖asm。这些都不影响cglib的强大功能。 很希望将spring、JDK、cglib的动态代理三者放到一起做个比较(实际上,spring、jdk的代理已经比较过了),...

5
6
发表了问答
2012/01/04 20:46

使用 ASM 实现 Java 语言的“多重继承”

简介: 尽管大部分情况下我们并不需要多重继承,但总有一些情况下我们不得不做出多重继承的考虑。但又由于 Java 语言本身不支持多重继承,这就会带来问题。本文试图使用 ASM 来解决这一问题。 问题的提出 在大部分情况下,需要多重继承往往意味着糟糕的设计。但在处理一些遗留项目的时候,多重继承可能是我们能做出的选择中代价最小的。由于 Java 语言本身不支持多重继承,这常常会给我们带来麻烦,最后的结果可能就是大量的重复...

2
12
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
155 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部