第1篇 游戏和外挂初识篇第1章 认识游戏和外挂 2
1.1 游戏安全现状 2
1.2 什么是外挂 3
1.3 内存挂与游戏的关系 3
1.4 游戏的3个核心概念 5
1.4.1 游戏资源的加/解密 5
1.4.2 游戏协议之发包模型 11
1.4.3 游戏内存对象布局 16
1.5 外挂的设计思路 24
1.6 反外挂的思路 25
1.7 本章小结 26
第2篇 外挂技术篇 28
第2章 五花八门的注入技术 28
2.1 注册表注入 28
2.2 远线程注入 29
2.3 依赖可信进程注入 32
2.4 APC注入 34
2.5 消息钩子注入 36
2.6 导入表注入 39
2.7 劫持进程创建注入 48
2.8 LSP劫持注入 50
2.8.1 编写LSP 52
2.8.2 安装LSP 56
2.9 输入法注入 60
2.10 ComRes注入 66
第3章 浅谈无模块化 67
3.1 LDR_ MODULE隐藏 67
3.2 抹去PE“指纹” 74
3.3 本章小结 76
第4章 安全的交互通道 77
4.1 消息钩子 77
4.2 替代游戏消息处理过程 81
4.3 GetKeyState、GetAsyncKeyState和GetKeyBoard State 82
4.4 进程间通信 84
4.5 本章小结 89
第5章 未授权的Call 90
5.1 Call Stack检测 90
5.2 隐藏Call 90
5.2.1 Call自定义函数头 91
5.2.2 构建假栈帧 99
5.3 定位Call 107
5.3.1 虚函数差异调用定位Call 107
5.3.2 send()函数回溯定位Call 110
5.4 本章小结 112
第6章 Hook大全 113
6.1 Hook技术简介 113
6.2 IAT Hook在全屏加速中的应用 115
6.3 巧妙的虚表Hook 121
6.3.1 虚表的内存布局 122
6.3.2 C++中的RTTI 123
6.3.3 Hook虚表 125
6.4 Detours Hook 128
6.4.1 Detours简介 128
6.4.2 Detours Hook的3个关键概念 128
6.4.3 Detours Hook的核心接口 130
6.4.4 Detours Hook引擎 132
6.5 高级Hook 147
6.5.1 S.E.H简介 147
6.5.2 V.E.H简介 148
6.5.3 硬件断点 150
6.5.4 S.E.H Hook 153
6.5.5 V.E.H Hook 156
6.5.6 检测V.E.H Hook 157
6.6 本章小结 159
第7章 应用层防护 160
7.1 静态保护 161
7.2 动态保护 165
7.2.1 反dump 165
7.2.2 内存访问异常Hook 169
7.3 本章小结 171
第3篇 游戏保护方案探索篇第8章 探索游戏保护方案 174
8.1 分析工具介绍 174
8.1.1 GameSpider 174
8.1.2 Kernel Detective 178
8.2 定位保护模块 178
8.2.1 定位ring0保护模块 179
8.2.2 定位ring3保护模块 179
8.2.3 定位自加载模块 185
8.3 分析保护方案 187
8.3.1 ring3保护方案 187
8.3.2 ring0保护方案 189
8.4 本章小结 191
第4篇 射击游戏安全专题第9章 射击游戏安全 194
9.1 自动开枪 194
9.1.1 易语言简介 195
9.1.2 易语言版自动开枪外挂 195
9.2 反后坐力 199
9.2.1 平衡Y轴法 199
9.2.2 AutoIt脚本法 200
9.3 DirectX Hack 203
9.3.1 DirectX简介 203
9.3.2 用Direct3D绘制图形 209
9.3.3 D3D9的Hack点 211
9.3.4 D3D9 Hook 214
9.4 本章小结 222
第5篇 外挂检测技术篇 224
第10章 外挂的检测方法 224
10.1 代码篡改检测 224
10.2 未授权调用检测 227
10.3 数据篡改检测 229
10.3.1 吸怪挂分析 229
10.3.2 线程转移和消息分流 230
10.4 本章小结 238
附录A 声明 239
附录B 中国计算机安全相关法律及规定 240