为了账号安全,请及时绑定邮箱和手机立即绑定

Java逆向基础之打印所有类名

标签:
Java

在上一篇博文中提到javaagent可以在执行main方法之前输出内容,这一篇我们仍然用它

在 Java SE 5 及其后续版本当中,开发者可以在一个普通 Java 程序(带有 main 函数的 Java 类)运行时,通过 –javaagent 参数指定一个特定的 jar 文件(包含 Instrumentation 代理)来启动 Instrumentation 的代理程序。在类的字节码载入jvm前会调用ClassFileTransformer的transform方法,从而实现修改原类方法的功能

使用方法如下,在premain方法中使用如下语句

inst.addTransformer(new ClassNameTransformer());

其中ClassNameTransformer实现了ClassFileTransformer,并重写transform方法

下面的例子使用这个方式输出所有类名

新建名为ClassNameAgent的项目

ClassNameAgent.java文件内容

package com.vvvtimes.demo.agent;import java.lang.instrument.Instrumentation;public class ClassNameAgent {	public static void premain(String agentOps, Instrumentation inst) {		try {			inst.addTransformer(new ClassNameTransformer());		} catch (Exception e) {			e.printStackTrace();		}	}}

ClassNameTransformer.java文件内容

package com.vvvtimes.demo.agent;import java.lang.instrument.ClassFileTransformer;import java.lang.instrument.IllegalClassFormatException;import java.security.ProtectionDomain;public class ClassNameTransformer implements ClassFileTransformer {    @Override    public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {        System.out.println(className);              return null;    }}

MANIFEST.MF文件内容

Manifest-Version: 1.0Premain-Class: com.vvvtimes.demo.agent.ClassNameAgentCan-Redefine-Classes: true

导出为ClassNameAgent.jar

将动态生成类的博文中的代码导出可运行jar,命名为DynamicGenerateClass.jar

放到同一目录执行命令

java -javaagent:ClassNameAgent.jar -jar DynamicGenerateClass.jar

执行结果

