内容简介
第1篇 概述篇
第1章 手游面临的安全风险
1.1 静态修改文件
1.1.1 修改游戏资源
1.1.2 修改代码
1.1.3 修改配置
1.2 动态篡改逻辑
1.2.1 修改代码
1.2.2 修改数据
1.3 游戏协议
1.3.1 篡改游戏协议
1.3.2 重发游戏协议
1.4 游戏盗号
1.5 恶意发言
1.6 工作室
1.7 小结
第2章 外挂的定义、分类及实现原理
2.1 外挂的定义
2.2 外挂的分类
2.2.1 辅助版外挂
2.2.2 破解版外挂
2.3 外挂的实现原理
2.3.1 辅助版外挂的实现原理
2.3.2 破解版外挂的实现原理
2.4 小结
第3章 手游外挂技术汇总
3.1 ARM汇编
3.2 C、C++语言
3.3 Android开发
3.4 iOS开发
3.5 了解常用的游戏引擎
3.6 静态分析(IDA分析)
3.7 动态分析(Android、iOS调试)
3.8 有必要了解的其他编程语言
3.9 静态修改
3.10 动态修改
3.11 小结
第2篇 环境搭建篇
第4章 开发环境搭建
4.1 Android开发环境搭建
4.1.1 Cygwin环境搭建
4.1.2 Eclipse环境搭建
4.1.3 Android平台的Native程序编写
4.1.4 Android Native程序的NDK编译
4.1.5 Android Native程序的加载运行
4.2 iOS Xcode开发环境搭建
4.2.1 下载Xcode
4.2.2 真机部署
4.3 iOS越狱开发环境搭建
4.3.1 Theos越狱开发环境搭建
4.3.2 iOSOpenDev下载与安装
4.3.3 如何创建和编译iOS动态库文件
4.3.4 如何加载、运行iOS动态库
4.4 小结
第5章 调试环境搭建
5.1 Android平台调试环境的搭建
5.2 iOS 32位调试环境的搭建
5.2.1 软件安装
5.2.2 iOS 32位程序的调试
5.3 iOS 64位程序调试环境的搭建
5.3.1 iPhone设备的CPU类型介绍
5.3.2 lldb环境搭建
5.3.3 lldb调试介绍
5.4 小结
第6章 工具汇总与使用
6.1 IDA Pro
6.1.1 用IDA加载可执行文件
6.1.2 用IDA分析可执行文件
6.1.3 IDA功能界面
6.2 APKTool工具
6.2.1 反编译APK文件
6.2.2 重打包APK文件
6.3 ILSpy 工具
6.3.1 加载文件
6.3.2 保存反编译代码
6.4 MachOView 工具
6.4.1 加载Mach-O文件
6.4.2 文件头信息
6.4.3 加密信息获取
6.5 MobileSubStrate 工具组件
6.5.1 MobileHooker
6.5.2 MobileLoader
6.5.3 Safe Mode
6.6 小结
第3篇 游戏基础篇
第7章 手游开发基础概述
7.1 游戏玩法与分类
7.1.1 MMORPG类游戏
7.1.2 FPS类游戏
7.1.3 ARPG类游戏
7.1.4 卡牌类游戏
7.1.5 RTS类游戏
7.1.6 消除类游戏
7.1.7 MOBA类游戏
7.1.8 跑酷类游戏
7.2 游戏系统及开发的相关概念
7.2.1 手游系统的组成
7.2.2 手游开发语言
7.2.3 手游网络模式
7.3 小结
第8章 游戏引擎的基本概念及常见引擎介绍
8.1 什么是游戏引擎
8.2 游戏引擎子系统
8.2.1 渲染系统
8.2.2 音频系统
8.2.3 物理系统
8.2.4 人工智能
8.3 常用手游引擎
8.3.1 Cocos2D引擎
8.3.2 Unity3D引擎
8.4 小结
第9章 游戏漏洞概述
9.1 游戏安全漏洞的基本概念
9.1.1 游戏逻辑漏洞
9.1.2 游戏协议稳定型漏洞
9.1.3 游戏服务端校验疏忽型漏洞
9.2 游戏漏洞风险点分类
9.2.1 手游常见类型
9.2.2 手游风险
9.3 小结
第4篇 逆向篇
第10章 静态分析
10.1 ARM反汇编速成
10.1.1 ARM体系简介
10.1.2 ARM指令样例解析
10.1.3 Thumb指令简述
10.1.4 函数传参
10.1.5 浮点数基础
10.2 Android平台的ELF文件格式
10.2.1 文件头信息
10.2.2 程序头信息
10.2.3 节表头信息
10.3 iOS平台的Mach-O文件格式
10.3.1 文件头格式
10.3.2 Load Command信息
10.4 IDA静态分析
10.4.1 IDA启动及加载文件
10.4.2 IDA静态分析主界面及窗口
10.4.3 用IDA保存静态分析结果
10.4.4 IDA静态分析的常用功能及快捷键
10.5 小结
第11章 动态分析
11.1 Android平台的IDA动态调试
11.1.1 启动IDA调试器
11.1.2 加载Android原生动态链接库
11.1.3 动态调试主界面
11.1.4 IDA动态调试断点和脚本功能
11.1.5 IDA动态调试修改数据功能
11.1.6 用IDA调试器修改代码
11.2 iOS平台中的GDB动态调试
11.2.1 用GDB加载调试程序
11.2.2 GDB常用的调试功能
11.3 iOS平台的lldb动态调试
11.3.1 用lldb加载调试程序
11.3.2 lldb的调试功能
11.3.3 其他功能
11.4 小结
第5篇 开发篇
第12章 定制化外挂开发流程
12.1 什么是定制化外挂
12.2 定制化外挂开发的基础流程
12.3 定制化外挂开发各环节介绍
12.3.1 逆向分析游戏逻辑
12.3.2 验证外挂功能是否可行
12.3.3 注入游戏进程
12.3.4 枚举游戏进程模块
12.3.5 Hook关键函数
12.3.6 游戏内存数据修改
12.3.7 反调试功能
12.4 小结
第13章 注入技术的实现原理
13.1 什么是进程注入技术
13.2 Android平台下ptrace注入技术的实现
13.2.1 ptrace函数介绍
13.2.2 ptrace注入进程流程
13.2.3 ptrace注入的实现
13.2.4 ptrace注入实例测试
13.3 Android平台下Zygote注入技术的实现
13.3.1 Zygote注入技术的原理
13.3.2 Zygote注入技术的实现流程
13.3.3 Zygote注入器的实现方式
13.3.4 注入Zygote的模块功能实现
13.3.5 Zygote注入实例测试
13.4 Android平台感染ELF文件的注入技术实现
13.4.1 ELF文件的格式
13.4.2 感染ELF文件的注入实现原理
13.4.3 感染ELF文件的注入实现过程
13.4.4 感染ELF文件的注入实例分析
13.4.5 感染ELF文件的注入编程实现
13.4.6 感染ELF文件的注入实例测试
13.5 iOS平台越狱环境的注入实现
13.5.1 利用Theos环境创建注入工程
13.5.2 工程文件说明
13.5.3 编译和安装
13.5.4 iOS注入原理介绍
13.6 小结
第14章 Hook技术的实现原理
14.1 Hook技术简介
14.2 Android平台基于异常的Hook实现
14.2.1 基于异常Hook的实现原理
14.2.2 Android平台基于异常Hook的实现流程
14.2.3 基于异常Hook的实现代码
14.2.4 基于异常Hook的实例测试
14.3 Android平台的Inline Hook实现
14.3.1 Inline Hook的实现原理
14.3.2 Inline Hook的实现流程
14.3.3 Inline Hook的实现代码
14.3.4 Inline Hook的实例测试
14.4 Android平台下导入表 Hook的实现
14.4.1 导入表Hook的实现原理
14.4.2 导入表Hook的实现流程
14.4.3 导入表Hook的实现代码
14.4.4 Android平台下导入表Hook的实例测试
14.5 小结
第15章 游戏进程的模块信息获取
15.1 Android平台进程模块的信息获取
15.1.1 Android内存模块遍历的原理
15.1.2 Android内存模块遍历的实现
15.1.3 实例测试
15.2 iOS平台进程模块信息的获取
15.2.1 Dyld API遍历模块的原理
15.2.2 Dyld API遍历模块实现
15.2.3 通过内存遍历法获取模块的原理
15.2.4 通过内存遍历法获取模块信息的实现
15.2.5 实例测试
15.3 小结
第16章 篡改游戏内容的实现原理
16.1 游戏内容读写方式分类
16.2 非注入式篡改
16.2.1 篡改APK安装包
16.2.2 篡改游戏的安装目录文件
16.2.3 篡改“/proc/”目录文件
16.3 注入式篡改
16.3.1 篡改内存数据
16.3.2 篡改逻辑代码
16.3.3 注入式篡改代码实例讲解
16.4 小结
第17章 反调试技术
17.1 Android平台的常规反调试技术
17.1.1 Android平台的Self-Debugging反调试方案
17.1.2 Android平台的轮询检测反调试方案
17.1.3 Android平台Java层的反调试技术
17.2 iOS平台的反调试技术
17.2.1 iOS平台拒绝被附加反调试方案
17.2.2 iOS平台的轮询检测反调试方案
17.3 小结
第6篇 实战篇
第18章 游戏逆向分析实战篇
18.1 C++游戏分析实战篇
18.1.1 C++游戏识别
18.1.2 C++基础
18.1.3 C++游戏的逆向分析方法
18.1.4 C++游戏的破解思路
18.1.5 C++游戏逆向分析实战篇——《雷霆战机》无敌和秒杀功能分析
18.2 Unity 3D游戏分析实战篇
18.2.1 识别Unity 3D游戏
18.2.2 Unity 3D游戏的破解方法
18.2.3 Unity 3D游戏分析涉及的工具
18.2.4 Unity 3D游戏分析实战篇 ——《星河战神》的无限冲刺功能分析
18.3 Lua游戏分析实战
18.3.1 识别Lua游戏
18.3.2 破解Lua游戏的方法
18.3.3 常用工具
18.3.4 Lua游戏实战——破解《疾风猎人》的Lua代码
18.3.5 Lua游戏分析实战——破解《游龙英雄》的Lua代码
18.4 小结
第19章 外挂逆向分析实战——《雷霆战机》圈圈外挂分析
19.1 外挂整体分析
19.2 外挂注入功能分析
19.2.1 com.oozhushou-l.apk文件分析
19.2.2 hhloader模块分析
19.2.3 外挂注入的实现方式
19.3 外挂作弊功能分析
19.3.1 秒杀功能的实现分析
19.3.2 忽略伤害功能的实现分析
19.3.3 护盾延迟功能的实现分析
19.4 小结
第20章 外挂开发实战——《2048》手游快速通关功能分析及开发
20.1 游戏功能分析
20.1.1 功能可行性分析
20.1.2 游戏引擎的确认
20.1.3 关键逻辑的逆向分析
20.2 外挂功能的实现
20.2.1 实现思路
20.2.2 实现原理
20.2.3 实现流程
20.2.4 实现代码
20.3 测试结果
20.4 小结
第21章 Unity 3D引擎逆向分析
21.1 Unity 3D引擎概述
21.2 Android平台Unity 3D引擎的Mono机制分析
21.2.1 Mono介绍
21.2.2 Mono主框架的执行流程
21.2.3 C#函数调用的执行过程
21.3 iOS平台的Unity 3D引擎IL2CPP机制分析
21.3.1 IL2CPP机制生成代码的对比
21.3.2 逆向分析IL2CPP机制中C#函数的调用方式
21.3.3 Unity 3D引擎的IL2CPP机制安全性分析
21.4 Unity 3D引擎AB机制分析及《天天来战》AB包还原
21.4.1 Unity 3D的AB打包实现
21.4.2 C#脚本的AB包加载及运行过程
21.4.3 《天天来战》游戏的AB包处理方式分析及还原
21.5 小结