课程目录
1-1 [基础] 课程介绍 (05:31) 1-2 [基础] ASM是什么 (09:52) 1-3 [基础] ASM的过去和现在 (10:58) 1-4 [基础] ASM能够做什么 (12:53) 1-5 [基础] 为什么要学习ASM (17:38) 1-6 [基础] ASM的两个组成部分 (27:19) 1-7 [基础] 搭建ASM开发环境 (16:23) 1-8 [基础] ASM与ClassFile (23:02) 1-9 [基础] ClassFile结构 (23:22) 1-10 [基础] field_info和method_info结构 (11:42) 1-11 [基础] Code结构 (13:31) 1-12 [基础] 如何编写ASM代码 (17:23) 2-1 [生成新的类] ClassVisitor类和方法调用顺序 (26:36) 2-2 [生成新的类] visitXxx方法与ClassFile (15:02) 2-3 [生成新的类] ClassWriter类及如何使用 (40:18) 2-4 [生成新的类] 创建ClassWriter对象 (17:45) 2-5 [生成新的类] ClassWriter代码示例一 (22:17) 2-6 [生成新的类] ClassWriter代码示例二 (28:59) 2-7 [生成新的类] ClassWriter代码示例三 (13:57) 2-8 [生成新的类] FieldVisitor类 (09:10) 2-9 [生成新的类] FieldVisitor类示例 (12:36) 2-10 [生成新的类] FieldWriter介绍 (25:20) 2-11 [生成新的类] MethodVisitor介绍 (25:45) 2-12 [生成新的类] MethodWriter介绍 (15:13) 2-13 [生成新的类] Frame内存结构 (17:52) 2-14 [生成新的类] 方法的初始Frame (30:44) 2-15 [生成新的类] MethodVisitor代码示例一 (17:34) 2-16 [生成新的类] MethodVisitor代码示例二 (11:06) 2-17 [生成新的类] MethodVisitor代码示例三 (15:21) 2-18 [生成新的类] MethodVisitor代码示例四 (13:38) 2-19 [生成新的类] MethodVisitor代码示例五 (13:20) 2-20 [生成新的类] MethodVisitor代码示例六 (10:49) 2-21 [生成新的类] Label类 (30:23) 2-22 [生成新的类] 如何使用Label类 (21:29) 2-23 [生成新的类] Label类引起的Frame变化 (27:35) 2-24 [生成新的类] Label代码示例一到三 (27:51) 2-25 [生成新的类] Label代码示例四 (17:58) 2-26 [生成新的类] StackMapTable的由来 (29:06) 2-27 [生成新的类] 不推荐使用visitFrame方法 (22:52) 2-28 [生成新的类] StackMapTable进一步解释 (26:05) 2-29 [生成新的类] Opcodes介绍 (22:38) 2-30 [生成新的类] 本章内容总结 (34:51) 3-1 [转换已有的类] 本章内容安排 (08:17) 3-2 [转换已有的类] ClassReader类 (39:13) 3-3 [转换已有的类] 如何使用ClassReader类 (13:26) 3-4 [转换已有的类] parsingOptions参数 (24:51) 3-5 [转换已有的类] ClassReader代码示例一和二 (29:20) 3-6 [转换已有的类] ClassReader代码示例三和四 (29:46) 3-7 [转换已有的类] ClassReader代码示例五和六 (22:02) 3-8 [转换已有的类] Class Transformation的原理 (36:45) 3-9 [转换已有的类] 为什么会存在Type类 (16:31) 3-10 [转换已有的类] Type类 (12:44) 3-11 [转换已有的类] Type类的静态成员 (11:11) 3-12 [转换已有的类] Type类的特殊方法 (21:09) 3-13 [转换已有的类] 方法进入和退出时添加代码的实现思路 (29:45) 3-14 [转换已有的类] 方法进入时添加代码 (25:05) 3-15 [转换已有的类] 方法退出时添加代码 (04:13) 3-16 [转换已有的类] 方法进入和退出时添加代码 (17:31) 3-17 [转换已有的类] 打印方法参数和返回值 (33:58) 3-18 [转换已有的类] 记录方法的运行时间 (26:25) 3-19 [转换已有的类] 移除Instruction (26:02) 3-20 [转换已有的类] 清空方法体 (28:29) 3-21 [转换已有的类] 替换方法调用 (31:31) 3-22 [转换已有的类] 查找Instruction (21:58) 3-23 [转换已有的类] 调用了哪些方法 (12:37) 3-24 [转换已有的类] 被哪些方法所调用 (18:55) 3-25 [转换已有的类] 复杂的变换 (55:23) 3-26 [转换已有的类] 删除加零的操作 (24:09) 3-27 [转换已有的类] 删除字段赋值 (25:07) 3-28 [转换已有的类] 删除打印语句 (20:37) 3-29 [转换已有的类] 第三章内容总结 (24:34) 4-1 [工具类和常用类] asm-util和asm-commons (19:02) 4-2 [工具类和常用类] CheckClassAdapter介绍 (25:24) 4-3 [工具类和常用类] TraceClassVisitor介绍 (25:35) 4-4 [工具类和常用类] Printer/ASMifier/Textifier介绍 (29:38) 4-5 [工具类和常用类] AdviceAdapter介绍 (36:18) 4-6 [工具类和常用类] GeneratorAdapter介绍 (30:37) 4-7 [工具类和常用类] LocalVariablesSorter示例 (32:54) 4-8 [工具类和常用类] LocalVariablesSorter类 (47:20) 4-9 [工具类和常用类] LocalVariablesSorter类的工作原理 (24:28) 4-10 [工具类和常用类] AnalyzerAdapter初步介绍 (33:15) 4-11 [工具类和常用类] AnalyzerAdapter类 (37:01) 4-12 [工具类和常用类] AnalyzerAdapter类工作原理 (24:15) 4-13 [工具类和常用类] AnalyzerAdapter示例 (14:57) 4-14 [工具类和常用类] InstructionAdapter介绍 (22:05) 4-15 [工具类和常用类] ClassRemapper介绍 (36:28) 4-16 [工具类和常用类] 如何合并两个类文件 (24:48) 4-17 [工具类和常用类] StaticInitMerger类 (21:24) 4-18 [工具类和常用类] StaticInitMerger类示例 (38:18) 4-19 [工具类和常用类] SerialVersionUIDAdder介绍 (28:18)