C:\Users\admin\Desktop>java -javaagent:ClassNameAgent.jar -jar DynamicGenerateClass.jarjava/lang/invoke/MethodHandleImpljava/lang/invoke/MethodHandleImpl$1java/lang/invoke/MethodHandleImpl$2java/util/function/Functionjava/lang/invoke/MethodHandleImpl$3java/lang/invoke/MethodHandleImpl$4java/lang/ClassValuejava/lang/ClassValue$Entryjava/lang/ClassValue$Identityjava/lang/ClassValue$Versionjava/lang/invoke/MemberName$Factoryjava/lang/invoke/MethodHandleStaticsjava/lang/invoke/MethodHandleStatics$1sun/misc/PostVMInitHooksun/usagetracker/UsageTrackerClientjava/util/concurrent/atomic/AtomicBooleansun/usagetracker/UsageTrackerClient$1sun/usagetracker/UsageTrackerClient$4sun/usagetracker/UsageTrackerClient$2java/lang/ProcessEnvironmentjava/lang/ProcessEnvironment$NameComparatorjava/lang/ProcessEnvironment$EntryComparatorjava/util/Collections$UnmodifiableMapjava/lang/ProcessEnvironment$CheckedEntrySetjava/util/HashMap$EntrySetjava/lang/ProcessEnvironment$CheckedEntrySet$1java/util/HashMap$EntryIteratorjava/util/HashMap$HashIteratorjava/lang/ProcessEnvironment$CheckedEntrysun/usagetracker/UsageTrackerClient$3java/io/FileOutputStream$1sun/launcher/LauncherHelpercom/vvvtimes/DynamicGenerateClasssun/launcher/LauncherHelper$FXHelperjava/lang/Class$MethodArrayjava/lang/Voidsun/security/util/SignatureFileVerifierjava/security/CryptoPrimitivejava/util/EnumSetjava/lang/Class$4java/util/RegularEnumSetjava/util/Collections$UnmodifiableSetsun/security/util/DisabledAlgorithmConstraintssun/security/util/AbstractAlgorithmConstraintsjava/security/AlgorithmConstraintssun/security/util/AlgorithmDecomposerjava/util/regex/Patternjava/util/regex/Pattern$4java/util/regex/Pattern$Nodejava/util/regex/Pattern$LastNodejava/util/regex/Pattern$GroupHeadjava/util/regex/Pattern$Singlejava/util/regex/Pattern$BmpCharPropertyjava/util/regex/Pattern$CharPropertyjava/util/regex/Pattern$Slicejava/util/regex/Pattern$SliceNodejava/util/regex/Pattern$Beginjava/util/regex/Pattern$Firstjava/util/regex/Pattern$Startjava/util/regex/Pattern$TreeInfojava/util/regex/ASCIIjava/util/regex/Pattern$SliceIjava/util/regex/Pattern$BranchConnjava/util/regex/Pattern$Branchsun/security/util/AbstractAlgorithmConstraints$1java/security/Securityjava/security/Security$1java/util/Properties$LineReaderjava/util/ArrayList$SubListjava/util/ArrayList$SubList$1java/util/ListIteratorsun/security/util/DisabledAlgorithmConstraints$Constraintsjava/util/regex/Pattern$Ctypejava/util/regex/Pattern$Curlyjava/util/regex/Pattern$GroupTailjava/util/regex/Pattern$BnMjava/util/regex/Pattern$SliceSjava/util/regex/Matcherjava/util/regex/MatchResultsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraintsun/security/util/DisabledAlgorithmConstraints$Constraintsun/security/util/DisabledAlgorithmConstraints$Constraint$Operatorsun/security/util/DisabledAlgorithmConstraints$1javassist/ClassPooljava/security/PrivilegedActionExceptionjavassist/NotFoundExceptionjava/lang/reflect/InvocationTargetExceptionjavassist/CannotCompileExceptionjavassist/CtClassjavassist/CtNewClassjavassist/CtClassTypejavassist/CtArrayjavassist/CtNewNestedClassjavassist/ClassPool$1java/lang/ClassFormatErrorjava/io/IOExceptionjava/lang/AssertionStatusDirectivesjavassist/ClassPoolTailjavassist/ClassPathjavassist/CtPrimitiveTypejavassist/ClassMapjavassist/CtClass$1javassist/CtClass$DelayedFileOutputStreamjavassist/ClassClassPathjavassist/ClassPathListjavassist/bytecode/AttributeInfojavassist/bytecode/ConstantAttributejavassist/CtMemberjavassist/CtFieldjavassist/CtConstructorjavassist/CtBehaviorjavassist/CtMethodjavassist/bytecode/SignatureAttributejava/io/DataOutputStreamjava/io/DataOutputjavassist/bytecode/InnerClassesAttributejavassist/compiler/CompileErrorjavassist/bytecode/BadBytecodejavassist/bytecode/ClassFilejavassist/bytecode/DuplicateMemberExceptionjava/util/zip/DeflaterInputStreamjava/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlessun/invoke/util/Wrappersun/invoke/util/Wrapper$Formatjava/lang/Byte$ByteCachejava/lang/Short$ShortCachejava/lang/Character$CharacterCachejava/lang/Long$LongCachejava/lang/invoke/MethodType$ConcurrentWeakInternSetjava/lang/invoke/MethodTypeFormjava/lang/invoke/Invokersjava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntryjava/lang/NoSuchMethodExceptionsun/invoke/util/VerifyAccessjava/lang/invoke/LambdaForm$BasicTypejava/lang/invoke/LambdaForm$Namejava/lang/invoke/LambdaForm$NamedFunctionjava/lang/invoke/SimpleMethodHandlejava/lang/invoke/BoundMethodHandlejava/lang/invoke/BoundMethodHandle$SpeciesDatajava/lang/invoke/BoundMethodHandle$Factoryjava/lang/invoke/BoundMethodHandle$Species_Lsun/invoke/util/BytecodeDescriptorsun/invoke/util/ValueConversionsjava/lang/invoke/DirectMethodHandle$Lazyjava/lang/InstantiationExceptionjava/util/Arrays$ArrayListjava/util/Collections$UnmodifiableCollection$1java/util/AbstractList$Itrjava/lang/invoke/InvokerBytecodeGeneratorjdk/internal/org/objectweb/asm/ClassWriterjdk/internal/org/objectweb/asm/ClassVisitorjdk/internal/org/objectweb/asm/ByteVectorjdk/internal/org/objectweb/asm/Itemjdk/internal/org/objectweb/asm/MethodWriterjdk/internal/org/objectweb/asm/MethodVisitorjdk/internal/org/objectweb/asm/Typejdk/internal/org/objectweb/asm/Labeljdk/internal/org/objectweb/asm/Framejdk/internal/org/objectweb/asm/AnnotationWriterjdk/internal/org/objectweb/asm/AnnotationVisitorjava/lang/invoke/MethodHandleImpl$Intrinsicjava/lang/invoke/InvokerBytecodeGenerator$2sun/invoke/util/VerifyTypesun/invoke/empty/Emptyjava/util/HashMap$Valuesjava/util/HashMap$ValueIteratornullnullnullnullnulljava/lang/NoSuchFieldExceptionjava/lang/invoke/InvokerBytecodeGenerator$CpPatchnulljava/lang/invoke/DirectMethodHandle$Accessornullnullnullnullnullnullnullnullnullnullnulljava/util/ArrayList$Itrjava/util/RandomAccessSubListjava/util/SubListjava/util/SubList$1java/util/AbstractList$ListItrnulljava/lang/invoke/MethodHandleImpl$AsVarargsCollectorjava/lang/invoke/DelegatingMethodHandlejava/lang/invoke/WrongMethodTypeExceptionnullnullnullnulljava/lang/invoke/MethodHandleImpl$Lazynulljava/lang/invoke/MethodHandleImpl$IntrinsicMethodHandlenullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnulljava/lang/NoSuchFieldErrorjava/lang/IllegalAccessExceptionnullnullnullnullnulljava/lang/invoke/LambdaFormEditorjava/lang/invoke/LambdaFormEditor$Transform$Kindjava/lang/invoke/LambdaFormEditor$Transformjava/lang/invoke/LambdaFormBuffernullnullnullnullnullnullnulljavassist/bytecode/ConstPooljavassist/bytecode/ConstInfojavassist/bytecode/Utf8Infojavassist/bytecode/ClassInfojavassist/bytecode/StringInfojavassist/bytecode/FieldrefInfojavassist/bytecode/MemberrefInfojavassist/bytecode/DoubleInfojavassist/bytecode/FloatInfojavassist/bytecode/IntegerInfojavassist/bytecode/LongInfojavassist/bytecode/MethodrefInfojavassist/bytecode/InterfaceMethodrefInfojavassist/bytecode/NameAndTypeInfojavassist/bytecode/MethodHandleInfojavassist/bytecode/MethodTypeInfojavassist/bytecode/InvokeDynamicInfojavassist/bytecode/ConstInfoPaddingjavassist/bytecode/LongVectorjavassist/bytecode/Descriptorjava/lang/IndexOutOfBoundsExceptionjavassist/bytecode/SourceFileAttributejavassist/bytecode/AnnotationDefaultAttributejavassist/bytecode/BootstrapMethodsAttributejavassist/bytecode/CodeAttributejavassist/bytecode/Opcodejavassist/bytecode/DeprecatedAttributejavassist/bytecode/EnclosingMethodAttributejavassist/bytecode/ExceptionsAttributejavassist/bytecode/LineNumberAttributejavassist/bytecode/LocalVariableAttributejavassist/bytecode/LocalVariableTypeAttributejavassist/bytecode/MethodParametersAttributejavassist/bytecode/AnnotationsAttributejavassist/bytecode/ParameterAnnotationsAttributejavassist/bytecode/TypeAnnotationsAttributejavassist/bytecode/SyntheticAttributejavassist/bytecode/StackMapjavassist/bytecode/StackMapTablejavassist/bytecode/AccessFlagjavassist/Modifiersun/misc/Launcher$BootClassPathHoldersun/misc/Launcher$BootClassPathHolder$1javassist/bytecode/FieldInfojavassist/CtMember$Cachejava/util/ArrayList$ListItrjavassist/CtNewMethodjavassist/bytecode/MethodInfojavassist/bytecode/Bytecodejavassist/bytecode/ByteVectorjava/lang/ArrayIndexOutOfBoundsExceptionjava/lang/CloneNotSupportedExceptionjavassist/bytecode/ExceptionTablejava/lang/UnsupportedOperationExceptionjavassist/bytecode/CodeAttribute$RuntimeCopyExceptionjavassist/compiler/Javacjavassist/compiler/ast/Visitorjavassist/compiler/JvstCodeGenjavassist/compiler/MemberCodeGenjavassist/compiler/CodeGenjavassist/compiler/TokenIdjavassist/compiler/ProceedHandlerjavassist/compiler/Javac$CtFieldWithInitjavassist/compiler/ast/ASTListjavassist/compiler/ast/ASTreejavassist/compiler/ast/Stmntjavassist/compiler/ast/Exprjavassist/compiler/ast/AssignExprjavassist/compiler/ast/BinExprjavassist/compiler/ast/CastExprjavassist/compiler/ast/InstanceOfExprjavassist/compiler/CodeGen$ReturnHookjavassist/compiler/CodeGen$1javassist/compiler/TypeCheckerjavassist/compiler/NoFieldExceptionjavassist/compiler/ast/Memberjavassist/compiler/ast/Symboljavassist/compiler/ast/ArrayInitjavassist/compiler/MemberCodeGen$JsrHook2javassist/compiler/JvstTypeCheckerjavassist/compiler/MemberResolverjavassist/compiler/ast/StringLjavassist/compiler/ast/DoubleConstjavassist/compiler/ast/IntConstjavassist/compiler/ast/Keywordjavassist/compiler/ast/CallExprjavassist/compiler/ast/NewExprjavassist/compiler/SymbolTablejavassist/compiler/ast/Declaratorjavassist/compiler/Parserjavassist/compiler/SyntaxErrorjavassist/compiler/ast/MethodDecljavassist/compiler/ast/FieldDecljavassist/compiler/ast/Pairjavassist/compiler/ast/Variablejavassist/compiler/ast/CondExprjavassist/compiler/Lexjava/lang/NumberFormatExceptionjavassist/compiler/KeywordTablejavassist/compiler/Tokensun/net/www/protocol/jar/JarURLConnectionjava/net/JarURLConnectionsun/net/www/protocol/jar/JarFileFactorysun/net/www/protocol/jar/URLJarFile$URLJarFileCloseControllersun/net/www/protocol/jar/URLJarFilesun/net/www/protocol/jar/URLJarFile$URLJarFileEntrysun/net/www/protocol/jar/JarURLConnection$JarURLInputStreamjava/io/DataInputStreamjava/io/DataInputjavassist/bytecode/SignatureAttribute$ObjectTypejavassist/bytecode/SignatureAttribute$Typejavassist/bytecode/SignatureAttribute$ArrayTypejavassist/bytecode/SignatureAttribute$ClassTypejavassist/bytecode/SignatureAttribute$TypeVariablejavassist/bytecode/SignatureAttribute$BaseTypejavassist/bytecode/StackMapTable$RuntimeCopyExceptionjavassist/bytecode/stackmap/MapMakerjavassist/bytecode/stackmap/Tracerjavassist/bytecode/stackmap/TypeTagjavassist/bytecode/stackmap/TypeDatajavassist/bytecode/stackmap/TypeData$BasicTypejavassist/bytecode/stackmap/BasicBlock$JsrBytecodejavassist/bytecode/stackmap/TypeData$ClassNamejavassist/bytecode/stackmap/TypedBlockjavassist/bytecode/stackmap/BasicBlockjava/lang/StringIndexOutOfBoundsExceptionjavassist/bytecode/stackmap/TypedBlock$Makerjavassist/bytecode/stackmap/BasicBlock$Makerjavassist/bytecode/CodeIteratorjavassist/bytecode/CodeIterator$AlignmentExceptionjavassist/bytecode/CodeIterator$Branchjavassist/bytecode/CodeIterator$Jump16javassist/bytecode/CodeIterator$Branch16javassist/bytecode/CodeIterator$If16javassist/bytecode/stackmap/BasicBlock$Markjava/util/Arrays$LegacyMergeSortsun/security/action/GetBooleanActionjava/util/ComparableTimSortjava/io/FileNotFoundExceptionjava/net/URLClassLoader$2javassist/bytecode/ExceptionTableEntryjavassist/compiler/MemberResolver$Methodjavassist/bytecode/ByteArrayjavassist/bytecode/CodeAttribute$LdcEntrycom/vvvtimes/bean/Employeebegin!name=gsls200808age=25sex=1end!java/lang/Shutdownjava/lang/Shutdown$LockC:\Users\admin\Desktop>java -javaagent:ClassNameAgent.jar -jar DynamicGenerateClass.jarjava/lang/invoke/MethodHandleImpljava/lang/invoke/MethodHandleImpl$1java/lang/invoke/MethodHandleImpl$2java/util/function/Functionjava/lang/invoke/MethodHandleImpl$3java/lang/invoke/MethodHandleImpl$4java/lang/ClassValuejava/lang/ClassValue$Entryjava/lang/ClassValue$Identityjava/lang/ClassValue$Versionjava/lang/invoke/MemberName$Factoryjava/lang/invoke/MethodHandleStaticsjava/lang/invoke/MethodHandleStatics$1sun/misc/PostVMInitHooksun/usagetracker/UsageTrackerClientjava/util/concurrent/atomic/AtomicBooleansun/usagetracker/UsageTrackerClient$1sun/usagetracker/UsageTrackerClient$4sun/usagetracker/UsageTrackerClient$2java/lang/ProcessEnvironmentjava/lang/ProcessEnvironment$NameComparatorjava/lang/ProcessEnvironment$EntryComparatorjava/util/Collections$UnmodifiableMapjava/lang/ProcessEnvironment$CheckedEntrySetjava/util/HashMap$EntrySetjava/lang/ProcessEnvironment$CheckedEntrySet$1java/util/HashMap$EntryIteratorjava/util/HashMap$HashIteratorjava/lang/ProcessEnvironment$CheckedEntrysun/usagetracker/UsageTrackerClient$3java/io/FileOutputStream$1sun/launcher/LauncherHelpercom/vvvtimes/DynamicGenerateClasssun/launcher/LauncherHelper$FXHelperjava/lang/Class$MethodArrayjava/lang/Voidsun/security/util/SignatureFileVerifierjava/security/CryptoPrimitivejava/util/EnumSetjava/lang/Class$4java/util/RegularEnumSetjava/util/Collections$UnmodifiableSetsun/security/util/DisabledAlgorithmConstraintssun/security/util/AbstractAlgorithmConstraintsjava/security/AlgorithmConstraintssun/security/util/AlgorithmDecomposerjava/util/regex/Patternjava/util/regex/Pattern$4java/util/regex/Pattern$Nodejava/util/regex/Pattern$LastNodejava/util/regex/Pattern$GroupHeadjava/util/regex/Pattern$Singlejava/util/regex/Pattern$BmpCharPropertyjava/util/regex/Pattern$CharPropertyjava/util/regex/Pattern$Slicejava/util/regex/Pattern$SliceNodejava/util/regex/Pattern$Beginjava/util/regex/Pattern$Firstjava/util/regex/Pattern$Startjava/util/regex/Pattern$TreeInfojava/util/regex/ASCIIjava/util/regex/Pattern$SliceIjava/util/regex/Pattern$BranchConnjava/util/regex/Pattern$Branchsun/security/util/AbstractAlgorithmConstraints$1java/security/Securityjava/security/Security$1java/util/Properties$LineReaderjava/util/ArrayList$SubListjava/util/ArrayList$SubList$1java/util/ListIteratorsun/security/util/DisabledAlgorithmConstraints$Constraintsjava/util/regex/Pattern$Ctypejava/util/regex/Pattern$Curlyjava/util/regex/Pattern$GroupTailjava/util/regex/Pattern$BnMjava/util/regex/Pattern$SliceSjava/util/regex/Matcherjava/util/regex/MatchResultsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraintsun/security/util/DisabledAlgorithmConstraints$Constraintsun/security/util/DisabledAlgorithmConstraints$Constraint$Operatorsun/security/util/DisabledAlgorithmConstraints$1javassist/ClassPooljava/security/PrivilegedActionExceptionjavassist/NotFoundExceptionjava/lang/reflect/InvocationTargetExceptionjavassist/CannotCompileExceptionjavassist/CtClassjavassist/CtNewClassjavassist/CtClassTypejavassist/CtNewNestedClassjavassist/CtArrayjavassist/ClassPool$1java/lang/ClassFormatErrorjava/io/IOExceptionjava/lang/AssertionStatusDirectivesjavassist/ClassPoolTailjavassist/ClassPathjavassist/CtPrimitiveTypejavassist/ClassMapjavassist/CtClass$1javassist/CtClass$DelayedFileOutputStreamjavassist/ClassClassPathjavassist/ClassPathListjavassist/bytecode/AttributeInfojavassist/bytecode/ConstantAttributejavassist/CtMemberjavassist/CtFieldjavassist/CtConstructorjavassist/CtBehaviorjavassist/CtMethodjavassist/bytecode/SignatureAttributejava/io/DataOutputStreamjava/io/DataOutputjavassist/bytecode/InnerClassesAttributejavassist/compiler/CompileErrorjavassist/bytecode/BadBytecodejavassist/bytecode/ClassFilejavassist/bytecode/DuplicateMemberExceptionjava/util/zip/DeflaterInputStreamjava/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlessun/invoke/util/Wrappersun/invoke/util/Wrapper$Formatjava/lang/Byte$ByteCachejava/lang/Short$ShortCachejava/lang/Character$CharacterCachejava/lang/Long$LongCachejava/lang/invoke/MethodType$ConcurrentWeakInternSetjava/lang/invoke/MethodTypeFormjava/lang/invoke/Invokersjava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntryjava/lang/NoSuchMethodExceptionsun/invoke/util/VerifyAccessjava/lang/invoke/LambdaForm$BasicTypejava/lang/invoke/LambdaForm$Namejava/lang/invoke/LambdaForm$NamedFunctionjava/lang/invoke/SimpleMethodHandlejava/lang/invoke/BoundMethodHandlejava/lang/invoke/BoundMethodHandle$SpeciesDatajava/lang/invoke/BoundMethodHandle$Factoryjava/lang/invoke/BoundMethodHandle$Species_Lsun/invoke/util/BytecodeDescriptorsun/invoke/util/ValueConversionsjava/lang/invoke/DirectMethodHandle$Lazyjava/lang/InstantiationExceptionjava/util/Arrays$ArrayListjava/util/Collections$UnmodifiableCollection$1java/util/AbstractList$Itrjava/lang/invoke/InvokerBytecodeGeneratorjdk/internal/org/objectweb/asm/ClassWriterjdk/internal/org/objectweb/asm/ClassVisitorjdk/internal/org/objectweb/asm/ByteVectorjdk/internal/org/objectweb/asm/Itemjdk/internal/org/objectweb/asm/MethodWriterjdk/internal/org/objectweb/asm/MethodVisitorjdk/internal/org/objectweb/asm/Typejdk/internal/org/objectweb/asm/Labeljdk/internal/org/objectweb/asm/Framejdk/internal/org/objectweb/asm/AnnotationWriterjdk/internal/org/objectweb/asm/AnnotationVisitorjava/lang/invoke/MethodHandleImpl$Intrinsicjava/lang/invoke/InvokerBytecodeGenerator$2sun/invoke/util/VerifyTypesun/invoke/empty/Emptyjava/util/HashMap$Valuesjava/util/HashMap$ValueIteratornullnullnullnullnulljava/lang/NoSuchFieldExceptionjava/lang/invoke/InvokerBytecodeGenerator$CpPatchnulljava/lang/invoke/DirectMethodHandle$Accessornullnullnullnullnullnullnullnullnullnullnulljava/util/ArrayList$Itrjava/util/RandomAccessSubListjava/util/SubListjava/util/SubList$1java/util/AbstractList$ListItrnulljava/lang/invoke/MethodHandleImpl$AsVarargsCollectorjava/lang/invoke/DelegatingMethodHandlejava/lang/invoke/WrongMethodTypeExceptionnullnullnullnulljava/lang/invoke/MethodHandleImpl$Lazynulljava/lang/invoke/MethodHandleImpl$IntrinsicMethodHandlenullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnulljava/lang/NoSuchFieldErrorjava/lang/IllegalAccessExceptionnullnullnullnullnulljava/lang/invoke/LambdaFormEditorjava/lang/invoke/LambdaFormEditor$Transform$Kindjava/lang/invoke/LambdaFormEditor$Transformjava/lang/invoke/LambdaFormBuffernullnullnullnullnullnullnulljavassist/bytecode/ConstPooljavassist/bytecode/ConstInfojavassist/bytecode/Utf8Infojavassist/bytecode/ClassInfojavassist/bytecode/NameAndTypeInfojavassist/bytecode/InterfaceMethodrefInfojavassist/bytecode/MemberrefInfojavassist/bytecode/MethodHandleInfojavassist/bytecode/InvokeDynamicInfojavassist/bytecode/ConstInfoPaddingjavassist/bytecode/MethodTypeInfojavassist/bytecode/FloatInfojavassist/bytecode/IntegerInfojavassist/bytecode/LongInfojavassist/bytecode/DoubleInfojavassist/bytecode/StringInfojavassist/bytecode/FieldrefInfojavassist/bytecode/MethodrefInfojavassist/bytecode/LongVectorjavassist/bytecode/Descriptorjava/lang/IndexOutOfBoundsExceptionjavassist/bytecode/SourceFileAttributejavassist/bytecode/AnnotationDefaultAttributejavassist/bytecode/BootstrapMethodsAttributejavassist/bytecode/CodeAttributejavassist/bytecode/Opcodejavassist/bytecode/DeprecatedAttributejavassist/bytecode/EnclosingMethodAttributejavassist/bytecode/ExceptionsAttributejavassist/bytecode/LineNumberAttributejavassist/bytecode/LocalVariableAttributejavassist/bytecode/LocalVariableTypeAttributejavassist/bytecode/MethodParametersAttributejavassist/bytecode/AnnotationsAttributejavassist/bytecode/ParameterAnnotationsAttributejavassist/bytecode/TypeAnnotationsAttributejavassist/bytecode/SyntheticAttributejavassist/bytecode/StackMapjavassist/bytecode/StackMapTablejavassist/bytecode/AccessFlagjavassist/Modifiersun/misc/Launcher$BootClassPathHoldersun/misc/Launcher$BootClassPathHolder$1javassist/bytecode/FieldInfojavassist/CtMember$Cachejava/util/ArrayList$ListItrjavassist/CtNewMethodjavassist/bytecode/MethodInfojavassist/bytecode/Bytecodejavassist/bytecode/ByteVectorjava/lang/ArrayIndexOutOfBoundsExceptionjava/lang/CloneNotSupportedExceptionjavassist/bytecode/ExceptionTablejava/lang/UnsupportedOperationExceptionjavassist/bytecode/CodeAttribute$RuntimeCopyExceptionjavassist/compiler/Javacjavassist/compiler/ast/Visitorjavassist/compiler/JvstCodeGenjavassist/compiler/MemberCodeGenjavassist/compiler/CodeGenjavassist/compiler/TokenIdjavassist/compiler/ProceedHandlerjavassist/compiler/Javac$CtFieldWithInitjavassist/compiler/TypeCheckerjavassist/compiler/ast/Exprjavassist/compiler/ast/ASTListjavassist/compiler/ast/ASTreejavassist/compiler/ast/BinExprjavassist/compiler/ast/Stmntjavassist/compiler/CodeGen$ReturnHookjavassist/compiler/CodeGen$1javassist/compiler/ast/AssignExprjavassist/compiler/ast/CastExprjavassist/compiler/ast/InstanceOfExprjavassist/compiler/NoFieldExceptionjavassist/compiler/ast/Memberjavassist/compiler/ast/Symboljavassist/compiler/ast/ArrayInitjavassist/compiler/MemberCodeGen$JsrHook2javassist/compiler/JvstTypeCheckerjavassist/compiler/MemberResolverjavassist/compiler/ast/StringLjavassist/compiler/ast/DoubleConstjavassist/compiler/ast/IntConstjavassist/compiler/ast/Keywordjavassist/compiler/ast/NewExprjavassist/compiler/ast/CallExprjavassist/compiler/SymbolTablejavassist/compiler/ast/Declaratorjavassist/compiler/Parserjavassist/compiler/SyntaxErrorjavassist/compiler/ast/CondExprjavassist/compiler/ast/Variablejavassist/compiler/ast/Pairjavassist/compiler/ast/MethodDecljavassist/compiler/ast/FieldDecljavassist/compiler/Lexjava/lang/NumberFormatExceptionjavassist/compiler/KeywordTablejavassist/compiler/Tokensun/net/www/protocol/jar/JarURLConnectionjava/net/JarURLConnectionsun/net/www/protocol/jar/JarFileFactorysun/net/www/protocol/jar/URLJarFile$URLJarFileCloseControllersun/net/www/protocol/jar/URLJarFilesun/net/www/protocol/jar/URLJarFile$URLJarFileEntrysun/net/www/protocol/jar/JarURLConnection$JarURLInputStreamjava/io/DataInputStreamjava/io/DataInputjavassist/bytecode/SignatureAttribute$Typejavassist/bytecode/SignatureAttribute$ObjectTypejavassist/bytecode/SignatureAttribute$BaseTypejavassist/bytecode/SignatureAttribute$ArrayTypejavassist/bytecode/SignatureAttribute$ClassTypejavassist/bytecode/SignatureAttribute$TypeVariablejavassist/bytecode/StackMapTable$RuntimeCopyExceptionjavassist/bytecode/stackmap/MapMakerjavassist/bytecode/stackmap/Tracerjavassist/bytecode/stackmap/TypeTagjavassist/bytecode/stackmap/TypeDatajavassist/bytecode/stackmap/TypeData$BasicTypejavassist/bytecode/stackmap/BasicBlock$JsrBytecodejavassist/bytecode/stackmap/TypeData$ClassNamejavassist/bytecode/stackmap/TypedBlockjavassist/bytecode/stackmap/BasicBlockjava/lang/StringIndexOutOfBoundsExceptionjavassist/bytecode/stackmap/TypedBlock$Makerjavassist/bytecode/stackmap/BasicBlock$Makerjavassist/bytecode/CodeIteratorjavassist/bytecode/CodeIterator$Branchjavassist/bytecode/CodeIterator$Jump16javassist/bytecode/CodeIterator$Branch16javassist/bytecode/CodeIterator$If16javassist/bytecode/CodeIterator$AlignmentExceptionjavassist/bytecode/stackmap/BasicBlock$Markjava/util/Arrays$LegacyMergeSortsun/security/action/GetBooleanActionjava/util/ComparableTimSortjava/io/FileNotFoundExceptionjava/net/URLClassLoader$2javassist/bytecode/ExceptionTableEntryjavassist/compiler/MemberResolver$Methodjavassist/bytecode/ByteArrayjavassist/bytecode/CodeAttribute$LdcEntrycom/vvvtimes/bean/Employeebegin!name=gsls200808age=25sex=1end!java/lang/Shutdownjava/lang/Shutdown$Lock

可以看到输出的类名都是以斜线/分隔,在最后几行输出了com/vvvtimes/bean/Employee,这个是我们动态生成的类。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
18
获赞与收藏
134

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消