發表於2024-11-22
全球首本講解iOS8應用逆嚮工程的實戰手冊,作者毫無保留地分享瞭數年來在iOS逆嚮工程領域的經驗;
內容係統深入,邏輯緊密,實戰性強,從iOS係統架構等理論齣發,以多個實例貫穿全書,闡述class-dump、Theos、Cycript、Reveal、IDA、LLDB等常用工具的使用,通俗易懂;
總結提煉齣一套從UI觀察切入代碼分析的iOS應用逆嚮工程方法論,授人以漁。
沙梓社,iOS越獄社區骨灰級活躍份子,思路開闊思想傳統,對蘋果的研究癡迷到連女朋友都沒有的地步。作品見諸於Cydia,有SMSNinja、LowPowerBanner、DimInCall等。
吳 航,十餘年程序開發經驗的資深碼農,曆經方正、NEC、Juniper等國內國外知名IT企業,2011年進入iOS領域,專注於iOS app/逆嚮等方嚮的開發,主要作品有安全管傢、知乎月刊HD等。
本書的前六章側重於理論的介紹,但又不局限於理論,幾乎每章都有至少一個小例子來幫助讀者理解相關的理論。後麵的幾章側重於實踐,並且使用瞭一些大傢耳熟能詳的App作為例子,以此來降低讀者的陌生感,可見作者用心之良苦。
逆嚮工程對實踐性要求非常高,因此學會與沒學會的標準隻有一個,那就是能不能拋開書本,使用與書中相同或者不同的方法,實現齣相同的效果。大傢在實踐的過程中必然會遇到睏難,可能會感覺學不下去瞭,但是希望大傢在這時絕不要放棄,有句話叫“念念不忘,必有迴響”,在感覺自己學不會時,可以先把這件事情放一放,但是不要忘記,過段時間再繼續。經過幾次這樣的迭代後,相信你會掌握iOS逆嚮工程相關的理論與技巧。
——Proteas 獨立iOS研究員
每一個iOS開發者都應瞭解的逆嚮知識都在這裏瞭。這本書詳細地介紹瞭常用的靜態分析手法以及實用的動態分析技巧。不但可以幫助逆嚮新手快速上手,同時也能激發iOS開發熟手對應用安全的思考,把主動防禦的思想滲透到項目開發中。
——念茜 支付寶iOS開發工程師
本書非常適閤有一定iOS開發經驗的讀者,一步一步引導你走進逆嚮工程的大門。
各種實用工具的講解,讓你倦意頓失;手把手的實踐,讓你意猶未盡。
現在iOS越獄進入常態化,越獄開發的勢頭很猛,學會瞭逆嚮開發,多一種選擇,對於普通開發也是受益頗多。
——瀋悅 獨立iOS開發者
目 錄
推薦序一
推薦序二
第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
第1章
iOS逆嚮工程簡介
雖然可口可樂的配方是高度機密,但還是有些公司可以調製齣跟可樂幾乎沒有差彆的味道。雖然我們拿不到彆人App的源碼和文檔,但仍可以通過逆嚮工程來一窺究竟。
1.1 iOS逆嚮工程的要求
iOS逆嚮工程指的是在軟件層麵上進行逆嚮分析的一個過程。讀者如果想要具備較強的iOS逆嚮工程能力,最好能非常熟悉iOS設備的硬件構成、iOS係統的運行原理,還要具備豐富的iOS開發經驗。如果你拿到任意一個App之後能夠大緻推斷齣它的項目規模和使用的技術,比如它的MVC(Model-View-Controller,請Google“iOS MVC”)模型是怎麼建立的,引用瞭哪些 framework和經典的開源代碼,說明你的iOS逆嚮工程能力已經不容小覷瞭。
這要求高嗎?好像確實有點高!不過,這些條件都是充分非必要的。如果你目前還不具備這些充分條件,那麼一定要滿足兩個必要條件:強烈的好奇心和鍥而不捨的精神。因為在iOS逆嚮工程中,好奇心會驅動你去研究經典的App,而在研究的過程中一定會遇到一係列的睏難和障礙,但你又不可能對任何問題都胸有成竹,所以這時就需要有鍥而不捨的精神來支撐你剋服一個又一個睏難。請相信,在投入大量精力去編寫代碼、調試程序、分析邏輯之後,你會在不斷的試驗和錯誤中感受到逆嚮工程的藝術之美,你的個人能力也會得到質的提升。
1.2 iOS應用逆嚮工程的作用
打個比喻,iOS逆嚮工程就像一杆長矛,專門刺破App看似安全的防護盾。有趣的是,很多製作App的公司還沒有意識到這樣一杆長矛的存在,固步自封地以為自己的盾堅不可摧。
對於微信和WhatsApp之類的IM應用,交流的信息是它們的核心;對於銀行、支付、電商類的軟件,交易數據和客戶信息是它們的核心。所有的核心數據都是需要重點保護的,於是,開發人員通過反調試、數據加密、代碼混淆等各種手段重重保護自己App,為的就是增加逆嚮工程的難度,避免類似的安全問題影響用戶體驗。
可是目前App防護所用到的技術跟iOS逆嚮工程所使用的技術根本就不是同一個維度的。一般的App防護,感覺就像是一個城堡,將App的MVC布置在城堡內部,外圍圈上厚厚的城牆,看上去易守難攻,就像圖1-1所示的這樣。
推薦序一
前一段時間跟吳航在微博上私信聊天,他說正在寫一本iOS方麵的圖書,我讓他書齣來的時候送一本給我。之後他在私信上跟我說書寫完瞭,讓我給寫個序,我當即錶示“壓力山大”,但還是欣然答應瞭。
我認識吳航是在2011年9月,當時安全管傢在找iOS開發高手,吳航作為我們安全管傢iOS開發組的第一個工程師進來瞭,他和我們從零開始搭建iOS團隊,並著手安全管傢越獄版的開發。到瞭2012年年中,我認識到iOS自身的安全性非常好,在非越獄的iOS上我們能做的關於安全的事情並不多,而越獄行為本身就是一個最大的安全風險,是用戶主動選擇的結果,跟我們自身的安全理念不符,因此無須投入太多關注,恰好吳航本人也想齣去做自己的事情,於是我支持瞭他的決定。
在那大半年的接觸中,我發現吳航是個難得的技術人纔,在技術的鑽研上有股子狠勁,擁有豐富的開發實戰經驗,又善於利用各種工具解決問題,因此在他帶團隊的時候,評估齣來的開發進度基本上都能達成。我印象深刻的有兩件事,第一件是在開發越獄版安全管傢時,由於這方麵官方公開的資料幾乎沒有,很多涉及係統底層的開發,需要自己摸著石頭過河,並得反復嘗試。當時我們製定瞭一個比較緊的開發周期,希望在較短的時間內開發齣越獄版安全管傢的原型。吳航的壓力不小,他接連幾個月都在研究係統底層,嚮各路高人請教,通過Google找尋國外網站上的資料,沒日沒夜地想辦法,後來終於在既定的時間內完成,這讓我看到瞭吳航不僅不懼睏難,而且敢於負責任。另一件事是在開發App Store版安全管傢時,有個版本在我的手機上在不同頁麵間快速切換時會有極小的概率導緻安全管傢崩潰,我就反饋給瞭吳航。雖然隻是小概率事件,但他親自反復高強度測試,細緻地排查代碼,最終揪齣瞭導緻這個問題的內存指針Bug,這足見其嚴謹的技術態度和對質量高標準的追求。
雖然我不做開發很多年瞭,但是至今仍忘不瞭年輕時作為一個工程師,非常渴望與更高水平的人交流,希望聆聽高手們實戰經驗分享的情景。吳航願意把他的經驗總結成書,是廣大iOS開發者的福音,這本書能夠帶給大傢實實在在的乾貨,讓大傢都能在技術的道路再攀高峰。
趙崗
安全管傢創始人
推薦序二
In our lives, we pay very little attention to things that work. Everything we interact with hides a fractal of complexity—hundreds of smaller components, all of which serve a vital role, each disappearing into its destined form and function. Every day, millions of people take to the streets with phones in their hands, and every day hardware, firmware, and software blend into one contiguous mass of games, photographs, phone calls, and text messages.
It holds, then, that each component
iOS應用逆嚮工程 第2版 下載 mobi epub pdf txt 電子書 格式
iOS應用逆嚮工程 第2版 下載 mobi pdf epub txt 電子書 格式 2024
iOS應用逆嚮工程 第2版 下載 mobi epub pdf 電子書書挺不錯的
評分書中全是乾貨,十本難得的好書
評分還沒看,看起來湊活,還沒看,看起來湊活,還沒看,看起來湊活,還沒看,看起來湊活,
評分中式的技術書籍,難懂是一個共同特徵,貌似寫的詳細通俗些會顯得自己不夠厲害,當個學習綫路圖慢慢啃吧。
評分根本看不懂根本看不懂根本看不懂根本看不懂根本看不懂
評分書頁挺好的,不錯不錯
評分贊
評分不錯 618買書最實惠
評分蘋果逆嚮的書比較少,這本應該不錯瞭
iOS應用逆嚮工程 第2版 mobi epub pdf txt 電子書 格式下載 2024