描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787121287831丛书名: GAD游戏学院系列丛书
随着移动互联网的日益普及,业内对移动安全领域的专业人才的需求逐年增加,而该领域的专业人才相对匮乏,很多开发人员和有志于从事相关行业的在校学生等一直缺少相关的参考资料和书籍。作为移动安全领域的入门书籍,本书以移动端(涵盖了Android 和iOS 两大平台)的游戏逆向分析和外挂技术为切入点,详细讲述了手游安全领域的诸多基础知识和技能,包括:移动端开发和调试环境搭建、典型的移动游戏特性、与外挂相关的安全开发技术、游戏和外挂的逆向分析方法、外挂开发实战演练、游戏引擎逆向分析等内容,书中的部分源代码可免费从网上下载。读者在掌握本书的内容之后,便可入门手游安全领域,同时可以很容易地将在本书中学到的知识扩展至移动端的其他领域,例如:安全方案开发、病毒分析、软件逆向及保护等。
第1 章 手游面临的安全风险 2
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 章 外挂的定义、分类及实现原理 9
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 章 手游外挂技术汇总 19
3.1 ARM 汇编 19
3.2 C、C 语言 19
3.3 Android 开发 20
3.4 iOS 开发 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 篇 环境搭建篇 23
第4 章 开发环境搭建 24
4.1 Android 开发环境搭建 24
4.1.1 Cygwin 环境搭建 24
4.1.2 Eclipse 环境搭建 27
4.1.3 Android 平台的Native 程序编写 29
4.1.4 Android Native 程序的NDK 编译 30
4.1.5 Android Native 程序的加载运行 30
4.2 iOS Xcode 开发环境搭建 31
4.2.1 下载Xcode 31
4.2.2 真机部署 32
4.3 iOS 越狱开发环境搭建 33
4.3.1 Theos 越狱开发环境搭建 34
4.3.2 iOSOpenDev 下载与安装 35
4.3.3 如何创建和编译iOS 动态库文件 36
4.3.4 如何加载、运行iOS 动态库 37
4.4 小结 38
第 5 章 调试环境搭建 39
5.1 Android 平台调试环境的搭建 39
5.2 iOS 32 位调试环境的搭建 41
5.2.1 软件安装 41
5.2.2 iOS 32 位程序的调试 42
5.3 iOS 64 位程序调试环境的搭建 44
5.3.1 iPhone 设备的CPU 类型介绍 44
5.3.2 lldb 环境搭建 45
5.3.3 lldb 调试介绍 46
5.4 小结 48
第 6 章 工具汇总与使用 49
6.1 IDA Pro 49
6.1.1 用IDA 加载可执行文件 50
6.1.2 用IDA 分析可执行文件 52
6.1.3 IDA 功能界面 54
6.2 APKTool 工具 61
6.2.1 反编译APK 文件 62
6.2.2 重打包APK 文件 63
6.3 ILSpy 工具 64
6.3.1 加载文件 64
6.3.2 保存反编译代码 65
6.4 MachOView 工具 66
6.4.1 加载Mach-O 文件 67
6.4.2 文件头信息 68
6.4.3 加密信息获取 69
6.5 MobileSubStrate 工具组件 70
6.5.1 MobileHooker 71
6.5.2 MobileLoader 71
6.5.3 Safe Mode 72
6.6 小结 72
第 3 篇 游戏基础篇 73
第7 章 手游开发基础概述 74
7.1 游戏玩法与分类 74
7.1.1 MMORPG 类游戏 75
7.1.2 FPS 类游戏 77
7.1.3 ARPG 类游戏 78
7.1.4 卡牌类游戏 79
7.1.5 RTS 类游戏 79
7.1.6 消除类游戏 80
7.1.7 MOBA 类游戏 81
7.1.8 跑酷类游戏 81
7.2 游戏系统及开发的相关概念 82
7.2.1 手游系统的组成 82
7.2.2 手游开发语言 88
7.2.3 手游网络模式 88
7.3 小结 89
第 8 章 游戏引擎的基本概念及常见引擎介绍 90
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.1 Cocos2D 引擎 94
8.3.2 Unity 3D 引擎 95
8.4 小结 96
第 9 章 游戏漏洞概述 97
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 篇 逆向篇 105
第10 章 静态分析 106
10.1 ARM 反汇编速成 106
10.1.1 ARM 体系简介 106
10.1.2 ARM 指令样例解析 107
10.1.3 Thumb 指令简述 110
10.1.4 函数传参 111
10.1.5 浮点数基础 111
10.2 Android 平台的ELF 文件格式 113
10.2.1 文件头信息 114
10.2.2 程序头信息 115
10.2.3 节表头信息 117
10.3 iOS 平台的Mach-O 文件格式 118
10.3.1 文件头格式 119
10.3.2 Load Command 信息 121
10.4 IDA 静态分析 123
10.4.1 IDA 启动及加载文件 123
10.4.2 IDA 静态分析主界面及窗口 124
10.4.3 用IDA 保存静态分析结果 128
10.4.4 IDA 静态分析的常用功能及快捷键 129
10.5 小结 132
第 11 章 动态分析 133
11.1 Android 平台的IDA 动态调试 133
11.1.1 启动IDA 调试器 133
11.1.2 加载Android 原生动态链接库 135
11.1.3 动态调试主界面 138
11.1.4 IDA 动态调试断点和脚本功能 139
11.1.5 IDA 动态调试修改数据功能 141
11.1.6 用IDA 调试器修改代码 143
11.2 iOS 平台中的GDB 动态调试 144
11.2.1 用GDB 加载调试程序 144
11.2.2 GDB 常用的调试功能 146
11.3 iOS 平台的lldb 动态调试 151
11.3.1 用lldb 加载调试程序 151
11.3.2 lldb 的调试功能 154
11.3.3 其他功能 157
11.4 小结 158
第 5 篇 开发篇 159
第12 章 定制化外挂开发流程 160
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.5 Hook 关键函数 163
12.3.6 游戏内存数据修改 164
12.3.7 反调试功能 164
12.4 小结 165
第 13 章 注入技术的实现原理 166
13.1 什么是进程注入技术 166
13.2 Android 平台下ptrace 注入技术的实现 167
13.2.1 ptrace 函数介绍 167
13.2.2 ptrace 注入进程流程 168
13.2.3 ptrace 注入的实现 169
13.2.4 ptrace 注入实例测试 173
13.3 Android 平台下Zygote 注入技术的实现 174
13.3.1 Zygote 注入技术的原理 174
13.3.2 Zygote 注入技术的实现流程 174
13.3.3 Zygote 注入器的实现方式 175
13.3.4 注入Zygote 的模块功能实现 182
13.3.5 Zygote 注入实例测试 182
13.4 Android 平台感染ELF 文件的注入技术实现 184
13.4.1 ELF 文件的格式 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.5 iOS 平台越狱环境的注入实现 195
13.5.1 利用Theos 环境创建注入工程 195
13.5.2 工程文件说明 196
13.5.3 编译和安装 200
13.5.4 iOS 注入原理介绍 202
13.6 小结 203
第 14 章 Hook 技术的实现原理 205
14.1 Hook 技术简介 205
14.2 Android 平台基于异常的Hook 实现 206
14.2.1 基于异常Hook 的实现原理 206
14.2.2 Android 平台基于异常Hook 的实现流程 207
14.2.3 基于异常Hook 的实现代码 208
14.2.4 基于异常Hook 的实例测试 212
14.3 Android 平台的Inline Hook 实现 214
14.3.1 Inline Hook 的实现原理 214
14.3.2 Inline Hook 的实现流程 215
14.3.3 Inline Hook 的实现代码 216
1
十多年前我刚进入游戏行业时,国内做网络游戏的公司屈指可数,那时游戏行业还不被主流社会所接纳,被媒体妖魔化更是家常便饭。游戏的制作者们背负着巨大的舆论压力还能毅然、决然地去做游戏,正是因为他们都是被游戏本身的魅力所征服的资深玩家。只有我们自己知道,游戏是一种非常棒的体验,和看电影、听音乐一样是一种有益的娱乐形式。我知道有很多人不是为了寻求一份高薪工作,也不是看好游戏行业所谓的发展前景,只是出于自己对游戏的热爱,就不顾一切地进入了这个不被世人所理解的行业。
这是不是像极了硅谷创业传奇故事的开头?一群充满激情、创意并且有想法的年轻人执着地、不计回报地做着被世人视为异端的事情。当然,其结局和硅谷创业的结局一样美好。十多年过去了,在这群偏执狂的努力下,我国的游戏行业不论是产业规模还是技术能力,都已经在全世界举足轻重,并且拥有了像腾讯、网易这样能位列整个行业前茅的游戏公司,而游戏也已经上升为国家的战略文化产业。不论在资本、市场还是政策层面,当年人见人躲的“丑小鸭”,如今已通过自己的努力成为阳光下耀眼的“白天鹅”。
腾讯公司在游戏行业耕耘多年,有得也有失,经验和教训都不少。作为行业的龙头老大,腾讯除了自身的发展经营,也肩负着行业责任和社会义务。这套“GAD游戏学院系列丛书”的编纂,汇集了来自腾讯各个不同项目、工作室和部门的游戏制作者的智慧和经验。我们将这些智慧和经验和盘托出,希望能为游戏行业策划新人的成长和能力提高尽到自己的一份力。
现在是好的时代,信息大爆炸与互联网的高速发展极大地消灭了特权,知识的获取高效而简单,为所有人史无前例地创造了一个公平的世界。大家站到了同一个起跑线上,每个有理想的年轻人都有弯道超车的机会,在互联网这条伟大的航路上,游戏行业是你值得上的船!
我们在一个好的时代,任何足够优秀的产品都会被足够多的人热爱!
腾讯公司副总裁
姚晓光
推荐序二
早高峰的地铁上,一名上班族虽然被人群挤压着,可还是艰难地举着手来玩游戏;校园的一个寝室里,室友们大呼小叫,联机到深夜,也在玩游戏;现在,3岁的孩子都会趁大人不玩手机的间隙,熟练地解锁手机来玩手机游戏;甚至与你相隔千里、上了年纪的爸爸妈妈,打电话给你就是为了问他们玩游戏时遇到的问题……游戏已经无差别地进入无数人的生活中,就像吃饭、睡觉一样,每日必做,不可或缺。
随着这些年来游戏政策的解禁、游戏舆论的改变及游戏玩家的成长,从各种意义上讲,玩游戏都成为一种再正常不过的全民娱乐方式了。相应地,从事游戏行业也不再是不务正业,这不仅是一份正经工作,更是一份可以为别人创造快乐和回忆、为自己实现理想和价值的创意性职业。
作为较早入行的游戏人,我非常欣喜地看到有这么多年轻人热爱游戏,想把做游戏作为自己的职业。这些年轻的准游戏人,比我们当年有更多的玩游戏经验,比我们当年有更扎实的游戏科班知识,比我们当年有更广阔的眼界与冲劲。当他们成长为游戏行业的中坚力量时,一定会创造出更多、更有趣、更天马行空和更令人惊叹的作品。未来的游戏是什么样子的,在什么硬件平台上玩,用什么交互方式操作,我无法预测。现在行业里潮的VR、AR游戏,在游戏历史的长河中,也许只是一个片断。游戏的未来充满了未知的机会和无限的可能。
腾讯游戏的诸位资深专家,毫无保留地贡献了自己的工作经验,编写了这套“GAD游戏学院系列丛书”,希望这套丛书能帮助各位准游戏人打开游戏世界的大门。游戏的新世界,由你们来创造!
腾讯公司副总裁
陈宇
前言
随着电子游戏的快速发展,特别是网络游戏的兴起,游戏虚拟社交、PVP 系统、团队协作及高价值的游戏经济系统让游戏真正成为一个虚拟世界。为了不让这个虚拟世界成为法外之地,我们需要建立一套完整的游戏安全体系来解决其中可能面临的安全问题。例如:游戏外挂带来的游戏公平性问题、盗号木马引发的密码泄露和游戏虚拟财产损失、打金工作室对游戏经济系统的冲击等。游戏越流行,对安全的需求就越强烈。通过在《地下城与勇士》《穿越火线》《天天酷跑》等游戏中长期积累的安全运营实战对抗经验,腾讯游戏安全团队不断完善游戏安全系统,并希望通过编写一系列游戏安全书籍(本书是其中之一)来沉淀和分享我们的经验。
游戏外挂是突出、难以解决的游戏安全问题。游戏设计上的安全缺陷、服务器校验的缺失及特定的游戏玩法等都可能引入容易被外挂利用的游戏安全漏洞。对于外挂问题,我们几乎不可能通过一套安全系统彻底解决,往往需要长期的持续运营,对于代理的海外游戏更是如此。除了反外挂系统的开发,在游戏研发中如何提升游戏的基础安全性,在运营中如何建立高效的外挂监控、打击流程,如何训练检测模型并结合各种处罚手段来提高使用外挂的门槛,等等,这些都是我们在实际运营中必须要考虑的问题。
腾讯游戏安全团队从2013 年开始,随着微信、手Q 游戏平台的建立,启动了筹备移动游戏反外挂的方案。早期上线的休闲类游戏虽然通过外挂获取的收益不高,但由于用户群庞大,而且早期游戏的基础安全性不高,所以热门游戏还是经历了一波外的强烈攻势。从原始的内存修改器发展到专用外挂、内含外挂逻辑的重打包游戏安装包,虽然外挂的使用量已经回落到很低的水平,但是对抗仍然在持续。现在,外挂反对抗的手段不断复杂化,表现出直接对抗安全方案的特点,未来可能趋向于PC端的更加复杂的外挂对抗形式。随着移动游戏玩法不断重度化的发展趋势,游戏领域势必会引入更多的PVP 玩法及更自由的游戏虚拟财产交易模式,移动游戏反外挂对抗任重道远。
知己知彼,百战不殆。反外挂系统具备很强的实战性,为了更深入地理解反外挂系统,我们首先要充分了解外挂的开发流程和工作原理。作为游戏安全领域的入门书籍,本书介绍了移动游戏平台的外挂开发所需要的工具和技能,并梳理了必要的知识框架。希望本书能够为对客户端安全技术、游戏安全技术感兴趣的在校学生及初学者打开游戏安全技术的大门,也欢迎大家通过GSLAB.qq.com 平台来交流和分享关于游戏安全攻防相关的经验和心得。
? 本书内容导读
本书以深入浅出的方式讲解了手游安全领域涉及的移动端安全技术,重点讲解手游外挂技术,并提供部分源代码给读者使用,源代码的下载地址为。本书分为6 篇,共计21 章,以下是对各篇内容的简要介绍。
? 第 1 篇概述篇(第 1~3 章)
概述篇首先介绍了手游面临的安全风险;然后讲解了什么是外挂,并对常见的外挂进行分类和介绍;后汇总了手游外挂涉及的安全技术。
? 第 2 篇环境搭建篇(第 4~6 章)
环境搭建篇首先介绍了移动端开发环境的搭建过程,包括:Android 平台开发环境搭建、iOS 平台非越狱和越狱开发环境搭建;然后介绍了调试环境的搭建过程,包括:Android 平台IDA 调试环境搭建、iOS 平台32 位GDB 调试环境搭建、iOS 平台 64位lldb 调试环境搭建;后介绍了手游安全领域中常用工具的基本使用方法。
? 第 3 篇游戏基础篇(第 7~9 章)
游戏基础篇讲解了入门手游安全所需掌握的游戏基础知识,包括:游戏开发基础知识、引擎的概念、常见引擎简介、游戏漏洞概述及不同游戏类型的漏洞风险分类。
? 第 4 篇逆向篇(第 10~11 章)
逆向篇从静态分析和动态分析两方面展开:静态分析介绍了ARM 汇编的基础知识、Android 平台的ELF 文件格式、iOS 平台的Mach-O 文件格式及IDA 静态分析;动态分析介绍了Android 平台的IDA 动态调试、iOS 平台的GDB 和lldb 动态调试。
? 第 5 篇开发篇(第 12~17 章)
开发篇剖析了在手游外挂开发过程中涉及的安全技术的实现原理,并提供代码配合讲解,干货十足。其中剖析的安全技术包括:注入、Hook、内存篡改、进程信息获取及反调试。
? 第 6 篇实战篇(第 18~21 章)
实战篇首先讲解了不同类型的游戏的分析和破解方法,并且通过实例剖析了各种类型的游戏的分析方法;其次通过实例讲解了手游外挂的分析过程;然后以《2048》游戏为实例,对游戏通关功能进行了分析,并对快速通关的作弊功能进行了实现;后讲解了Unity 3D 引擎的逆向分析,包括:Unity 3D 引擎在iOS 和Android 平台下逻辑代码的编译处理原理、Unity 3D 引擎的AssetBundle 机制的实现原理及《天天来战》游戏的AB 包破解过程。
? 致谢
感谢GAD 游戏学院组织并提供了这样一个写作平台,感谢电子工业出版社博文视点提供了优质的出版平台,感谢所有在本书撰写过程中给予我们帮助和指导的小伙伴们,感谢腾讯互娱的各位领导对这次图书写作工作的重视和支持。
腾讯游戏研发部游戏安全中心
“GAD 游戏学院系列丛书”的各位作者都是腾讯互娱的业务骨干。他们在这次丛书写作中把多年积累的干货倾囊相授,我们可以从书中感受到他们满满的诚意和认真、严谨的态度。希望“GAD 游戏学院系列丛书”能够真正帮助新人学习优秀的知识,让他们少走弯路;并能够为中国游戏行业的持续发展和人才培养贡献自己的力量。
——腾讯高级副总裁马晓轶
软件安全行业从无到有,是随着安全对象的价值变化而逐步发展起来的。病毒和木马的肆意妄为、杀毒软件的兴盛、共享软件的蓬勃发展、壳等保护软件雨后春笋般的出现、端游的大行其道,以及游戏外挂与反外挂系统的流行,这些都让软件安全从业者大显身手。在手游开发技术迅猛发展的今天,手游的安全问题已是需要我们迫切解决的问题,本书的出版非常及时和必要。在游戏安全领域,从新手成长为高手的过程非常艰难,要坐得住冷板凳、耐得住寂寞,还要守得住本心和走正道。本书将会对你大有裨益,值得推荐!
——巨人网络奇点工作室负责人、安全专家卫鹏飞(fly)
无论是出于好奇还是本着学习的态度去阅读本书,本书都不能算作一本通俗读物,而是一本充斥着大量的专业术语和专业知识的书籍。阅读本书,代表你对手游安全有专业的追求和期许,代表你对学习有自我驱动的渴望,因为在专业面前无论是新手还是老手、外行还是内行、跨界还是不跨界都不重要,重要的是做得好与不好、专业与不专业。任何时候,“专业”都是*有说服力的武器,只有专业,才能成为专家,只有专家才能成为赢家。祝大家阅读愉快!
——《软件加密技术内幕》编委、暴风TV CTO、安全专家裴来隆(pll621)
评论
还没有评论。