Android應用安全實戰(zhàn):Frida協(xié)議分析
定 價:89 元
叢書名:網絡空間安全技術叢書
Android應用安全是一個熱門話題,本書從Hook框架Frida出發(fā),由淺入深,帶領讀者掌握Frida框架的使用方法,并讓讀者能夠解決逆向分析、安全測試、算法還原和關鍵代碼快速定位等實際問題。Android應用安全實戰(zhàn):Frida協(xié)議分析共8章,首先講解了Frida框架環(huán)境安裝配置,隨后講解了如何使用Frida框架對Android應用的Java層和so層進行分析,并設計了算法自吐框架,*后講解了Frida框架的高級應用和算法轉發(fā)。從*基礎的環(huán)境安裝到中高級逆向技巧均有涉獵,能夠讓讀者在實戰(zhàn)中掌握Frida框架,并應用于Android逆向分析之中。Android應用安全實戰(zhàn):Frida協(xié)議分析內容翔實,理論與實戰(zhàn)相結合,可供Android開發(fā)工程師、Android應用安全工程師、爬蟲工程師、逆向分析工程師以及想要從事逆向領域工作的人員學習。
《Android應用安全實戰(zhàn):Frida協(xié)議分析》融合了資深爬蟲工程師多年實戰(zhàn)經驗,采用理論和實踐相結合的模式,六大實戰(zhàn)案例,帶領讀者掌握逆向分析,進階Android端爬蟲。語言簡練、內容實用,配有270分鐘二維碼視頻,使讀者身臨其境,迅速、深入地掌握Frida框架的使用方法。
前言Android應用的安全問題在業(yè)內備受關注,但這方面相關的系統(tǒng)性資料卻不多。本書從Hook框架Frida出發(fā)來講解如何對Android應用的協(xié)議進行分析。這本書講了什么本書共8章,全書整體圍繞Frida框架進行講解,并配合大量實戰(zhàn),相信會讓讀者學會該框架的使用方法。第1章介紹的是在Android系統(tǒng)下使用Frida框架進行逆向的環(huán)境搭建。 當然這里安裝的環(huán)境只是基礎的環(huán)境,實際上Android逆向需要配置的環(huán)境比這多得多。 比如反編譯dex需要的jadx、jeb工具,反編譯so文件需要的IDA工具,開發(fā)App應用程序需要的Android Studio,以及各種抓包工具等。 不過,一開始能夠掌握基本的逆向工具就已經足夠了。第2章主要介紹Java層的逆向分析,Android應用常見的代碼都存放在Java層,因此對熟悉Android正向開發(fā)的讀者來說,學習逆向也是較為簡單的。 配合本章的實戰(zhàn),學習完這章之后,一般較為簡單的Android應用的協(xié)議分析讀者就都可以解決了。第3章主要介紹關鍵代碼快速定位,看似只是一堆分散的技巧羅列,實際上是進行逆向工作基本的方法。 因為在實際的逆向分析中,不可能去逐行查看反編譯后的代碼,而只憑感覺定位也是不夠的,這里把一些常用的定位方法總結起來,能夠幫助讀者快速提高逆向效率。第4章介紹了算法自吐 腳本的開發(fā),本章的內容比較重要,因為它擺脫了以往將純逆向視為體力勞動的片面思想,進入了更抽象的框架開發(fā)。 基于Frida的框架開發(fā)并不難,所謂熟能生巧,把日常逆向工作中常用的操作封裝起來,就可以慢慢積累成框架。 讀者可以在完成本章的學習后對自吐 框架進行完善,增加更多功能。第5章介紹了so層的逆向分析,只要是有志于在逆向分析領域有所精進的逆向工作者,都必須學會so層的逆向分析,因為一般有難度的Android應用都會使用so層加密。第6章介紹了JNI函數的Hook和快速定位,在so層逆向分析中,經常需要和JNI函數打交道,掌握JNI函數的Hook是必要的。第7章講解內存讀寫、各種系統(tǒng)函數的Hook,以及各種代碼的trace方法。第8章介紹了Frida框架算法轉發(fā)方案,能夠將Android應用本身當作解密工具,也可以建立解密API方便調用。學習本書需要注意的事項書中的Hook框架Frida在命令中多是首字母小寫形式frida。App應用程序指的是Android系統(tǒng)下的APK。當提到某函數的參數個數是3,指的是從1開始共3個參數。當提到某函數的第3個參數,指的是從0開始的第4個參數。另外,本書的初衷是為了讓讀者掌握Frida這一Hook框架,并將其用于工作和學習當中,為避免對書中提供的案例造成不利影響,本書對涉及的具體應用名和包名都會進行省略。什么人適合看這本書本書是零基礎,可以說,只要是對Android應用安全感興趣的人都可以閱讀。 當然,具有一定Android開發(fā)基礎的人讀起來會更加輕松。 值得一提的是,當下熱門的網絡爬蟲,在對Android應用進行數據爬取時,必然要用到書里的知識。 本書貴在實用,沒有講解大量簡單的基礎知識,而是以實戰(zhàn)為主,對大量實際Android應用進行分析,跟著書中內容認真操作會讓你飛速進步。本書的資源有哪些本書的學習需要配合卓斌開發(fā)的Android測試應用,因為書中的實操大多是在該應用程序上實踐的。 此外,也會為讀者提供書中進行逆向分析的案例樣本和所有代碼(掃描封底二維碼即可獲得),而且部分章節(jié)還配有視頻(掃描書中二維碼即可觀看)。讀者如果在操作過程中有任何問題,或者有解決不了的難題,歡迎聯系我們,可以添加微信(xiaojianbang8888或者Charleval),也可以加入讀者QQ群945868932。 本人和卓斌致力于安全逆向教育多年,涉及領域包括網絡爬蟲、JavaScript逆向、Android逆向、深度學習圖像識別等。 讀者有進一步學習的想法,或者對于書中的知識有任何問題,都可以通過以上渠道聯系我們,我們可以共同討論解決。由于編者水平有限,對書中的不足之處,懇請讀者批評指正。李岳陽
李岳陽,畢業(yè)于北京大學,小肩膀教育聯合創(chuàng)始人。曾于有道精品課教授Python編程,后為網易云課堂特邀專家,開設包括爬蟲工程師等多門課程,擁有多年授課經驗。曾出版書籍《反爬蟲AST原理與還原混淆實戰(zhàn)》。卓斌,小肩膀教育創(chuàng)始人,51CTO年度新銳講師。擁有十余年安全開發(fā)培訓經驗,多年來研發(fā)多門Web和Android端逆向課程,深受學員好評。
前言第1章 Frida逆向環(huán)境搭建1.1 Frida框架介紹1.2 Frida框架環(huán)境搭建1.2.1 Python的安裝1.2.2 Visual Studio Code的安裝1.2.3 Node.js的安裝1.2.4 Frida的安裝1.3 Android平臺環(huán)境搭建1.3.1 Android系統(tǒng)刷機1.3.2 獲取Android系統(tǒng)管理員權限1.3.3 frida-server配置第2章 Frida框架Java層應用2.1 Frida框架的Hook方法2.1.1 Hook靜態(tài)方法和實例方法2.1.2 Hook構造方法2.1.3 Hook重載方法2.1.4 Hook方法的所有重載2.1.5 對象參數的構造2.1.6 主動調用Java函數2.2 Frida框架Hook類2.2.1 獲取和修改類的字段2.2.2 Hook內部類和匿名類2.2.3 枚舉所有已加載的類和枚舉類的所有方法2.2.4 Hook類的所有方法2.3 實戰(zhàn):某嘟牛協(xié)議分析2.3.1 某嘟牛Java層登錄協(xié)議分析2.3.2 Frida框架輔助協(xié)議分析2.3.3 Frida框架生成加密參數第3章 關鍵代碼快速定位3.1 集合的Hook3.1.1 Hook HashMap定位散列表3.1.2 打印函數棧3.1.3 Hook ArrayList定位動態(tài)數組3.2 組件與事件的Hook3.2.1 Hook Toast定位提示3.2.2 Hook findViewById定位組件3.2.3 Hook setOnClickListener定位按鈕點擊事件3.3 常用類的Hook3.3.1 Hook TextUtils定位用戶輸入3.3.2 Hook JSONObject定位JSON數據3.3.3 Hook Collections定位排序算法3.3.4 Hook String定位字符轉換3.3.5 Hook StringBuilder定位字符串操作3.3.6 Hook Base64定位編碼3.4 其他類的定位3.4.1 Hook定位接口的實現類3.4.2 Hook定位抽象類的實現類3.5 實戰(zhàn):去除應用程序的強制升級第4章 算法自吐腳本開發(fā)4.1 工具函數封裝4.2 Frida Hook MD5算法4.2.1 Hook MD5算法update方法4.2.2 Hook MD5算法digest方法4.3 Frida Hook MAC算法4.3.1 Hook MAC算法密鑰4.3.2 Hook MAC算法update方法4.3.3 Hook MAC算法doFinal方法4.4 Frida Hook數字簽名算法4.4.1 Hook 數字簽名算法update方法4.4.2 Hook 數字簽名算法sign方法4.5 Objection輔助Hook4.5.1 Objection的安裝和基本使用4.5.2 實戰(zhàn):某電競界面跳轉第5章 Frida框架so層基本應用5.1 獲取Module5.1.1 通過模塊名來獲取Module5.1.2 通過地址來獲取Module5.1.3 Process中的常用屬性和方法5.2 枚舉符號5.2.1 枚舉模塊的導入表5.2.2 枚舉模塊的導出表5.2.3 枚舉模塊的符號表5.2.4 Module中的常用屬性和方法5.3 Frida Hook so函數5.3.1 Hook導出函數5.3.2 從給定地址查看內存數據5.3.3 Hook任意函數5.3.4 獲取指針參數返回值5.3.5 Frida inlineHook獲取函數執(zhí)行結果5.4 Frida修改函數參數與返回值5.4.1 修改函數數值參數與返回值5.4.2 修改字符串參數5.5 實戰(zhàn):某熱點登錄協(xié)議分析第6章 JNI函數的Hook與快速定位6.1 JNI函數的Hook6.1.1 JNIEnv的獲取6.1.2 枚舉libart符號表來Hook6.1.3 通過計算地址的方式來Hook6.2 主動調用so函數6.2.1 Frida API主動調用JNI函數6.2.2 so層文件打印函數棧6.2.3 DebugSymbol類6.2.4 so層主動調用任意函數6.2.5 通過NativeFunction主動調用JNI函數6.3 JNI函數注冊的快速定位6.3.1 Hook dlsym獲取函數地址6.3.2 Hook RegisterNatives獲取函數地址6.4 ollvm混淆應用協(xié)議分析實戰(zhàn)6.4.1 jnitrace工具的使用6.4.2 實戰(zhàn):某App應用程序協(xié)議分析第7章 Frida框架so層進階應用7.1 Frida操作內存數據7.1.1 內存讀寫7.1.2 Frida修改so函數代碼7.1.3 Frida 從內存中導出 so函數7.1.4 ollvm字符串解密7.1.5 構造二級指針7.1.6 讀寫文件7.2 Frida其他常用API介紹7.2.1 NativePointer類的常用方法7.2.2 Memory的常用方法7.2.3 替換函數7.3 Frida進階Hook7.3.1 Hook系統(tǒng)函數dlopen7.3.2 Hook系統(tǒng)函數JNI_Onload7.3.3 Hook系統(tǒng)函數initarray7.3.4 Hook系統(tǒng)函數pthread_create7.3.5 監(jiān)控內存讀寫7.3.6 函數追蹤工具frida-trace7.3.7 Frida API的簡單封裝7.3.8 代碼跟蹤引擎stalker7.4 實戰(zhàn):某觀察登錄協(xié)議分析第8章 Frida框架算法轉發(fā)方案8.1 Frida的Python庫使用8.1.1 Frida注入方式8.1.2 spawn方式啟動與連接非標準端口8.2 Frida與Python交互8.3 Frida的RPC調用8.4 實戰(zhàn):某嘟牛Frida算法轉發(fā)