macOS軟件安全與逆向分析
內容描述
本書深入介紹了macOS系統的軟件安全、逆向分析與加密解密技術,主要包括macOS軟件的開發基礎、macOS系統工作機制、macOS軟件調試接口與機制、二進製程序的格式、反匯編技術、逆向與動態調試技術、反破解技術以及系統安全與反病毒。
本書適合所有macOS平臺軟件開發工程師、信息安全專業學生、信息安全專業從業人員閱讀學習。
目錄大綱
第1章如何分析macOS軟件
1.1分析環境搭建
1.1.1安裝Clang
1.1.2HTEditor
1.1.3Homebrew
1.2第一個macOS程序
1.3使用HTEditor進行破解
1.4本章小結
第2章系統安全架構
2.1系統架構概述
2.1.1shell環境
2.1.2目錄結構
2.1.3文件權限
2.2系統調用
2.3進程間通信
2.4安全框架
2.4.1CommonCrypto
2.4.2Keychain
2.4.3安全傳輸
2.5系統安全機制
2.5.1FileVault2
2.5.2代碼簽名
2.5.3ASLR/kASLR
2.5. 4沙盒
2.5.5Rootless
2.5.6Gatekeeper
2.6軟件安全開發建議
2.7本章小結
第3章軟件開發基礎
3.1Objective—C語言
3.1.1開發環境
3.1.2Objective—C語言特性
3.1.3內存管理
3.2Swift語言
3.2.1Playground
3.2.2Swift語法簡介
3.3其他語言
3.4框架
3.4.1框架的開發與使用
3.4.2在Objective—C中使用Swift編寫的框架
3.4.3常用的框架
3.5第三方開發工具
3.5.1QtCreator
3.5. 2XamarinStudio
3.5.3JetBrains系列開發工具
3.5.4VisualStudoCode
3.6完整的CocoaGUI程序
3.6.1創建工程
3.6.2Storyboard和xib
3.6.3Outlet和Action機制
3.7本章小結
第4章軟件內幕
4.1可執行文件
4.2下載與安裝軟件
4.2. 1免費與付費軟件
4.2.2安裝軟件
4.3Bundle
4.3.1Bundle目錄結構
4.3.2在代碼中訪問Bundle
4.4通用二進制格式
4.5Mach—O文件格式
4.5.1Mach—O簡介
4.5.2Mach—O頭部
4.5. 3加載命令
4.5.4LCODE_SIGNATURE
4.5.5LC—SEGMENT
4.6動態庫
4.6.1構建動態庫
4.6.2dyld
4.6.3動態庫的加載
4.7靜態庫
4.7.1構建靜態庫
4.7.2靜態庫格式
4.7.3管理靜態庫
4.8框架
4.8.1構建框架
4.8.2框架的使用與安裝
4.9pkg
4.9.1構建pkg
4.9.2pkg的安裝與卸載
4.9.3pkg文件格式
4.9.4破解pkg
4.10dmg
4.10.1構建dmg
4.10.2管理dmg
4.11本章小結
第5章彙編基礎
5.1搭建彙編語言開發環境
5.2HelloWorld代碼概覽
5.3偽指令
5.4x86_64彙編基礎
5.4.1寄存器
5.4.2彙編語法
5.4.3數據傳送指令
5.4.4控制轉移指令
5.4.5棧操作指令
5.4.6運算指令
5.5與其他模塊的交互
5.5.1與C語言互相調用
5.5.2使用系統調用
5.6本章小結
第6章軟件靜態分析
6.1代碼分析與二進制分析
6.2分析工具
6.2.1Radare2
6.2.2IDAPro
6.2.3Hopper
6.3代碼分析技術
6.3.1行為分析
6.3.2資源分析
6.3.3數據分析
6.3.4流量分析
6.3.5API分析
6.4反彙編工具的使用
6.4.1反彙編
6.4.2流程圖
6.4.3偽代碼
6.5破解Mach—O程序
6.5.1定位修改點
6.5.2修改程序
6.5.3代碼簽名處理
6.5.4重新打包
6.5.5Keygen
6.6本章小結
第7章軟件動態調試與跟踪
7.1DTrace
7.1.1DTrace簡介
7.1.2DTrace示例
7.2D腳本語言
7.2.1腳本加載方式
7.2.2D語言與C語言
7.2.3D語言語法
7.2.4變量
7.2.5參數傳遞
7.2.6聚合
7.2. 7內置函數與變量
7.3調試器
7.3.1GDB
7.3.2LLDB
7.3.3IDAPro
7.3.4Hopper
7.4本章小結
第8章調試器開發
8.1概述
8.2開發環境搭建
8.2.1安裝所需環境
8.2.2編譯Saber
8.3系統調試接口
8.3.1ptrace簡介
8.3.2Mach調試接口
8.4macOS異常機制
8.4.1異常與MachRPC/IPC
8.4.2信號
8.5調試器功能實現
8.5.1調試器架構
8.5.2開始調試
8.5.3異常處理循環
8.5.4讀寫被調試進程內存
8.5.5獲取基地址與八口點
8.5.6單步調試
8.5.7斷點
8.5.8繼續運行
8.5.9反彙編
8.6本章小結
第9章破解技術
9.1軟件破解步驟
9.2常見的保護類型
9.2.1試用版&序列號
9.2.2License授權
9.2.3重啟驗證與暗樁
9.2.4防拷貝技術
9.2.5網絡驗證
9.2.6混合驗證
9.3AppStore內購機制
9.4Hook技術
9.4.1DYLD_IN5ERT_LIBRARIES
9.4.2SymboITableHook
9.4.3InlineHook
9.4.4MethodSwlzzing
9.5代碼注入
9.5.1靜態注入
9.5.2動態注入
9.5.3Hook與註入框架
9.6補丁&註冊機
9.7本章小結
第10章反破解技術
10.1反破解技術類型
10.2校驗保護
10.2.1完整性檢查
10.2.2代碼簽名驗證
10.2.3沙盒檢測
10.2.4來源檢測
10.3代碼保護
10.3.1代碼混淆
10.3.2SMC
10.3.3代碼校驗
10.3.4殼保護
10.4數據保護
10.4 .1數據清除
10.4.2數據存儲
10.4.3數據傳輸
10.5調試器對抗
10.5.1調試器檢測
10.5.2反調試
10.6Hook檢測
10.6.1MethodSwizzing檢測
10.6.2dyldHook檢測
10.7本章小結
第11章遊戲安全
11.1遊戲類型
11.2遊戲框架與引擎
11.2.1SpritcKit與SceneKit
11.2.2GameplayKit&ReplayKit
11.2.3Cocos2d—x
11.2.4Unity3D
11.3遊戲分析工具
11.3.1靜態分析工具
11.3.2動態調試工具
11.3.3資源修改工具
11.3.4內存修改工具
11.4遊戲分析方法
11.4. 1對比分析
11.4.2動態調試
11.4.3靜態補丁
11.4.4動態補丁
11.5防破解技術
11.6本章小結
第12章惡意軟件與Rootkit
12.1安全趨勢
12.1.1知名惡意軟件
12.1.2安全漏洞
12.1.3安全軟件
12.2文件關聯技術
12.3軟件自啟動技術
12.3.1LaunchItems
12.3.2LoginItems
12.3.3StanupItems
12.3.4Login/LogoutHooks
12.3.5CronJobs
12.3.6PeriodicSccipts
12.3.7AuthorizationPlugins
12.3.8BrowserExtensions
12.3.9SpotlightImporters
12.3.10QuickLookPlugins
12.3.11KernelExtensions
12.4ROotkit
12.4.1文件隱藏
12.4.2進程隱藏
12.4.3內核模塊隱藏
12.4.4Root提權
12.5本章小結
附錄macOS工具一覽表
參考資料
作者介紹
豐生強,網名非蟲,獨立軟件安全研究員,zi深安全專家,ISC2016安全訓練營獨立講師,有著豐富的軟件安全實戰經驗。自2008年起,在知名安全雜誌《黑客防線》上發表多篇技術文章,從此踏上軟件安全道路,常年混跡於國內各大軟件安全論壇。著有暢銷安全圖書《Android軟件安全與逆向分析》。
邢俊傑,zi深程序員,軟件安全愛好者,C++ Web框架Cinatra開發者,對編譯器與調試器開發有著深入的研究。現就職於國內某互聯網公司。業餘時間喜歡研究軟件與系統的底層,熱愛讀書與動畫。