推薦序一
推薦序二
第2版序
第1版序
前言
第一部分 概 念 篇
第1章 iOS逆嚮工程簡介 3
1.1 iOS逆嚮工程的要求 3
1.2 iOS應用逆嚮工程的作用 4
1.2.1 安全相關的iOS逆嚮工程 5
1.2.2 開發相關的iOS逆嚮工程 6
1.3 iOS應用逆嚮工程的過程 7
1.3.1 係統分析 7
1.3.2 代碼分析 8
1.4 iOS應用逆嚮工程的工具 8
1.4.1 監測工具 9
1.4.2 反匯編工具 9
1.4.3 調試工具 10
1.4.4 開發工具 11
1.5 小結 11
第2章 越獄iOS平颱簡介 12
2.1 iOS係統結構 12
2.1.1 iOS目錄結構簡介 13
2.1.2 iOS文件權限簡介 16
2.2 iOS二進製文件類型 17
2.2.1 Application 17
2.2.2 Dynamic Library 20
2.2.3 Daemon 20
2.3 小結 22
第二部分 工 具 篇
第3章 OSX工具集 25
3.1 class-dump 25
3.2 Theos 27
3.2.1 Theos簡介 27
3.2.2 安裝Theos 28
3.2.3 Theos用法介紹 30
3.2.4 Theos開發tweak示例 51
3.3 Reveal 53
3.4 IDA 57
3.4.1 IDA簡介 57
3.4.2 IDA使用說明 58
3.4.3 IDA分析示例 68
3.5 iFunBox 71
3.6 dyld_decache 72
3.7 小結 73
第4章 iOS工具集 74
4.1 CydiaSubstrate 74
4.1.1 MobileHooker 74
4.1.2 MobileLoader 84
4.1.3 Safe mode 84
4.2 Cycript 85
4.3 LLDB與debugserver 89
4.3.1 LLDB簡介 89
4.3.2 debugserver簡介 90
4.3.3 配置debugserver 90
4.3.4 用debugserver啓動或附加進程 91
4.3.5 LLDB的使用說明 92
4.3.6 LLDB使用小提示 107
4.4 dumpdecrypted 107
4.5 OpenSSH 111
4.6 usbmuxd 112
4.7 iFile 113
4.8 MTerminal 114
4.9 syslogd to /var/log/syslog 115
4.10 小結 115
第三部分 理 論 篇
第5章 Objective-C相關的iOS逆嚮理論基礎 119
5.1 tweak在Objective-C中的工作方式 119
5.2 tweak 的編寫套路 121
5.2.1 尋找靈感 121
5.2.2 定位目標文件 123
5.2.3 定位目標函數 127
5.2.4 測試函數功能 129
5.2.5 解析函數參數 130
5.2.6 class-dump的局限性 133
5.3 實例演示 133
5.3.1 得到靈感 134
5.3.2 定位文件 135
5.3.3 定位函數 143
5.3.4 測試函數 145
5.3.5 編寫實例代碼 145
5.4 小結 147
第6章 ARM匯編相關的iOS逆嚮理論基礎 148
6.1 ARM匯編基礎 148
6.1.1 基本概念 149
6.1.2 ARM/THUMB指令解讀 152
6.1.3 ARM調用規則 159
6.2 tweak的編寫套路 161
6.2.1 從現象切入App,找齣UI函數 162
6.2.2 以UI函數為起點,尋找目標函數 173
6.3 LLDB的使用技巧 203
6.3.1 尋找函數調用者 203
6.3.2 更改進程執行邏輯 208
6.4 小結 211
第四部分 實 戰 篇
第7章 實戰1:Characount for Notes 8 215
7.1 備忘錄 215
7.2 搭建tweak原型 216
7.2.1 定位Notes的可執行文件 217
7.2.2 class-dump齣MobileNotes的頭文件 218
7.2.3 用Cycript找到閱覽界麵及其controller 218
7.2.4 從NoteDisplayController找到當前note對象 220
7.2.5 找到實時監測note內容變化的方法 223
7.3 逆嚮結果整理 227
7.4 編寫tweak 228
7.4.1 用Theos新建tweak工程“CharacountForNotes8” 228
7.4.2 構造CharacountForNotes8.h 229
7.4.3 編輯Tweak.xm 229
7.4.4 編輯Makefile及control 230
7.4.5 測試 230
7.5 小結 233
第8章 實戰2:自動將指定電子郵件標記為已讀 234
8.1 電子郵件 234
8.2 搭建tweak原型 235
8.2.1 定位Mail的可執行文件並class-dump它 237
8.2.2 把頭文件導入Xcode 238
8.2.3 用Cycript找到Mailboxes界麵的controller 239
8.2.4 用Reveal和Cycript找到All Inboxes界麵的delegate 240
8.2.5 在MailboxContentViewController中定位“刷新完成”的響應函數 242
8.2.6 從MessageMegaMall中拿到所有郵件 246
8.2.7 從MFLibraryMessage中提取發件人地址,用MessageMegaMall標記
已讀 248
8.3 逆嚮結果整理 254
8.4 編寫tweak 255
8.4.1 用Theos新建tweak工程“iOSREMailMarker” 255
8.4.2 構造iOSREMailMarker.h 255
8.4.3 編輯Tweak.xm 256
8.4.4 編輯Makefile及control 257
8.4.5 測試 258
8.5 小結 259
第9章 實戰3:保存與分享微信小視頻 260
9.1 微信 260
9.2 搭建tweak原型 261
9.2.1 觀察小視頻播放窗口,尋找逆嚮切入點 261
9.2.2 class-dump獲取頭文件 262
9.2.3 把頭文件導入Xcode 263
9.2.4 用Reveal找到小視頻播放窗口 264
9.2.5 找到長按手勢響應函數 265
9.2.6 用Cycript定位小視頻的controller 270
9.2.7 從WCTimeLineViewController找到小視頻對象 272
9.2.8 從WCContentItemViewTemplateNewSight中提取WCDataItem對象 276
9.2.9 從WCDataItem中提取目標信息 278
9.3 逆嚮結果整理 288
9.4 編寫tweak 289
9.4.1 用Theos新建tweak工程“iOSREWCVideoDownloader” 289
9.4.2 構造iOSREWCVideoDownloader.h 289
9.4.3 編輯Tweak.xm 290
9.4.4 編輯Makefile及control 292
9.4.5 測試 293
9.5 彩蛋放送 294
9.5.1 從UIMenuItem切入,找到小視頻對象 294
9.5.2 微信曆史版本頭文件個數變遷 295
9.6 小結 298
第10章 實戰4:檢測與發送iMessage 299
10.1 iMessage 299
10.2 檢測一個號碼或郵箱地址是否支持iMessage 299
10.2.1 觀察MobileSMS界麵元素的變化,尋找逆嚮切入點 299
10.2.2 用Cycript找齣placeholder 302
10.2.3 用IDA和LLDB找齣placeholderText的一重數據源 308
10.2.4 用IDA和LLDB找齣placeholderText的N重數據源 311
10.2.5 還原原始數據源生成placeholderText的過程 340
10.3 發送iMessage 341
10.3.1 從MobileSMS界麵元素尋找逆嚮切入點 341
10.3.2 用Cycript找齣“Send”按鈕的響應函數 342
10.3.3 在響應函數中尋找可疑的發送操作 344
10.4 逆嚮結果整理 369
10.5 編寫tweak 370
10.5.1 用Theos新建tweak工程“iOSREMadridMessenger” 370
10.5.2 構造iOSREMadridMessenger.h 371
10.5.3 編輯Tweak.xm 372
10.5.4 編輯Makefile及control 372
10.5.5 用Cycript測試 373
10.6 小結 373
越獄開發一覽 375
沙箱逃脫 380
編寫tweak——新時代的hacking 382
· · · · · · (
收起)