第1部分 实现原理 2
第1章 代码虚拟化原理 2
1.1 代码虚拟机运行时框架 3
1.1.1 流程控制指令 6
1.1.2 入口代码 6
1.1.3 解码执行器 7
1.1.4 出口代码 8
1.2 代码虚拟机非运行时部件 8
1.2.1 译码器 9
1.2.2 虚拟化媒介编码器 10
1.2.3 运行时部件 10
1.2.4 运行时部件生成器 10
1.2.5 原始程序处理器 11
1.3 本章小结 11
第2章 模拟虚拟化 12
2.1 Bochs简单分析 12
2.1.1 模拟CPU对象 13
2.1.2 译码器 15
2.1.3 解码执行器 16
2.1.4 OP代码分支 17
2.2 模拟虚拟化特征 19
2.3 实现模拟虚拟化样机 19
2.3.1 模拟目标设定 19
2.3.2 技术方案 20
2.3.3 原程序处理器 21
2.3.4 运行时部件 24
2.4 本章小结 28
第3章 自动化分析原理 29
3.1 代码等价替换 29
3.2 垃圾指令生成 32
3.3 代码乱序 33
3.4 多分支跳转 34
3.5 自动化分析基础 34
3.5.1 代码等价替换技术 35
3.5.2 垃圾指令生成及清除 35
3.5.3 代码乱序处理 35
3.5.4 多分支跳转及清除 36
3.5.5 代码虚拟机技术 36
第4章 花型替换分析 37
4.1 定义花型 38
4.2 匹配花型 40
4.3 实施花型替换 42
4.4 打造花型替换机 42
4.4.1 功能制定 43
4.4.2 确定技术方案 43
4.4.3 开发筹备 44
4.4.4 具体实现 44
4.4.5 效果演示 70
第2部分 技术分析 74
第5章 打造自动化分析工具 74
5.1 功能制定 74
5.2 确定技术方案 75
5.3 开发筹备 76
5.4 具体实现 77
5.4.1 实时代码虚拟机 77
5.4.2 代码执行记录 89
5.4.3 C语言脚本即时编译 95
5.4.4 代码实时监控执行 103
5.4.5 高级调试功能 106
5.4.6 调试界面改造 106
5.4.7 断点增强 112
5.4.8 代码回溯 113
5.4.9 预执行 114
5.4.10 实时代码块记录 114
5.4.11 脚本化增强调试 117
5.4.12 代码DNA功能 123
5.5 效果演示 127
第6章 代码虚拟机结构分析 129
6.1 虚拟机类型鉴别 129
6.2 OP分支跳转 132
6.3 OP分支探测 134
6.4 虚拟机栈 145
6.5 虚拟机Context 149
6.6 OPCODE编码 152
6.7 虚拟机出口 156
6.8 本章小结 162
第7章 OP分支功能性分析 163
7.1 统计分析法 163
7.2 栈平衡简化分析法 165
7.3 不精确花型替换分析法 170
7.4 内存状态着色分析法 173
7.5 内存访问定位分析法 184
7.6 本章小结 187
第8章 对比测试分析 188
8.1 一般代码对比分析法 188
8.2 OP分支执行对比分析法 194
8.3 内存访问记录对比分析法 201
8.4 严格现场对比分析法 202
8.5 本章小结 205
第9章 实时监控分析 206
9.1 一般代码实时监控分析法 206
9.2 Context实时监控分析法 211
9.3 内存状态实时同步监控分析法 216
9.4 块执行实时监控分析法 225
9.5 本章小结 230
第10章 OP实时调试分析 231
10.1 虚拟OP实时调试 231
10.2 直接OP实时调试 234
10.3 OP实时调试演示 237
10.4 本章小结 241
第3部分 实例分析 244
第11章 Winlicense 2.3.2分析 244
11.1 加密流程分析 245
11.1.1 Winlicense主体框架 245
11.1.2 Shell代码生成 249
11.2 Winlicense加密技术 252
11.3 代码变形分析 256
11.4 代码虚拟机分析 260
11.4.1 代码虚拟机生成 260
11.4.2 FISH代码虚拟机 267
11.4.3 TIGER代码虚拟机 272
11.4.4 PUMA代码虚拟机 274
11.4.5 SHARK代码虚拟机 276
11.4.6 小结 278
11.5 OPCODE补丁 278
11.6 代码还原 282
11.7 本章小结 286
第12章 VMProtect分析 287
12.1 代码变形分析 287
12.2 OP分支DNA 289
12.3 OPCODE补丁 291
12.4 代码还原 302
12.5 本章小结 305
第13章 xVMDebug插件 306
13.1 xVMDebug介绍 306
13.2 运行环境 306
13.3 文件结构 306
13.4 插件安装 306
13.5 主要功能简介 307
13.5.1 调试功能 307
13.5.2 脚本功能 309
13.5.3 函数监视功能 310
13.5.4 伪调试功能 311
13.5.5 远端IDA功能 311
13.5.6 模块注入功能 312
13.6 操作说明 313
13.6.1 选项设置窗口 313
13.6.2 增强界面窗口 315
13.6.3 块执行管理窗口 318
13.6.4 CALL记录窗口 320
13.6.5 ASM窗口菜单 322
13.6.6 DUMP窗口菜单 322