- 《游戏安全:手游安全技术入门》
腾讯 GAD 游戏开发者平台
- 2016 年 6 月第 1 版
- 1.1静态修改文件3
- 1.1.1修改游戏资源3
- 1.1.2修改代码4
- 1.1.3修改配置4
- 1.2动态篡改逻辑4
- 1.2.1修改代码5
- 1.2.2修改数据6
- 1.3游戏协议6
- 1.3.1篡改游戏协议6
- 1.3.2重发游戏协议7
- 1.4游戏盗号7
- 1.5恶意发言8
- 1.6工作室8
- 1.7小结8
- 2.1外挂的定义9
- 2.2外挂的分类10
- 2.2.1辅助版外挂10
- 2.2.2破解版外挂15
- 2.3外挂的实现原理15
- 2.3.1辅助版外挂的实现原理16
- 2.3.2破解版外挂的实现原理17
- 2.4小结18
- 3.1ARM汇编19
- 3.2C、C++语言19
- 3.3Android开发20
- 3.4iOS开发20
- 3.5了解常用的游戏引擎20
- 3.6静态分析(IDA分析)21
- 3.7动态分析(Android、iOS调试)21
- 3.8有必要了解的其他编程语言21
- 3.9静态修改22
- 3.10动态修改22
- 3.11小结22
- 4.1Android开发环境搭建24
- 4.1.1Cygwin环境搭建24
- 4.1.2Eclipse环境搭建27
- 4.1.3Android平台的Native程序编写29
- 4.1.4Android Native程序的NDK编译30
- 4.1.5Android Native程序的加载运行30
- 4.2iOS Xcode开发环境搭建31
- 4.2.1下载Xcode31
- 4.2.2真机部署32
- 4.3iOS越狱开发环境搭建33
- 4.3.1Theos越狱开发环境搭建34
- 4.3.2iOSOpenDev下载与安装35
- 4.3.3如何创建和编译iOS动态库文件36
- 4.3.4如何加载、运行iOS动态库37
- 4.4小结38
- 5.1Android平台调试环境的搭建39
- 5.2iOS32位调试环境的搭建41
- 5.2.1软件安装41
- 5.2.2iOS32位程序的调试42
- 5.3iOS64位程序调试环境的搭建44
- 5.3.1iPhone设备的CPU类型介绍44
- 5.3.2lldb环境搭建45
- 5.3.3lldb调试介绍46
- 5.4小结48
- 6.1IDAPro49
- 6.1.1用IDA加载可执行文件50
- 6.1.2用IDA分析可执行文件52
- 6.1.3IDA功能界面54
- 6.2APKTool工具61
- 6.2.1反编译APK文件62
- 6.2.2重打包APK文件63
- 6.3ILSpy工具64
- 6.3.1加载文件64
- 6.3.2保存反编译代码65
- 6.4MachOView工具66
- 6.4.1加载Mach—O文件67
- 6.4.2文件头信息68
- 6.4.3加密信息获取69
- 6.5MobileSubStrate工具组件70
- 6.5.1MobileHooker71
- 6.5.2MobileLoader71
- 6.5.3SafeMode72
- 6.6小结72
- 7.1游戏玩法与分类74
- 7.1.1MMORPG类游戏75
- 7.1.2FPS类游戏77
- 7.1.3ARPG类游戏78
- 7.1.4卡牌类游戏79
- 7.1.5RTS类游戏79
- 7.1.6消除类游戏80
- 7.1.7MOBA类游戏81
- 7.1.8跑酷类游戏81
- 7.2游戏系统及开发的相关概念82
- 7.2.1手游系统的组成82
- 7.2.2手游开发语言88
- 7.2.3手游网络模式88
- 7.3小结89
- 8.1什么是游戏引擎90
- 8.2游戏引擎子系统91
- 8.2.1渲染系统91
- 8.2.2音频系统92
- 8.2.3物理系统93
- 8.2.4人工智能93
- 8.3常用手游引擎94
- 8.3.1Cocos2D引擎94
- 8.3.2Unity3D引擎95
- 8.4小结96
- 9.1游戏安全漏洞的基本概念97
- 9.1.1游戏逻辑漏洞98
- 9.1.2游戏协议稳定型漏洞98
- 9.1.3游戏服务端校验疏忽型漏洞99
- 9.2游戏漏洞风险点分类99
- 9.2.1手游常见类型99
- 9.2.2手游风险100
- 9.3小结104
- 10.1ARM反汇编速成106
- 10.1.1ARM体系简介106
- 10.1.2ARM指令样例解析107
- 10.1.3Thumb指令简述110
- 10.1.4函数传参111
- 10.1.5浮点数基础111
- 10.2Android平台的ELF文件格式113
- 10.2.1文件头信息114
- 10.2.2程序头信息115
- 10.2.3节表头信息117
- 10.3iOS平台的Mach—O文件格式118
- 10.3.1文件头格式119
- 10.3.2Load Command信息121
- 10.4IDA静态分析123
- 10.4.1IDA启动及加载文件123
- 10.4.2IDA静态分析主界面及窗口124
- 10.4.3用IDA保存静态分析结果128
- 10.4.4IDA静态分析的常用功能及快捷键129
- 10.5小结132
- 11.1Android平台的IDA动态调试133
- 11.1.1启动IDA调试器133
- 11.1.2加载Android原生动态链接库135
- 11.1.3动态调试主界面138
- 11.1.4IDA动态调试断点和脚本功能139
- 11.1.5IDA动态调试修改数据功能141
- 11.1.6用IDA调试器修改代码143
- 11.2iOS平台中的GDB动态调试144
- 11.2.1用GDB加载调试程序144
- 11.2.2GDB常用的调试功能146
- 11.3iOS平台的lldb动态调试151
- 11.3.1用lldb加载调试程序151
- 11.3.2lldb的调试功能154
- 11.3.3其他功能157
- 11.4小结158
- 12.1什么是定制化外挂160
- 12.2定制化外挂开发的基础流程161
- 12.3定制化外挂开发各环节介绍161
- 12.3.1逆向分析游戏逻辑162
- 12.3.2验证外挂功能是否可行162
- 12.3.3注入游戏进程163
- 12.3.4枚举游戏进程模块163
- 12.3.5Hook关键函数163
- 12.3.6游戏内存数据修改164
- 12.3.7反调试功能164
- 12.4小结165
- 13.1什么是进程注入技术166
- 13.2Android平台下ptrace注入技术的实现167
- 13.2.1ptrace函数介绍167
- 13.2.2ptrace注入进程流程168
- 13.2.3ptrace注入的实现169
- 13.2.4ptrace注入实例测试173
- 13.3Android平台下Zygote注入技术的实现174
- 13.3.1Zygote注入技术的原理174
- 13.3.2Zygote注入技术的实现流程174
- 13.3.3Zygote注入器的实现方式175
- 13.3.4注入Zygote的模块功能实现182
- 13.3.5Zygote注入实例测试182
- 13.4Android平台感染ELF文件的注入技术实现184
- 13.4.1ELF文件的格式185
- 13.4.2感染ELF文件的注入实现原理186
- 13.4.3感染ELF文件的注入实现过程187
- 13.4.4感染ELF文件的注入实例分析188
- 13.4.5感染ELF文件的注入编程实现192
- 13.4.6感染ELF文件的注入实例测试194
- 13.5iOS平台越狱环境的注入实现195
- 13.5.1利用Theos环境创建注入工程195
- 13.5.2工程文件说明196
- 13.5.3编译和安装200
- 13.5.4iOS注入原理介绍202
- 13.6小结203
- 14.1Hook技术简介205
- 14.2Android平台基于异常的Hook实现206
- 14.2.1基于异常Hook的实现原理206
- 14.2.2Android平台基于异常Hook的实现流程207
- 14.2.3基于异常Hook的实现代码208
- 14.2.4基于异常Hook的实例测试212
- 14.3Android平台的Inline Hook实现214
- 14.3.1Inline Hook的实现原理214
- 14.3.2Inline Hook的实现流程215
- 14.3.3Inline Hook的实现代码216
- 14.3.4Inline Hook的实例测试220
- 14.4Android平台下导入表Hook的实现224
- 14.4.1导入表Hook的实现原理224
- 14.4.2导入表Hook的实现流程224
- 14.4.3导入表Hook的实现代码225
- 14.4.4Android平台下导入表Hook的实例测试229
- 14.5小结230
- 15.1Android平台进程模块的信息获取231
- 15.1.1Android内存模块遍历的原理232
- 15.1.2Android内存模块遍历的实现233
- 15.1.3实例测试236
- 15.2iOS平台进程模块信息的获取237
- 15.2.1DyldAPI遍历模块的原理237
- 15.2.2DyldAPI遍历模块实现239
- 15.2.3通过内存遍历法获取模块的原理239
- 15.2.4通过内存遍历法获取模块信息的实现241
- 15.2.5实例测试247
- 15.3小结249
- 16.1游戏内容读写方式分类250
- 16.2非注入式篡改251
- 16.2.1篡改APK安装包251
- 16.2.2篡改游戏的安装目录文件253
- 16.2.3篡改“/proc/”目录文件253
- 16.3注入式篡改258
- 16.3.1篡改内存数据259
- 16.3.2篡改逻辑代码259
- 16.3.3注入式篡改代码实例讲解260
- 16.4小结263
- 17.1Android平台的常规反调试技术264
- 17.1.1Android平台的Self—Debugging反调试方案265
- 17.1.2Android平台的轮询检测反调试方案268
- 17.1.3Android平台Java层的反调试技术270
- 17.2iOS平台的反调试技术270
- 17.2.1iOS平台拒绝被附加反调试方案271
- 17.2.2iOS平台的轮询检测反调试方案272
- 17.3小结273
- 18.1C++游戏分析实战篇276
- 18.1.1C++游戏识别277
- 18.1.2C++基础278
- 18.1.3C++游戏的逆向分析方法279
- 18.1.4C++游戏的破解思路281
- 18.1.5C++游戏逆向分析实战篇——《雷霆战机》无敌和秒杀功能分析281
- 18.2Unity3D游戏分析实战篇289
- 18.2.1识别Unity3D游戏289
- 18.2.2Unity3D游戏的破解方法290
- 18.2.3Unity3D游戏分析涉及的工具291
- 18.2.4Unity3D游戏分析实战篇——《星河战神》的无限冲刺功能分析292
- 18.3Lua游戏分析实战295
- 18.3.1识别Lua游戏295
- 18.3.2破解Lua游戏的方法296
- 18.3.3常用工具298
- 18.3.4Lua游戏实战——破解《疾风猎人》的Lua代码298
- 18.3.5Lua游戏分析实战——破解《游龙英雄》的Lua代码300
- 18.4小结302
- 19.1外挂整体分析303
- 19.2外挂注入功能分析304
- 19.2.1com.oozhushou—1.apk文件分析304
- 19.2.2hhloader模块分析309
- 19.2.3外挂注入的实现方式311
- 19.3外挂作弊功能分析312
- 19.3.1秒杀功能的实现分析312
- 19.3.2忽略伤害功能的实现分析315
- 19.3.3护盾延迟功能的实现分析316
- 19.4小结317
- 20.1游戏功能分析318
- 20.1.1功能可行性分析318
- 20.1.2游戏引擎的确认320
- 20.1.3关键逻辑的逆向分析320
- 20.2外挂功能的实现326
- 20.2.1实现思路326
- 20.2.2实现原理327
- 20.2.3实现流程327
- 20.2.4实现代码328
- 20.3测试结果329
- 20.4小结330
- 21.1Unity3D引擎概述332
- 21.2Android平台Unity3D引擎的Mono机制分析333
- 21.2.1Mono介绍333
- 21.2.2Mono主框架的执行流程334
- 21.2.3C#函数调用的执行过程335
- 21.3iOS平台的Unity3D引擎IL2CPP机制分析338
- 21.3.1IL2CPP机制生成代码的对比338
- 21.3.2逆向分析IL2CPP机制中C#函数的调用方式342
- 21.3.3Unity3D引擎的IL2CPP机制安全性分析347
- 21.4Unity3D引擎AB机制分析及《天天来战》AB包还原349
- 21.4.1Unity3D的AB打包实现349
- 21.4.2C#脚本的AB包加载及运行过程351
- 21.4.3《天天来战》游戏的AB包处理方式分析及还原352
- 21.5小结358
change log:
- 创建(2018-09-14)