《九阴真经:iOS黑客攻防秘籍》新书发布
本書內容易于理解,可以讓讀者循序漸進、系統性地學習iOS安全技術。書中首先細致地介紹了越獄環境的開發與逆向相關工具,然后依次講解了匯編基礎、動態調試、靜態分析、注入與hook、文件格式,最后為大家呈現了應用破解與應用保護、隱私獲取與取證、刷量與作弊、唯一設備ID、寫殼內幕等多個主題。
第1章 iOS安全機制 1
1.1 應用的安裝源 1
1.2 沙盒 2
1.3 代碼簽名 3
1.4 用戶權限隔離 4
1.5 數據執行保護 4
1.6 地址隨機化 5
1.7 后臺程序 5
第2章 越獄環境開發工具的準備 8
2.1 越獄與Cydia8
2.2 文件管理工具 10
2.2.1 iFile:在手機上管理文件 10
2.2.2 AFC2:通過 USB 管理手機 文件 10
2.3 命令行工具11
2.3.1 MTerminal:手機中執行命令行 11
2.3.2 OpenSSH:在電腦上執行命令行 12
2.4 代碼注入測試工具 13
2.5 遠程調試工具 14
2.5.1 debugserver 的配置與啟動 14
2.5.2 LLDB 連接 debugserver 及其調試 15
2.5.3 通過 USB 連接 SSH 進行調試 17
2.6 反匯編工具 18
2.6.1 IDA 18
2.6.2 Hopper 21
2.7 其他工具 22
第3章 ARM匯編基礎 30
3.1 ARMv7 30
3.1.1 編寫 32 位匯編代碼 30
3.1.2 寄存器與棧 32
3.1.3 基礎指令 32
3.1.4 條件跳轉與循環 33
3.1.5 函數參數的調用過程 34
3.1.6 Thumb 指令 35
3.2 ARM64 36
3.2.1 編寫64位的匯編代碼 36
3.2.2 寄存器與棧 36
3.2.3 函數參數的調用過程 37
3.3 在Xcode中使用內聯匯編 38
3.3.1 C/C++/Objective-C 調用匯編函數 39
3.3.2 直接編寫內聯匯編 39
第4章 應用逆向分析 41
4.1 尋找 main 函數的入口 41
4.1.1 編寫一個測試程序 41
4.1.2 ARMv7 的 main 函數入口 42
4.1.3 ARM64 的 main 函數入口 43
4.2 動態調試 44
4.2.1 反匯編 44
4.2.2 添加斷點 45
4.2.3 打印數據 50
4.2.4 讀寫數據 51 14
4.2.5 修改程序的執行流程 52 17
4.2.6 查看信息 54
4.2.7 執行到上層調用棧 56
4.2.8 臨時修改變量的值 57
4.2.9 使用幫助與搜索 57
4.3 靜態分析 58
4.3.1 通過字符串定位到代碼的引用位置 58
4.3.2 查看函數被調用的位置 62
4.3.3 重設基地址 63
4.3.4 修改代碼并保存文件 64
4.3.5 使用IDA Python腳本 65
4.4 逆向分析實例 65
第5章 Tweak編寫技術.76
5.1 Theos 開發環境的使用 76
5.1.1 編寫第一個Tweak 76
5.1.2 Theos工程文件 80
5.2 逆向分析與編寫 Tweak 83
5.2.1 逆向分析 83
5.2.2 編寫Tweak 91
第6章 注入與hook 94
6.1 注入動態庫 94
6.1.1 編寫動態庫 94
6.1.2 DynamicLibraries 目錄 95
6.1.3 DYLD_INSERT_LIBRARIES 環境變量 95
6.1.4 不越獄注入動態庫 96
6.2 hook 97
6.2.1 Cydia Substrate 97
6.2.2 Symbol Table 100
6.2.3 Method Swizzing 102
第7章 Mach-O 文件格式解析 104
7.1 Mach-O 文件格式 104
7.1.1 Fat 頭部 106
7.1.2 Mach 頭部 108
7.1.3 Load command 109
7.1.4 符號表與字符串表 122
7.2 CFString 的運行過程 124
7.2.1 編寫測試代碼 124
7.2.2 CFString 的數據結構 125
7.2.3 調試運行過程 126
7.3 Mach-O ARM 函數綁定的調用過程分析 127
7.3.1 編寫測試代碼 127
7.3.2 分析 ARMv7 函數綁定的調用過程 128
7.3.3 分析 ARM64 函數綁定的調用過程 136
7.3.4 總結 140
7.4 靜態庫文件格式 142
7.5 class-dump 導出頭文件的原理 143
7.6 關于Bitcode 147
7.6.1 Bitcode 的作用 148
7.6.2 在Xcode中如何生成Bitcode 148
7.6.3 通過命令行編譯Bitcode 150
7.6.4 將Bitcode編譯成可執行文件 152
7.6.5 編譯器相關參數 153
第8章 唯一設備ID 154
8.1 UDID 與設備 ID 154
8.2 IDFA 157
8.3 IDFV 157
8.4 OpenUDID 158
8.5 SimulateIDFA 159
8.6 MAC 地址 160
8.7 ID 的持久化存儲 163
8.8 DeviceToken 167
第9章 刷量與作弊 168
9.1 越獄環境下獲取root權限 168
9.2 修改手機信息 169
9.2.1 修改基本信息 169
9.2.2 修改 Wi-Fi 信息 176
9.2.3 修改 DeviceToken 177
9.2.4 修改位置信息 178
9.3 清除應用數據 179
9.4 清除 Keychain 181
9.5 清除剪貼板 183
9.6 發布應用 183
9.6.1 將 App 打包成 deb 183
9.6.2 制作 Cydia 源發布應用 184
9.7 權限的切換 185
9.8 變化 IP 地址 186
9.9 反越獄檢測 188
9.10 不用越獄修改任意位置信息.190
9.11 在兩個手機上同時登錄同一微信 192
9.12 微信的62數據 193
第10章 重要信息獲取與取證 195
10.1 通訊錄 195
10.2 短信 196
10.3 通話記錄 197
10.4 位置信息 197
10.5 網絡信息 199
10.6 傳感器信息 206
10.7 系統信息 210
10.8 硬件 ID 信息 214
10.9 已安裝的應用列表 216
10.10 使用 idb 分析泄露的數據 218
10.11 重要的文件與目錄 223
10.12 libimobiledevice 獲取手機信息 226
第11章 應用破解 228
11.1 重打包應用與多開.228
11.1.1 重打包應用 228
11.1.2 多開 235
11.2 應用重簽名 238
11.2.1 代碼簽名 238
11.2.2 授權機制 241
11.2.3 配置文件 243
11.2.4 重簽名 244
11.3 抓包和改包 245
11.3.1 tcpdump 抓包 245
11.3.2 Wireshark 抓包 248
11.3.3 Charles 抓取 HTTPS 數據包 250
11.3.4 Charles 修改數據包與重發 254
11.3.5 突破 SSL 雙向認證 257
11.4 文件監控 258
11.5 破解登錄驗證 259
11.5.1 得到 HTTP 傳輸的數據 259
11.5.2 得到解密的數據 260
11.5.3 破解方法 261
第12章 應用保護 262
12.1 函數名混淆 262
12.2 字符串加密 262
12.3 代碼混淆265
12.3.1 inline 內聯函數 265
12.3.2 obfuscator-llvm 編譯器 266
12.3.3 Xcode 集成配置 obfuscator-llvm 268
12.3.4 Theos 集成配置 obfuscator-llvm 270
12.4 越獄檢測 270
12.4.1 判斷相關文件是否存在 270
12.4.2 直接讀取相關文件 271
12.4.3 使用 stat 函數判斷文件 271
12.4.4 檢查動態庫列表 272
12.4.5 檢查環境變量 272
12.4.6 檢查函數是否被劫持 272
12.5 反盜版 273
12.5.1 檢查Bundleidentifier 273
12.5.2 檢查來源是否為AppStore 273
12.5.3 檢查重簽名 276
12.5.4 代碼校驗 277
12.6 反調試與反反調試.278
12.6.1 反調試方法 279
12.6.2 反反調試 281
12.7 反注入與反反注入 285
第13章 代碼入口點劫持 287
13.1 實現原理 287
13.2 編寫 ShellCode 287
13.2.1 編寫 ARM 匯編 288
13.2.2 計算 main 函數的跳轉地址 292
13.2.3 最終的 ShellCode 294
13.3 插入代碼 295
13.4 修改入口點 296
13.4.1 關于指令切換 296
13.4.2 ARMv7 入口點 297
13.4.3 ARM64 入口點 297
13.5 重簽名 298
第 14 章 寫殼內幕 300
14.1 判斷文件格式類型 300
14.2 代碼的插入 301
14.3 修改程序入口點 303
14.4 Shellcode 如何調用函數 304
14.5 編寫和調試Shellcode 308
14.5.1 ARMv7 Shellcode 309
14.5.2 ARM64 Shellcode 316
14.6 總結 329
第15章 系統相關 331
15.1 Cydia 的相關問題及修復方法 331
15.2 降級傳說334
15.3 訪問限制密碼的安全隱患 335
15.4 掃碼在線安裝應用 338
15.5 CVE-2018-4407 遠程溢出漏洞 344
15.6 解決磁盤空間不足的問題 345
附錄A 書中用到的工具列表 347
關于本書遇到的問題可以在論壇發貼,作者會盡力回復,同時與廣大讀者一起交流學習。
iOS安全技術交流論壇
圈內多位安全專家為本書寫的推薦語
工欲善其事,必先利其器。本書前7章側重入門知識,講解了越獄環境會用到各種工具、ARM匯編基礎以及應用逆向的常見方法等,后面8章側重攻防實戰和技巧。全書連貫,初學者幾乎不用跳章節閱讀。正如本書的書名昭示的那樣,這是一本極負盛名的“武功秘籍”。我強烈推薦各位iOS安全愛好者閱讀這本書,相信它會讓你功能大增。
———— 易小峰,iOS安全研究員
我和陳德相識已經7年,他在攻防和安全方向有著10年以上的從業經歷。這是一本由安全行業一線老兵編寫的圖書,書中條分縷析地講解了iOS安全和應用逆向,披露了“羊毛黨”使用的各種作弊和刷量的方法,揭秘了iOS平臺鮮為人知的寫殼技術。本書內容實用、通俗易懂,非常有助于廣大iOS安全愛好者入門和提高。
———— 李明政,7年安全從業者
本書詳述了目前iOS平臺最流行的軟件攻防技術,是iOS安全領域不可多得的力作。書中的內容集合了前沿安全技術與作者多年的實戰經驗,我相信大家在閱讀本書時會有所收獲。
———— 非蟲,資深軟件安全專家,《macOS軟件安全與逆向分析》作者
總結
以上是生活随笔為你收集整理的《九阴真经:iOS黑客攻防秘籍》新书发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 郭天祥 十天搞定单片机 (1)基础知识和
- 下一篇: java集合试题_java集合练习题及答