类 AsmUtils
java.lang.Object
com.alibaba.bytekit.utils.AsmUtils
- 作者:
- hengyunabc
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static voidaddField(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, com.alibaba.deps.org.objectweb.asm.tree.FieldNode fieldNode) static voidaddMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static StringclassName(byte[] classBytes) static booleancontainsMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String owner, String name) static com.alibaba.deps.org.objectweb.asm.tree.ClassNodecopy(com.alibaba.deps.org.objectweb.asm.tree.ClassNode source) static com.alibaba.deps.org.objectweb.asm.tree.MethodNodecopy(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source) static int如果成功获取,返回大于 0 的值static com.alibaba.deps.org.objectweb.asm.tree.FieldNodestatic com.alibaba.deps.org.objectweb.asm.tree.MethodNodefindFirstMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name) static com.alibaba.deps.org.objectweb.asm.tree.AbstractInsnNodefindInitConstructorInstruction(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static com.alibaba.deps.org.objectweb.asm.tree.MethodNodefindMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, com.alibaba.deps.org.objectweb.asm.tree.MethodNode target) static com.alibaba.deps.org.objectweb.asm.tree.MethodNodefindMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name, String desc) static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> findMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String owner, String name) static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> findMethodInsnNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String owner, String name, String desc) static List<com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode> findMethodInsnNodeWithPrefix(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode, String prefix) static List<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> findMethods(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name) static booleanfitCurrentJvmMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) 检查当前的字节码版本是否适配static voidfixConstructorExceptionTable(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static voidfixMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) static intgetMajorVersion(int version) Java ClassFile versions (the minor version is stored in the 16 most significant bits, and the major version in the 16 least significant bits).String[]getParameterNames(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static StringinternalClassName(Class<?> clazz) static StringinternalClassName(String className) static booleanisAbstract(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static booleanisConstructor(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static booleanisEnhancerByCGLIB(String className) static booleanisNative(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static booleanisStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode) static booleanisStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static com.alibaba.deps.org.objectweb.asm.tree.ClassNodestatic StringmethodDeclaration(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode) static StringmethodDeclaration(com.alibaba.deps.org.objectweb.asm.Type owner, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static com.alibaba.deps.org.objectweb.asm.tree.MethodNodenewMethodNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source) static com.alibaba.deps.org.objectweb.asm.tree.ClassNoderemoveJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) static com.alibaba.deps.org.objectweb.asm.tree.MethodNoderemoveJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.MethodNode subjectMethod) static voidremoveLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) static com.alibaba.deps.org.objectweb.asm.tree.MethodNoderemoveLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static byte[]renameClass(byte[] classBytes, String newClassName) static com.alibaba.deps.org.objectweb.asm.tree.ClassNoderenameClass(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, String newClassName) static voidreplaceMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static intsetMajorVersion(int version, int majorVersion) 替换掉完整 version里的 major versionstatic StringtoASMCode(byte[] bytecode) static StringtoASMCode(byte[] bytecode, boolean debug) static StringtoASMCode(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) static StringtoASMCode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) static byte[]toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) static byte[]toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, ClassLoader classLoader, com.alibaba.deps.org.objectweb.asm.ClassReader classReader) Generate class bytes from class node.static com.alibaba.deps.org.objectweb.asm.tree.ClassNodetoClassNode(byte[] classBytes) static com.alibaba.deps.org.objectweb.asm.ClassReadertoClassNode(byte[] classBytes, com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) static StringuniqueNameForMethod(String className, String methodName, String desc) static voidupdateMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode from, com.alibaba.deps.org.objectweb.asm.tree.ClassNode to) 比如两份字节码的 major version,如果 from 的比 to 的要高,则设置 to 的 major version 为 from的 major version
-
构造器详细资料
-
AsmUtils
public AsmUtils()
-
-
方法详细资料
-
loadClass
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode loadClass(Class<?> clazz) throws IOException - 抛出:
IOException
-
toClassNode
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode toClassNode(byte[] classBytes) -
toClassNode
public static com.alibaba.deps.org.objectweb.asm.ClassReader toClassNode(byte[] classBytes, com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) -
toBytes
public static byte[] toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, ClassLoader classLoader, com.alibaba.deps.org.objectweb.asm.ClassReader classReader) Generate class bytes from class node.
NOTE: must pass origin classReader for bytecode optimizations, avoiding JVM metaspace OOM.- 参数:
classNode-classLoader-classReader- origin class reader- 返回:
-
toBytes
public static byte[] toBytes(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) -
renameClass
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode renameClass(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, String newClassName) -
renameClass
-
replaceMethod
public static void replaceMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
toASMCode
- 抛出:
IOException
-
toASMCode
- 抛出:
IOException
-
toASMCode
-
toASMCode
-
newMethodNode
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode newMethodNode(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source) -
removeJSRInstructions
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode removeJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.MethodNode subjectMethod) -
removeJSRInstructions
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode removeJSRInstructions(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) -
removeLineNumbers
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode removeLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
removeLineNumbers
public static void removeLineNumbers(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) -
findFirstMethod
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode findFirstMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name) -
findMethods
public static List<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> findMethods(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name) -
findMethod
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode findMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, com.alibaba.deps.org.objectweb.asm.tree.MethodNode target) -
findMethod
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode findMethod(Collection<com.alibaba.deps.org.objectweb.asm.tree.MethodNode> methodNodes, String name, String desc) -
findInitConstructorInstruction
public static com.alibaba.deps.org.objectweb.asm.tree.AbstractInsnNode findInitConstructorInstruction(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
findMethodInsnNodeWithPrefix
-
findMethodInsnNode
-
findMethodInsnNode
-
containsMethodInsnNode
-
isStatic
public static boolean isStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
isStatic
public static boolean isStatic(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode) -
isAbstract
public static boolean isAbstract(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
isConstructor
public static boolean isConstructor(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
isNative
public static boolean isNative(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
getParameterNames
-
copy
public static com.alibaba.deps.org.objectweb.asm.tree.MethodNode copy(com.alibaba.deps.org.objectweb.asm.tree.MethodNode source) -
copy
public static com.alibaba.deps.org.objectweb.asm.tree.ClassNode copy(com.alibaba.deps.org.objectweb.asm.tree.ClassNode source) -
methodDeclaration
public static String methodDeclaration(com.alibaba.deps.org.objectweb.asm.tree.MethodInsnNode methodInsnNode) -
methodDeclaration
public static String methodDeclaration(com.alibaba.deps.org.objectweb.asm.Type owner, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
findField
-
addField
public static void addField(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, com.alibaba.deps.org.objectweb.asm.tree.FieldNode fieldNode) -
addMethod
public static void addMethod(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode, com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
uniqueNameForMethod
-
getMajorVersion
public static int getMajorVersion(int version) Java ClassFile versions (the minor version is stored in the 16 most significant bits, and the major version in the 16 least significant bits).- 参数:
version-- 返回:
- 另请参阅:
-
setMajorVersion
public static int setMajorVersion(int version, int majorVersion) 替换掉完整 version里的 major version- 参数:
version-majorVersion-- 返回:
-
className
-
isEnhancerByCGLIB
-
fixConstructorExceptionTable
public static void fixConstructorExceptionTable(com.alibaba.deps.org.objectweb.asm.tree.MethodNode methodNode) -
fixMajorVersion
public static void fixMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) -
updateMajorVersion
public static void updateMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode from, com.alibaba.deps.org.objectweb.asm.tree.ClassNode to) 比如两份字节码的 major version,如果 from 的比 to 的要高,则设置 to 的 major version 为 from的 major version- 参数:
from-to-
-
currentJvmMajorVersion
public static int currentJvmMajorVersion()如果成功获取,返回大于 0 的值- 返回:
-
fitCurrentJvmMajorVersion
public static boolean fitCurrentJvmMajorVersion(com.alibaba.deps.org.objectweb.asm.tree.ClassNode classNode) 检查当前的字节码版本是否适配- 参数:
classNode-- 返回:
-
internalClassName
-
internalClassName
-