遊戲安全——手遊安全技術入門

遊戲安全——手遊安全技術入門

《遊戲安全——手遊安全技術入門 》是電子工業出版社出版的一本圖書。

內容簡介

本書是國內移動遊戲安全領域的開山之作,填補了移動遊戲安全書籍的空白,揭開了移動遊戲外掛的神秘面紗。 隨著移動網際網路的日益普及,業內對移動安全領域的專業人才的需求逐年增加,而該領域的專業人才相對匱乏,很多開發人員和有志於從事相關行業的在校學生等一直缺少相關的參考資料和書籍。作為移動安全領域的入門書籍,本書以移動端(涵蓋了Android 和iOS兩大平台)的遊戲逆向分析和外掛技術為切入點,詳細講述了手遊安全領域的諸多基礎知識和技能,包括:移動端開發和調試環境搭建、典型的移動遊戲特性、與外掛相關的安全開發技術、遊戲和外掛的逆向分析方法、外掛開發實戰演練、遊戲引擎逆向分析等內容,書中的部分原始碼可免費從網上下載。讀者在掌握本書的內容之後,便可入門手遊安全領域,同時可以很容易地將在本書中學到的知識擴展至移動端的其他領域,例如:安全方案開發、病毒分析、軟體逆向及保護等。

圖書目錄

第 1 篇 概述篇 1

第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

14.3.4 Inline Hook 的實例測試 220

14.4 Android 平台下導入表Hook 的實現 224

14.4.1 導入表Hook 的實現原理 224

14.4.2 導入表Hook 的實現流程 224

14.4.3 導入表Hook 的實現代碼 225

14.4.4 Android 平台下導入表Hook 的實例測試 229

14.5 小結 230

第 15 章 遊戲進程的模組信息獲取 231

15.1 Android 平台進程模組的信息獲取 231

15.1.1 Android 記憶體模組遍歷的原理 232

15.1.2 Android 記憶體模組遍歷的實現 233

15.1.3 實例測試 236

15.2 iOS 平台進程模組信息的獲取 237

15.2.1 Dyld API 遍歷模組的原理 237

15.2.2 Dyld API 遍歷模組實現 239

15.2.3 通過記憶體遍曆法獲取模組的原理 239

15.2.4 通過記憶體遍曆法獲取模組信息的實現 241

15.2.5 實例測試 247

15.3 小結 249

第 16 章 篡改遊戲內容的實現原理 250

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 章 反調試技術 264

17.1 Android 平台的常規反調試技術 264

17.1.1 Android 平台的Self-Debugging 反調試方案 265

17.1.2 Android 平台的輪詢檢測反調試方案 268

17.1.3 Android 平台Java 層的反調試技術 270

17.2 iOS 平台的反調試技術 270

17.2.1 iOS 平台拒絕被附加反調試方案 271

17.2.2 iOS 平台的輪詢檢測反調試方案 272

17.3 小結 273

第 6 篇 實戰篇 275

第18 章 遊戲逆向分析實戰篇 276

18.1 C++遊戲分析實戰篇 276

18.1.1 C++遊戲識別 277

18.1.2 C++基礎 278

18.1.3 C++遊戲的逆向分析方法 279

18.1.4 C++遊戲的破解思路 281

18.1.5 C++遊戲逆向分析實戰篇——《雷霆戰機》無敵和秒殺功能分析 281

18.2 Unity 3D 遊戲分析實戰篇 289

18.2.1 識別Unity 3D 遊戲 289

18.2.2 Unity 3D 遊戲的破解方法 290

18.2.3 Unity 3D 遊戲分析涉及的工具 291

18.2.4 Unity 3D 遊戲分析實戰篇——《星河戰神》的無限衝刺功能分析 292

18.3 Lua 遊戲分析實戰 295

18.3.1 識別Lua 遊戲 295

18.3.2 破解Lua 遊戲的方法 296

18.3.3 常用工具 298

18.3.4 Lua 遊戲實戰——破解《疾風獵人》的Lua 代碼 298

18.3.5 Lua 遊戲分析實戰——破解《游龍英雄》的Lua 代碼 300

18.4 小結 302

第 19 章 外掛逆向分析實戰——《雷霆戰機》圈圈外掛分析 303

19.1 外掛整體分析 303

19.2 外掛注入功能分析 304

19.2.1 com.oozhushou-1.apk 檔案分析 304

19.2.2 hhloader 模組分析 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》手遊快速通關功能分析及開發 318

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 章 Unity3D 引擎逆向分析 332

21.1 Unity 3D 引擎概述 332

21.2 Android 平台Unity 3D 引擎的Mono 機制分析 333

21.2.1 Mono 介紹 333

21.2.2 Mono 主框架的執行流程 334

21.2.3 C#函式調用的執行過程 335

21.3 iOS 平台的Unity 3D 引擎IL2CPP 機制分析 338

21.3.1 IL2CPP 機制生成代碼的對比 338

21.3.2 逆向分析IL2CPP 機制中C#函式的調用方式 342

21.3.3 Unity 3D 引擎的IL2CPP 機制安全性分析 347

21.4 Unity 3D 引擎AB 機制分析及《天天來戰》AB 包還原 349

21.4.1 Unity 3D 的AB 打包實現 349

21.4.2 C#腳本的AB 包載入及運行過程 351

21.4.3 《天天來戰》遊戲的AB 包處理方式分析及還原 352

21.5 小結 358

相關詞條

熱門詞條

聯絡我們