Skip to content

Latest commit

 

History

History
368 lines (313 loc) · 10.8 KB

BOK-0027-A-Tencent-GAD-《手游安全技术入门》.md

File metadata and controls

368 lines (313 loc) · 10.8 KB

腾讯 GAD - 《游戏安全:手游安全技术入门》

  • 《游戏安全:手游安全技术入门》
  • 腾讯 GAD 游戏开发者平台
  • 2016 年 6 月第 1 版

第 1 篇 概述篇

第 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 章 外挂的定义、分类及实现原理

  • 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 章 手游外挂技术汇总

  • 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

第 2 篇 环境搭建篇

第 4 章 开发环境搭建

  • 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 章 调试环境搭建

  • 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 章 工具汇总与使用

  • 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

第 3 篇 游戏基础篇

第 7 章 手游开发基础概述

  • 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 章 游戏引擎的基本概念及常见引擎介绍

  • 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 章 游戏漏洞概述

  • 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

第 4 篇 逆向篇

第 10 章 静态分析

  • 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 章 动态分析

  • 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

第 5 篇 开发篇

第 12 章 定制化外挂开发流程

  • 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 章 注入技术的实现原理

  • 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 章 Hook技术的实现原理

  • 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 章 游戏进程的模块信息获取

  • 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 章 篡改游戏内容的实现原理

  • 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 章 反调试技术

  • 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

第 6 篇 实战篇

第 18 章 游戏逆向分析实战篇

  • 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 章 外挂逆向分析实战——《雷霆战机》圈圈外挂分析

  • 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 章 外挂开发实战——《2048》手游快速通关功能分析及开发

  • 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 章 Unity 3D 引擎逆向分析

  • 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)