课程目录

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)