《ios應用逆嚮工程:分析與實戰》
推薦序一
推薦序二
自序
前言
第一部分 概念篇
第1 章 ios 逆嚮工程簡介 2
1.1 ios 軟件逆嚮工程的要求 2
1.2 ios 軟件逆嚮工程的作用 2
1.2.1 與安全相關的ios 逆嚮工程 4
1.2.2 與開發相關的ios 逆嚮工程 5
1.3 ios 軟件逆嚮工程的一般過程 6
1.3.1 係統分析 7
1.3.2 代碼分析 7
1.4 ios 軟件逆嚮工程用到的工具 8
1.4.1 監測工具 8
1.4.2 開發工具 9
1.4.3 反編譯器 9
1.4.4 調試器 10
1.5 小結 11
.第2 章 越獄ios 平颱簡介 12
2.1 ios 係統架構 12
2.1.1 ios 目錄結構 13
2.1.2 ios 文件權限 15
2.2 ios 程序類型 16
2.2.1 application 16
2.2.2 dynamic library 19
2.2.3 daemon 19
2.3 小結 20
第二部分 工具篇
第3 章 mac 工具集 22
3.1 class-dump 22
3.1.1 class-dump 介紹及下載 22
3.1.2 class-dump 使用演示 23
3.1.3 關於class-dump 的補充說明 25
3.2 theos 25
3.2.1 theos 簡介 25
3.2.2 theos 安裝及編譯 26
3.2.3 theos 用法簡介 28
3.2.4 theos 開發tweak 示例 47
3.3 reveal 49
3.3.1 reveal 簡介 49
3.3.2 reveal 安裝及功能擴展 50
3.4 ida 55
3.4.1 ida 簡介 55
3.4.2 ida 使用說明 56
3.4.3 ida 分析示例 65
3.5 其他工具 68
3.5.1 itools 68
3.5.2 dyld_decache 69
3.5.3 mesasqlite 69
3.6 小結 70
第4 章 ios 工具集 71
4.1 sbsettings 71
4.2 mobilesubstrate 72
4.3 openssh 73
4.4 gdb 74
4.4.1 gdb 簡介 74
4.4.2 gdb 的使用說明 74
4.5 cycript 85
4.6 其他常用工具 88
4.6.1 bigboss recommendedtools 88
4.6.2 appcrackr 88
4.6.3 ifile 89
4.6.4 mobileterminal 89
4.6.5 vi improved 90
4.6.6 sqlite 90
4.6.7 top 91
4.6.8 syslogd 92
4.7 小結 92
第三部分 理論篇
第5 章 objective-c 相關的ios逆嚮理論基礎 94
5.1 tweak 的作用原理 94
5.1.1 objective-c 語言的特性 94
5.1.2 mobilesubstrate 96
5.2 tweak 的編寫套路 97
5.2.1 靈感的來源 98
5.2.2 分析文件,尋找切入點 99
5.2.3 定位目標函數 102
5.2.4 測試函數功能 104
5.2.5 解析函數參數 105
5.2.6 class-dump 的局限性 108
5.3 實例演示 108
5.3.1 得到靈感 108
5.3.2 分析文件 109
5.3.3 定位函數 115
5.3.4 測試函數 117
5.3.5 編寫實例代碼 117
5.4 小結 119
第6 章 arm 匯編相關的ios逆嚮理論基礎 120
6.1 arm 匯編基礎 120
6.1.1 基本概念 121
6.1.2 arm/thumb 指令解讀 123
6.1.3 arm 調用規則 129
6.2 在ida 中分析目標文件 131
6.2.1 分析函數實現細節 132
6.2.2 驗證分析結果 139
6.3 在gdb 中分析目標文件 142
6.3.1 跟蹤代碼執行流程 142
6.3.2 動態更改代碼 147
6.4 小結 157
第四部分 實戰篇
第7 章 實戰1:去除oplayerlite 的廣告 160
7.1 oplayer lite 簡介 160
7.2 分析源代碼結構,並定位廣告橫幅的代碼 161
7.2.1 class-dump 獲取.h 文件 161
7.2.2 猜測廣告橫幅的齣現位置 161
7.2.3 分析playviewcontroller.h 162
7.3 去除廣告橫幅,節省流量 167
7.3.1 找到“準備”廣告的位置 167
7.3.2 追溯到網絡連接的起點 173
7.4 編寫調試代碼 175
7.4.1 編寫tweak_oplayerlite.xm 175
7.4.2 編輯control 176
7.4.3 編輯removeoplayerads.plist 176
7.4.4 編輯makefile 177
7.4.5 編譯+ 打包 177
7.4.6 安裝 177
7.5 調試去廣告插件 177
7.6 代碼結果整理 178
7.7 小結 179
第8 章 實戰2:whatsapp消息攔截 180
8.1 whatsapp 簡介 180
8.2 分析源代碼結構,並定位監聽點 180
8.2.1 class-dump 獲取.h 文件 180
8.2.2 導入xcode 182
8.2.3 找到whatsappappdelegate 182
8.2.4 找到chatmanager 183
8.3 編寫調試代碼 184
8.3.1 分析函數列錶 184
8.3.2 編寫tweak_whatsapp.xm 185
8.3.3 編輯control 186
8.3.4 編輯monitor.plist 186
8.3.5 編輯makefile 186
8.3.6 編譯+打包 187
8.3.7 安裝 187
8.4 調試運行監聽插件 187
8.4.1 運行whatsapp,ssh 連接 187
8.4.2 發送/ 接收消息,監控日誌 188
8.4.3 保存數據 189
8.5 代碼結果整理 194
8.6 小結 195
第9 章 實戰3:instagram 圖片保存 196
9.1 instagram 簡介 196
9.2 分析源代碼結構,並定位圖片展示點 196
9.2.1 用class-dump獲取.h 文件 196
9.2.2 導入xcode 198
9.2.3 找到appdelegate 198
9.2.4 注入reveal 199
9.2.5 尋找圖片頁相關class 200
9.3 保存圖片 205
9.3.1 嘗試保存圖片 205
9.3.2 對.h 文件進行瘦身 206
9.3.3 編譯測試 208
9.4 彈齣提示菜單 208
9.4.1 彈齣菜單代碼 208
9.4.2 使用theos 新增函數 210
9.4.3 使用runtime 新增函數 211
9.5 代碼結果整理 214
9.6 小結 215
第10 章 實戰4:ios 電話操作 216
10.1 常用電話操作 216
10.2 分析源代碼結構,並定位電話操作的代碼 216
10.2.1 class-dump 獲取.h 文件 216
10.2.2 尋找撥打電話的函數 217
10.2.3 尋找接聽電話的函數 229
10.2.4 尋找掛斷電話的函數 234
10.2.5 尋找刪除通話記錄的函數 236
10.2.6 尋找攔截電話的方法 238
10.3 編寫調試代碼 250
10.3.1 編寫tweak_phoneoperation.xm 250
10.3.2 編輯control 254
10.3.3 編輯phoneoperation.plist 255
10.3.4 編輯makefile 255
10.3.5 編譯+ 打包+ 安裝 255
10.4 調試電話操作插件 255
10.5 代碼結果整理 257
10.6 小結 257
越獄開發一覽 258
沙箱逃脫 263
編寫tweak——新時代的hacking 265
· · · · · · (
收起)