發表於2024-11-26
這是一本從基礎、理論、實踐到保護,全麵介紹iOS應用逆嚮與安全的書。通過閱讀本書,讀者不僅可以快速上手編寫iOS插件,還可以深入理解逆嚮原理、擴展iOS安全方麵的相關知識。
《iOS應用逆嚮與安全》從正嚮開發、工具的使用、逆嚮實戰及安全保護等方麵,對iOS應用的逆嚮與安全進行瞭講解。本書內容包括基本概念、逆嚮環境的準備、常用逆嚮分析工具、類的結構、App簽名、Mach-O文件格式、hook原理等,並通過在越獄平颱和非越獄平颱上的逆嚮分析實例,帶領讀者學習逆嚮分析的思路和方法。在應用安全及保護方麵,本書內容涉及網絡傳輸、安全檢測、代碼混淆等。
《iOS應用逆嚮與安全》適閤高校計算機相關專業的學生、iOS開發工程師、逆嚮工程師、越獄開發工程師、iOS安全工程師及應用安全審計人員閱讀參考。
劉培慶(@Alone_Monkey)
iOS逆嚮愛好者,網易雲課堂“iOS逆嚮與安全”主講。大學畢業後在網易負責iOS安全保護、基礎組件開發、質量保障等工作。目前就職於阿裏巴巴米諾斯實驗室,從事安全保護相關工作。開源作品有MonkeyDev、frida-ios-dump等。
第1章 概述
1.1 逆嚮工程簡介 1
1.1.1 iOS逆嚮學習基礎 1
1.1.2 iOS逆嚮的流程 1
1.1.3 iOS逆嚮使用的工具 2
1.1.4 iOS逆嚮的應用場景 2
1.2 應用麵臨的安全風險 2
1.2.1 靜態修改文件 3
1.2.2 動態篡改邏輯 3
1.2.3 協議分析 3
1.3 應用保護手段 3
1.3.1 數據加密 3
1.3.2 程序混淆 4
1.3.3 安全監測 4
1.4 本書工具 4
1.4.1 效率工具 4
1.4.2 實用工具 5
1.4.3 逆嚮工具 5
第2章 越獄設備
2.1 什麼是越獄 6
2.2 Cydia 6
2.3 SSH 7
2.3.1 安裝OpenSSH 8
2.3.2 配置dropbear 10
2.3.3 修改默認密碼 11
2.3.4 公鑰登錄 11
2.3.5 通過USB登錄 13
2.4 iOS係統結構 14
2.4.1 文件目錄 15
2.4.2 文件權限 17
2.5 Cydia Substrate 18
2.5.1 MobileHooker 19
2.5.2 MobileLoader 19
2.5.3 Safe mode 20
2.6 越獄必備工具 21
2.6.1 adv-cmds 21
2.6.2 appsync 21
2.6.3 iFile 21
2.6.4 scp 22
第3章 逆嚮工具詳解
3.1 應用解密 23
3.1.1 dumpdecrypted 23
3.1.2 Clutch 28
3.1.3 小結 30
3.2 class-dump 30
3.2.1 class-dump的使用 30
3.2.2 class-dump的原理 33
3.2.3 OC和Swift混編 40
3.3 Reveal 41
3.3.1 開發集成Reveal 41
3.3.2 越獄注入Reveal 42
3.4 Cycript 43
3.4.1 開發集成Cycript 44
3.4.2 使用Cycript越獄 45
3.4.3 使用Cycript分析應用 46
3.4.4 Cycript的高級用法 49
3.5 抓包 52
3.5.1 Charles抓包 53
3.5.2 修改網絡請求 55
3.5.3 HTTPS抓包 59
3.5.4 Wireshark抓包 60
第4章 開發儲備
4.1 App的結構及構建 66
4.1.1 獲取應用包 66
4.1.2 應用包的格式 71
4.1.3 應用的構建過程 72
4.2 界麵結構和事件傳遞 76
4.2.1 界麵的組成 76
4.2.2 界麵事件的響應 79
4.3 類與方法 83
4.3.1 類與方法的底層實現 84
4.3.2 運行時類的結構 89
4.3.3 消息機製 91
4.3.4 runtime的應用 94
4.4 App簽名 98
4.4.1 配置Xcode簽名 98
4.4.2 App簽名的原理 100
4.4.3 重簽名 107
第5章 分析與調試
5.1 靜態分析 109
5.1.1 Hopper 109
5.1.2 IDA 118
5.1.3 靜態庫分析 125
5.2 動態調試 128
5.2.1 LLDB調試 128
5.2.2 LLDB解密 141
5.2.3 用Xcode調試第三方應用 144
5.2.4 LLDB的高級調試技巧 151
5.3 Theos 167
5.3.1 Theos的安裝 168
5.3.2 Theos的基本應用 168
5.3.3 Theos的高級應用 172
5.4 MonkeyDev 177
5.4.1 安裝MonkeyDev 178
5.4.2 Logos Tweak 179
5.4.3 CaptainHook Tweak 181
5.4.4 Command-line Tool 185
第6章 逆嚮進階
6.1 程序加載 186
6.1.1 dyld簡介 186
6.1.2 dyld加載流程 187
6.2 Mach-O文件格式 206
6.2.1 Mach-O文件的基本格式 206
6.2.2 Mach-O頭部 208
6.2.3 Load Command 210
6.2.4 虛擬地址和文件偏移 214
6.2.5 懶加載和非懶加載 217
6.2.6 Code Signature 223
6.3 ARM匯編 228
6.3.1 ARM架構和指令集 228
6.3.2 AArch64寄存器 229
6.3.3 指令集編碼 231
6.3.4 AArch64指令 233
6.3.5 棧和方法 236
6.3.6 Objective-C匯編 245
6.4 hook 247
6.4.1 Method Swizzle 247
6.4.2 fishhook 248
6.4.3 Cydia Substrate 253
6.4.4 Swift hook 256
6.5 動態庫 259
6.5.1 編譯和注入 260
6.5.2 導齣和隱藏符號 260
6.5.3 C++ 和OC動態庫 263
6.5.4 其他常見問題 267
第7章 實戰演練
7.1 越獄設備分析 270
7.1.1 分析準備 270
7.1.2 開始分析 272
7.1.3 編寫Tweak 284
7.1.4 安裝與小結 287
7.2 非越獄設備分析 288
7.2.1 創建MonkeyDev項目 288
7.2.2 非越獄逆嚮實戰 291
7.2.3 編寫hook代碼 303
7.2.4 製作非越獄Pod 304
7.2.5 小結 308
7.3 Frida實戰應用 309
7.3.1 Frida的安裝 309
7.3.2 Frida的初級使用 311
7.3.3 Frida的高級使用 319
7.3.4 小結 326
第8章 安全保護
8.1 數據加密 327
8.1.1 本地存儲加密 328
8.1.2 網絡傳輸加密 328
8.1.3 字符串加密 333
8.2 靜態混淆 341
8.2.1 宏定義 342
8.2.2 二進製修改 347
8.3 動態保護 349
8.3.1 反調試 349
8.3.2 反反調試 352
8.3.3 反注入 359
8.3.4 hook檢測 360
8.3.5 完整性校驗 361
8.4 代碼混淆 363
8.4.1 什麼是LLVM 363
8.4.2 下載和編譯LLVM 364
8.4.3 開發和調試Pass 366
8.4.4 OLLVM源代碼分析 373
8.4.5 替換Xcode編譯器 379
8.4.6 靜態庫混淆 389
8.5 本章總結 390
序
第一次和劉培慶見麵是在2017年,西湖大道的碧桃小館。
四月的杭州已是初夏,隻穿一件單衣的我,後背仍被汗水浸濕。昏暗的餐廳裏,劉培慶坐在角落,一件牛仔夾剋扣到頂,看上去又悶又熱。我眉頭一皺,心生不悅:這人真傻。
高溫敗瞭胃口,團購的雙人餐,倆大老爺們兒竟然沒吃完。結賬走人,我們在湧金門一帶的巷弄裏穿行消食,有一搭沒一搭地聊著。劉培慶說,他放棄瞭晉升的機會,跳到瞭另一個更辛苦的部門,是因為新部門的業務更吸引他。放棄更舒適的環境和更高的薪水去追求興趣?興趣值幾個錢?這人真傻。
是夜一彆,我們各自忙於生活,很久沒有再會。五月某天,微信上突然彈齣劉培慶的名字,“狗神,你那本書有沒有打算再齣一版,幫你更新一下”,然後嚮我介紹瞭他的更新計劃,原來是在《iOS應用逆嚮工程》的基礎上更深入瞭。我覺得他的內容定位有些超齣原書目標讀者的水平,於是建議他當作技術博客發齣來,算是委婉的迴絕。你的原創內容,放在我的書裏,如果廣受歡迎,名氣豈不全讓我賺瞭?這人真傻。
七月的艷陽炙烤著大地,室內活動陡然增多。我要去濱江的HZEcers英語角分享齣書經曆,地點恰好就在網易旁邊,於是邀請瞭他。沒想到這哥們兒把女朋友帶瞭來,兩人在活動中一前一後,緊張地用生澀的英語做自我介紹:“Good afternoon everyone, my name is Liu Peiqing...”他的生物專業小女友梳著齊劉海,戴著圓框眼鏡,英語比他溜得多:“...recently I'm learning programming, because I want to have more common topics with my boyfriend...”單純的齣發點,真是傻得可愛。也隻有這樣的傻姑娘,纔會愛上這樣的傻小子吧?
沒過多久,我的論壇上齣現瞭一個名為MonkeyDev的工具,是劉培慶寫的,號稱“原有iOSOpenDev的升級,非越獄插件開發集成神器”。我大緻瀏覽瞭一下,看上去挺復雜,技術含量挺高,但竟然是開源的?!從Git提交記錄來看,劉培慶一直在花時間維護它,免費供大傢使用。這個年頭,還有這樣的雷鋒,做這樣的好事?這人真傻。
金鞦十月,劉培慶又在微信上找我,說他要齣書瞭,邀請我寫個序。坦白地說,以劉培慶、James等90後為代錶的新一代iOS逆嚮工程師鼓搗齣來的新技術,我其實看不懂,也跟不上;同時,因為對庫剋的失望,我早已不再往蘋果係技術上投入更多的精力。我已然從原來技術舞颱的主角淪為瞭看客。“後浪”竟然找已經“死在沙灘上”的“前浪”寫序?這人真傻。
但是,傻子劉培慶就在這樣的評價中朝著自己的目標一步步前進,最終寫齣瞭《iOS應用逆嚮與安全》,推動瞭行業的發展。
他讓我想起瞭行業內的其他傻子。
四年前,另一個傻子,不知天高地厚地齣版瞭《iOS應用逆嚮工程》,填補瞭市場的空白,受到瞭讀者的歡迎。這個傻子辦瞭個名叫iOSRE的論壇,為所有iOS逆嚮工程愛好者提供免費、自由、平等、純淨的交流平颱,卻不做廣告、不收贊助,自掏腰包維護論壇。這人真傻。
一個來自加拿大的傻子,為越獄iOS寫瞭個名叫Activator的插件,全球總下載量近2億次——據說這是喬布斯最喜愛的越獄插件。如果每次下載隻收1毛錢,這個傻子也能成為韆萬富翁,可是他卻把Activator免費提供給大傢使用。這人真傻。
一個大學輟學的美國傻子,為越獄iOS提供瞭一套名為Theos的開發工具,它的簡單易用吸引瞭大量人纔進入這個領域,為越獄開發的黃金5年揭開瞭序幕。為瞭維護這套免費、開源的工具,他每天熬夜到淩晨2點,義務解決用戶的問題,優化它的體驗,卻分文不取。這人真傻。
一個被親生父母遺棄的傻子,都沒正經上過大學,就自不量力地想要“Think different”。他創造的産品改變瞭世界,卻積勞成疾,英年早逝,留給後人一句“Stay hungry, stay FOOLISH”。這人真傻。
“……
我不害怕全世界就剩下我一個傻瓜
我要堅持到底,用我的方式
彆在意這世界的奇妙
……”
感謝劉培慶這樣的傻子們。世界因為你們,變得可愛瞭一些。
沙梓社
2018年3月28日夜,於杭州
前言
2015年,通過校招,我以Windows安全方嚮進入網易,組內安排投入iOS安全方嚮的研究。當時,我連蘋果産品都沒用過,於是攢瞭點錢,在淘寶上買瞭一颱可越獄的iPad來研究。因為之前也沒有接觸過Objective-C,無法深入閱讀當時在網上找到的教程,所以隻能跟著敲敲代碼,看看效果。後來,通過研讀念茜的文章,以及國外博客上的一些教程,把基本工具實踐瞭一番,“狗神”沙梓社的書齣版後,把他的書認真看瞭一遍,纔算是踏進瞭門檻。
在那一段學習過程中,我對新的知識點都是囫圇吞棗,一直停留在工具的使用上,沒有形成完整的知識體係和深層的認識,一旦齣現問題就要花很長的時間去解決。這一點在後麵張平引薦我去做網易雲課堂的教學視頻時感受尤為深刻——當你要規劃整個課程時,你必須從全局齣發考慮問題,僅僅根據自身的經驗、知道工具的使用方法是不夠的,隻有理解和掌握原理,纔能達到舉一反三的效果。雖然從準備資料、製作PPT到最後錄製視頻的過程挺纍的,但在這個過程中,我加深瞭對知識點的理解。這是我第一次錄製視頻課程,由於經驗不足,導緻瞭部分視頻在終端的顯示字體太小等問題,但總的來說,還是要感謝那些信任我、購買瞭我的視頻課程的人。
後來,有幾個朋友建議我齣本書,把掌握的東西分享齣來,也讓新人少踩點坑。當時我是有點猶豫的。我不僅擔心寫書會占用很多時間,也擔心自己的水平不夠、寫得不好。後來,想到視頻裏麵的一些內容需要更新,很多知識點可以補充和完善,加上書籍的學習和沉澱效果也比視頻好一些,我就開始做準備,規劃每一章的完成時間,每天下班後或者周末在電腦前整理資料、寫書,也挺充實的。現在,這本書終於和你見麵瞭,希望書中的內容能夠幫助你擴充自己的知識麵,少走彎路,成為技術大牛。
讀者對象
本書介紹瞭iOS開發、逆嚮和安全等方麵的內容,麵嚮以下讀者:
*高校計算機相關專業的學生
*iOS開發工程師
*逆嚮工程師
*越獄開發工程師
*iOS安全工程師
*應用安全審計人員
近幾年,iOS開發人員數量激增。正嚮開發人員應該努力提升自己的競爭力,掌握一些底層技能,為自己開發的應用保駕護航。逆嚮新人也不要一味追求工具的使用和功能的實現,應該靜下心來,基礎知識掌握得紮實一些,後麵的問題自然迎刃而解。
如何閱讀本書
考慮到很多逆嚮分析人員缺乏正嚮開發和安全保護方麵的知識,本書將分成以下4個部分進行講解。
*第1章~第3章是快速上手部分,內容包括一些基本概念的介紹,環境的準備,以及一些常用逆嚮分析工具的使用和原理。
*第4章~第6章是正嚮知識儲備和進階部分,內容包括逆嚮過程中一些理論知識的深入講解,例如類的結構、App簽名、Mach-O文件格式、hook原理等。
*第7章是逆嚮實戰部分,通過在越獄平颱和非越獄平颱上的逆嚮分析實例,帶領讀者學習逆嚮分析的思路和方法。
*第8章是安全保護部分,內容包括應用安全及保護方麵的知識,涉及網絡傳輸加密、動態保護、代碼混淆等。
盡管不同的人感興趣的方麵可能不一樣,但我還是建議讀者能夠從頭開始閱讀本書,並把書中提到的每個知識點都實踐一遍,以加深理解。
本書的源代碼可以在GitHub上麵找到:
https://github.com/AloneMonkey/iOSREBook
聲明
本書的寫作花費瞭大量的時間和心血,我隻是想幫助大傢在學習過程中少走彎路、拓寬知識麵、增加技術積纍,所以,請支持正版書籍,堅決抵製盜版!另外,本書內容僅供技術學習和研究之用,請勿將本書內容用於非法商業用途。
勘誤
由於知識水平有限,寫作過程也比較匆忙,書中難免齣現錯誤及不足,歡迎各位讀者指正。同時,我為本書開設瞭一個提交issue的項目:
https://github.com/AloneMonkey/iOSREBook-issues
緻謝
感謝我的傢人,在我成長的路上一直支持我、鼓勵我。
感謝我異地三年的女友,很抱歉沒有陪在你的身邊。即便如此,你還是不離不棄,一直支持我的選擇。
感謝念茜、狗神及在我的學習路上給予我幫助的人,感謝在網易期間的所有同事,是你們讓我不斷成長。
感謝電子工業齣版社提供的平颱,感謝編輯潘昕對本書內容的把控和指導。
感謝正在閱讀本書的你,謝謝你的支持和信任。
劉培慶
2018年4月,於杭州
iOS應用逆嚮與安全 下載 mobi pdf epub txt 電子書 格式 2024
iOS應用逆嚮與安全 下載 mobi epub pdf 電子書此用戶未填寫評價內容
評分活動的時候買的,看起來還不錯
評分還可以
評分還可以
評分活動的時候買的,看起來還不錯
評分此用戶未填寫評價內容
評分此用戶未填寫評價內容
評分活動的時候買的,看起來還不錯
評分還可以
iOS應用逆嚮與安全 mobi epub pdf txt 電子書 格式下載 2024