九陰真經 iOS黑客攻防秘籍

陳德

  • 九陰真經 iOS黑客攻防秘籍-preview-1
  • 九陰真經 iOS黑客攻防秘籍-preview-2
九陰真經 iOS黑客攻防秘籍-preview-1

買這商品的人也買了...

商品描述

本書內容易於理解,可以讓讀者循序漸進、系統性地學習iOS 安全技術。書中首先細致地介紹了越獄環境的開發與逆向相關工具,然後依次講解了匯編基礎、動態調試、靜態分析、註入與hook、文件格式,最後為大家呈現了應用破解與應用保護、隱私獲取與取證、刷量與作弊、唯一設備ID、寫殼內幕等多個主題。

作者簡介

陳德
安全專家,軟件安全研究員。2007年開始自學安全技術,在安全領域精通多方面技術,個人作品有eXfaker、FileMonitorKit和SystemKit等。

目錄大綱

第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越獄與Cydia 8 
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 
4.2.5修改程序的執行流程52 
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檢查Bundle identifier 273 
12.5.2檢查來源是否為App Store 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