-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

iOS應用逆向與安全

( 簡體 字)
作者:劉培慶類別:1. -> 程式設計 -> 手機程式 -> iPhone
譯者:
出版社:電子工業出版社iOS應用逆向與安全 3dWoo書號: 49222
詢問書籍請說出此書號!

缺書
NT售價: 425

出版日:5/1/2018
頁數:404
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121340994
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

推薦序

第一次和劉培慶見面是在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上面找到:
聲明
本書的寫作花費了大量的時間和心血,我只是想幫助大家在學習過程中少走彎路、拓寬知識面、增加技術積累,所以,請支持正版書籍,堅決抵制盜版!另外,本書內容僅供技術學習和研究之用,請勿將本書內容用于非法商業用途。
勘誤
由于知識水平有限,寫作過程也比較匆忙,書中難免出現錯誤及不足,歡迎各位讀者指正。同時,我為本書開設了一個提交issue的項目
致謝
感謝我的家人,在我成長的路上一直支持我、鼓勵我。
感謝我異地三年的女友,很抱歉沒有陪在你的身邊。即便如此,你還是不離不棄,一直支持我的選擇。
感謝念茜、狗神及在我的學習路上給予我幫助的人,感謝在網易期間的所有同事,是你們讓我不斷成長。
感謝電子工業出版社提供的平臺,感謝編輯潘昕對本書內容的把控和指導。
感謝正在閱讀本書的你,謝謝你的支持和信任。

劉培慶
2018年4月,于杭州
內容簡介:

本書從正向開發、工具的使用、逆向實戰及安全保護等方面,對iOS應用的逆向與安全進行了講解。本書內容包括基本概念、逆向環境的準備、常用逆向分析工具、類的結構、App簽名、Mach-O文件格式、hook原理等,并通過在越獄平臺和非越獄平臺上的逆向分析實例,帶領讀者學習逆向分析的思路和方法。在應用安全及保護方面,本書內容涉及網絡傳輸、安全檢測、代碼混淆等。

目錄:

第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
序: