![]() ![]() |
Android軟件安全與逆向分析 ![]()
《Android軟件安全與逆向分析》由淺入深、循序漸進地講解了Android系統(tǒng)的軟件安全、逆向分析與加密解密技術(shù)。包括Android軟件逆向分析和系統(tǒng)安全方面的必備知識及概念、如何靜態(tài)分析Android軟件、如何動態(tài)調(diào)試Android軟件、Android軟件的破解與反破解技術(shù)的探討,以及對典型Android病毒的全面剖析。
《Android軟件安全與逆向分析》適合所有Android應用開發(fā)者、Android系統(tǒng)開發(fā)工程師、Android系統(tǒng)安全工作者閱讀學習。
編輯的話 每一本書的誕生,都有讓人記住的事情。在這本書的出版中,我印象深刻的是三點: 一,作者豐生強在第一次給我交來樣稿時,其粗糙不規(guī)范的寫書格式和讀起來不是那么順溜的語言表達讓我囧了一下,我耐心的(也或許是有些耐著性子的?)在QQ上邊截圖邊詳細地告訴了他有哪些地方的格式被他忽略了,有哪些地方的話說得不夠清楚。 我說完后,他說他會認真修改好后再次給我發(fā)來。但說實話,我心里沒指望他第一次就能把格式給改好,因為對于第一次寫書的作者來說,這種情況幾乎不曾出現(xiàn)過。我做了繼續(xù)指導第3、4次的心理準備。讓我沒想到的是,幾天后他第二次交來的稿件就相當靚仔,讓我多少有些不相信自己的眼睛,格式規(guī)范美觀,語言流暢清楚,很難相信這是同一個人僅相隔幾天后的作品。他跟我說他是一個字一個字地來閱讀和修改每句話的。 二,他是很少的按時且保質(zhì)保量完成書稿的。對于作者,不管水平高低,大多都擅長干一件事情——拖稿,而策劃編輯不得不被迫干另一件事情——催稿。但豐生強以實際行動打破了這一魔咒,他努力工作,在合同規(guī)定的期限內(nèi)按時交來了全稿。作為對作者拖稿見怪不怪的一名策劃編輯來說,縱然不至于說是老淚縱橫吧,那也是感觸良多啊。 但從另一角度說,那些能完全視合同交稿期限為無物的作者也著實讓人不敢小覷,這得有多強大的心理素質(zhì)才能做到這一點呢,就這么心平氣地跨過了最后期限。真心讓人糾結(jié)。 三,在整個寫作過程中,在談及技術(shù)時,豐生強所表現(xiàn)出的那些熱情、專注和樂觀。我一直信奉的一點是,如果一個作者不能在他所鉆研的領(lǐng)域體會到樂趣和幸福,那這樣的作者寫出來的東西是不值得一讀的。好的內(nèi)容就像好的食材,而那份熱情和樂趣則是烹飪的手法。 現(xiàn)在,書已經(jīng)打開,希望你會喜歡。 本書策劃編輯 陳冰 2013年1月15日
推 薦 序
第一次看到生強的文章是在看雪安全論壇,他以“非蟲”的筆名發(fā)表了幾篇Android安全的文章。標題很低調(diào),內(nèi)容卻極為豐富,邏輯清晰,實踐性強,最重要的是很有“干貨”。后來得知他在寫書,一直保持關(guān)注,今日終于要出版了。 這本書的價值無疑是巨大的。 在此之前,即便我們把范圍擴大到全球,也沒有哪本書具體而系統(tǒng)地專門介紹Android逆向技術(shù)和安全分析技術(shù)。這可能有多方面的原因,但其中最重要的一點是競爭與利益。推動信息安全技術(shù)發(fā)展的,除了愛好者,大致可以分為三類:學術(shù)研究人員、企業(yè)研發(fā)人員、攻擊者。 在Android安全方向,研究人員相對更為開放——許多團隊開放了系統(tǒng)原型的源碼,或者提供了可用的工具——但有時候他們也只發(fā)表論文以介紹系統(tǒng)設計和結(jié)果,卻不公開可以復用的資源。近兩年來,頂級會議對Android安全的研究頗為青睞,他們?nèi)绱诉x擇,可以理解。 在這個市場正高速增長的產(chǎn)業(yè)中,對企業(yè)而言,核心技術(shù)更是直接關(guān)系到產(chǎn)品的功能和性能,關(guān)系到企業(yè)競爭力和市場份額,許多企業(yè)會為了擴大技術(shù)影響而發(fā)布白皮書,但真正前沿的、獨有的東西,極少會輕易公開。 攻擊者則最為神秘,為了躲避風險,他們大都想盡一切辦法隱藏自己的痕跡,低調(diào)以求生存。在地下產(chǎn)業(yè)鏈迅速形成后,對他們而言,安全技術(shù)更是非法獲利的根本保障。 在這種情況下,剛剛進入或希望進入這一領(lǐng)域的人會發(fā)現(xiàn),他們面臨的是各種零散而不成體系的、質(zhì)量參次不齊的、可能泛泛而談的、也可能已經(jīng)過時的技術(shù)資料,他們不得不去重復別人走過的路、犯別人犯過的錯,將精力消耗在這些瑣碎之中,而難以真正跟上技術(shù)的發(fā)展。 生強的這本書,無疑將大為改善這種局面,堪稱破局之作。做到這一點頗為不易,這意味著大量的閱讀、總結(jié)、嘗試和創(chuàng)造。事實上,書中介紹的很多技術(shù)和知識,我此前從未在別的地方看到過。 另一方面,在Android這個平臺,我們已經(jīng)面臨諸多的威脅。惡意代碼數(shù)量呈指數(shù)增長,并且出現(xiàn)了多種對抗分析、檢測、查殺的技術(shù);應用軟件和數(shù)字內(nèi)容的版權(quán)不斷遭到侵害,軟件破解、軟件篡改、廣告庫修改和植入、惡意代碼植入、應用內(nèi)付費破解等普遍存在;應用軟件本身的安全漏洞頻繁出現(xiàn)在國內(nèi)外互聯(lián)網(wǎng)企業(yè)的產(chǎn)品中,數(shù)據(jù)泄露和賬戶被盜等潛在風險讓人擔憂;官方系統(tǒng)、第三方定制系統(tǒng)和預裝軟件的漏洞不斷被發(fā)現(xiàn),對系統(tǒng)安全與穩(wěn)定產(chǎn)生極大的威脅;移動支付從概念逐步轉(zhuǎn)為實踐,而對通信技術(shù)的攻擊、對算法和協(xié)議的攻擊時常發(fā)生;移動設備正融入辦公環(huán)境,但移動平臺的攻擊與APT攻擊結(jié)合的趨勢日益明顯……更糟的是,隨著地下產(chǎn)業(yè)鏈的不斷成熟和擴大,以及攻擊技術(shù)的不斷發(fā)展和改進,這些威脅和相關(guān)攻擊只會來勢更兇。 毫無疑問,在Android安全上我們面臨極大的挑戰(zhàn)。在這個時候,生強的這本書起到的將是雪中送炭的作用。 安全技術(shù)幾乎都是雙刃劍,它們既能協(xié)助我們開發(fā)更有效的保護技術(shù),也幾乎必定會被攻擊者學習和參考。這里的問題是,大量安全技術(shù)的首次大范圍公開,是否會帶來廣泛的模仿和學習,從而引發(fā)更多的攻擊?在這個問題上,安全界一直存在爭議。1987年出版的一本書中首次公布了感染式病毒的反匯編代碼,引發(fā)大量模仿的新病毒出現(xiàn)。自此,這個問題成為每一本里程碑式的安全書籍都無法繞開的話題。我個人更喜歡的則是這樣一個觀點,在《信息安全工程》中,Ross Anderson說:“盡管一些惡意分子會從這樣的書中獲益,但他們大都已經(jīng)知道了這些技巧,而好人們獲得的收益會多得多! 在生強寫這本書的過程中,我們就不少細節(jié)有過交流和討論。他的認真給我留下了非常深刻的印象。與其他的安全書籍相比,這本書在這樣幾個方面尤為突出: 實踐性強。這本書的幾乎每一個部分,都結(jié)合實際例子,一步步講解如何操作。因此,它對剛?cè)腴T的人或者想快速了解其中某個話題的人會有很大的幫助。事實上,缺乏可操作性,是Android安全方面現(xiàn)有論文、白皮書、技術(shù)文章和書籍最大的問題之一,很多人讀到最后可能對內(nèi)容有了一些概念,卻不知道從何下手。但這本書則有很大不同。 時效性強。在交流中,我驚訝地發(fā)現(xiàn),剛剛發(fā)布不久的Santoku虛擬機、APIMonitor等工具,以及Androguard的新特性等,已經(jīng)出現(xiàn)在了這本書中。這意味著,生強在一邊寫作的同時,還一邊關(guān)注業(yè)界的最新進展,并做了學習、嘗試和總結(jié)。因此,這本書將具有幾乎和論文一樣的時效性。 深度和廣度適當。這本書涉及的面很廣,實際上,僅僅是目錄本身,就是一份極好的自學參考大綱。而其中最實用的那些話題,例如常見C/C++代碼結(jié)構(gòu)的ARM目標程序反匯編特點,沒有源碼情況下對Android軟件的調(diào)試技術(shù)等,都有深入的介紹。 此前,我曾寫過一本叫amatutor的Android惡意代碼分析教程,并通過網(wǎng)絡分享,后來由于時間和精力暫停了更新。這段經(jīng)歷讓我尤其深刻地體會到在這樣一個新的領(lǐng)域?qū)懗鲆槐竞脮牟灰。一直有人來信希望我能繼續(xù)寫,但自從了解到生強的這些工作,我就松了一口氣,并向他們大力推薦這本書。同時,我也向周邊的同事、同行推薦,我相信這本書的內(nèi)容可以證明它的價值。 肖梓航(Claud) 安天實驗室高級研究員 secmobi網(wǎng)創(chuàng)始人
豐生強(網(wǎng)名非蟲),Android軟件安全專家?囱┱搲疉ndroid安全版版主;安卓巴士開發(fā)交流版版主。
對Android軟件與系統(tǒng)安全有狂熱的愛好和獨到的見解,對Android系統(tǒng)的全部源代碼進行過深入地研究和分析。逆向分析實戰(zhàn)經(jīng)驗豐富。 在國內(nèi)信息安全雜志上發(fā)表過多篇有價值的軟件安全文章,目前就職于國內(nèi)某Android開發(fā)企業(yè),常年混跡于看雪論壇(ID非蟲)。
第1章 Android程序分析環(huán)境搭建
1.1 Windows分析環(huán)境搭建 1.1.1 安裝JDK 1.1.2 安裝Android SDK 1.1.3 安裝Android NDK 1.1.4 Eclipse集成開發(fā)環(huán)境 1.1.5 安裝CDT、ADT插件 1.1.6 創(chuàng)建Android Virtual Device 1.1.7 使用到的工具 1.2 Linux分析環(huán)境搭建 1.2.1 本書的Linux環(huán)境 1.2.2 安裝JDK 1.2.3 在Ubuntu上安裝Android SDK 1.2.4 在Ubuntu上安裝Android NDK 1.2.5 在Ubuntu上安裝Eclipse集成開發(fā)環(huán)境 1.2.6 在Ubuntu上安裝CDT、ADT插件 1.2.7 創(chuàng)建Android Virtual Device 1.2.8 使用到的工具 1.3 本章小結(jié) 第2章 如何分析Android程序 2.1 編寫第一個Android程序 2.1.1 使用Eclipse創(chuàng)建Android工程 2.1.2 編譯生成APK文件 2.2 破解第一個程序 2.2.1 如何動手? 2.2.2 反編譯APK文件 2.2.3 分析APK文件 2.2.4 修改Smali文件代碼 2.2.5 重新編譯APK文件并簽名 2.2.6 安裝測試 2.3 本章小結(jié) 第3章 進入Android Dalvik虛擬機 3.1 Dalvik虛擬機的特點——掌握Android程序的運行原理 3.1.1 Dalvik虛擬機概述 3.1.2 Dalvik虛擬機與Java虛擬機的區(qū)別 3.1.3 Dalvik虛擬機是如何執(zhí)行程序的 3.1.4 關(guān)于Dalvik虛擬機JIT(即時編譯) 3.2 Dalvik匯編語言基礎(chǔ)為分析Android程序做準備 3.2.1 Dalvik指令格式 3.2.2 DEX文件反匯編工具 3.2.3 了解Dalvik寄存器 3.2.4 兩種不同的寄存器表示方法——v命名法與p命名法 3.2.5 Dalvik字節(jié)碼的類型、方法與字段表示方法 3.3 Dalvik指令集 3.3.1 指令特點 3.3.2 空操作指令 3.3.3 數(shù)據(jù)操作指令 3.3.4 返回指令 3.3.5 數(shù)據(jù)定義指令 3.3.6 鎖指令 3.3.7 實例操作指令 3.3.8 數(shù)組操作指令 3.3.9 異常指令 3.3.10 跳轉(zhuǎn)指令 3.3.11 比較指令 3.3.12 字段操作指令 3.3.13 方法調(diào)用指令 3.3.14 數(shù)據(jù)轉(zhuǎn)換指令 3.3.15 數(shù)據(jù)運算指令 3.4 Dalvik指令集練習——寫一個Dalvik版的Hello World 3.4.1 編寫smali文件 3.4.2 編譯smali文件 3.4.3 測試運行 3.5 本章小結(jié) 第4章 Android可執(zhí)行文件 4.1 Android程序的生成步驟 4.2 Android程序的安裝流程 4.3 dex文件格式 4.3.1 dex文件中的數(shù)據(jù)結(jié)構(gòu) 4.3.2 dex文件整體結(jié)構(gòu) 4.3.3 dex文件結(jié)構(gòu)分析 4.4 odex文件格式 4.4.1 如何生成odex文件 4.4.2 odex文件整體結(jié)構(gòu) 4.4.3 odex文件結(jié)構(gòu)分析 4.5 dex文件的驗證與優(yōu)化工具dexopt的工作過程 4.6 Android應用程序另類破解方法 4.7 本章小結(jié) 第5章 靜態(tài)分析Android程序 5.1 什么是靜態(tài)分析 5.2 快速定位Android程序的關(guān)鍵代碼 5.2.1 反編譯apk程序 5.2.2 程序的主Activity 5.2.3 需重點關(guān)注的Application類 5.2.4 如何定位關(guān)鍵代碼——六種方法 5.3 smali文件格式 5.4 Android程序中的類 5.4.1 內(nèi)部類 5.4.2 監(jiān)聽器 5.4.3 注解類 5.4.4 自動生成的類 5.5 閱讀反編譯的smali代碼 5.5.1 循環(huán)語句 5.5.2 switch分支語句 5.5.3 try/catch語句 5.6 使用IDA Pro靜態(tài)分析Android程序 5.6.1 IDA Pro對Android的支持 5.6.2 如何操作 5.6.3 定位關(guān)鍵代碼——使用IDA Pro進行破解的實例 5.7 惡意軟件分析工具包——Androguard 5.7.1 Androguard的安裝與配置 5.7.2 Androguard的使用方法 5.7.3 使用Androguard配合Gephi進行靜態(tài)分析 5.7.4 使用androlyze.py進行靜態(tài)分析 5.8 其他靜態(tài)分析工具 5.9 閱讀反編譯的Java代碼 5.9.1 使用dex2jar生成jar文件 5.9.2 使用jd-gui查看jar文件的源碼 5.10 集成分析環(huán)境——santoku 5.11 本章小結(jié) 第6章 基于Android的ARM匯編語言基礎(chǔ)——逆向原生! 6.1 Android與ARM處理器 6.1.1 ARM處理器架構(gòu)概述 6.1.2 ARM處理器家族 6.1.3 Android支持的處理器架構(gòu) 6.2 原生程序與ARM匯編語言——逆向你的原生Hello ARM 6.2.1 原生程序逆向初步 6.2.2 原生程序的生成過程 6.2.3 必須了解的ARM知識 6.3 ARM匯編語言程序結(jié)構(gòu) 6.3.1 完整的ARM匯編程序 6.3.2 處理器架構(gòu)定義 6.3.3 段定義 6.3.4 注釋與標號 6.3.5 匯編器指令 6.3.6 子程序與參數(shù)傳遞 6.4 ARM處理器尋址方式 6.4.1 立即尋址 6.4.2 寄存器尋址 6.4.3 寄存器移位尋址 6.4.4 寄存器間接尋址 6.4.5 基址尋址 6.4.6 多寄存器尋址 6.4.7 堆棧尋址 6.4.8 塊拷貝尋址 6.4.9 相對尋址 6.5 ARM與Thumb指令集 6.5.1 指令格式 6.5.2 跳轉(zhuǎn)指令 6.5.3 存儲器訪問指令 6.5.4 數(shù)據(jù)處理指令 6.5.5 其他指令 6.6 用于多媒體編程與浮點計算的NEON與VFP指令集 6.7 本章小結(jié) 第7章 Android NDK程序逆向分析 7.1 Android中的原生程序 7.1.1 編寫一個例子程序 7.1.2 如何編譯原生程序 7.2 原生程序的啟動流程分析 7.2.1 原生程序的入口函數(shù) 7.2.2 main函數(shù)究竟何時被執(zhí)行 7.3 原生文件格式 7.4 原生C程序逆向分析 7.4.1 原生程序的分析方法 7.4.2 for循環(huán)語句反匯編代碼的特點 7.4.3 if...else分支語句反匯編代碼的特點 7.4.4 while循環(huán)語句反匯編代碼的特點 7.4.5 switch分支語句反匯編代碼的特點 7.4.6 原生程序的編譯時優(yōu)化 7.5 原生C++程序逆向分析 7.5.1 C++類的逆向 7.5.2 Android NDK對C++特性的支持 7.5.3 靜態(tài)鏈接STL與動態(tài)鏈接STL的代碼區(qū)別 7.6 Android NDK JNI API逆向分析 7.6.1 Android NDK提供了哪些函數(shù) 7.6.2 如何靜態(tài)分析Android NDK程序 7.7 本章小結(jié) 第8章 動態(tài)調(diào)試Android程序 8.1 Android動態(tài)調(diào)試支持 8.2 DDMS的使用 8.2.1 如何啟動DDMS 8.2.2 使用LogCat查看調(diào)試信息 8.3 定位關(guān)鍵代碼 8.3.1 代碼注入法——讓程序自己吐出注冊碼 8.3.2 棧跟蹤法 8.3.3 Method Profiling 8.4 使用AndBug調(diào)試Android程序 8.4.1 安裝AndBug 8.4.2 使用AndBug 8.5 使用IDA Pro調(diào)試Android原生程序 8.5.1 調(diào)試Android原生程序 8.5.2 調(diào)試Android原生動態(tài)鏈接庫 8.6 使用gdb調(diào)試Android原生程序 8.6.1 編譯gdb與gdbserver 8.6.2 如何調(diào)試 8.7 本章小結(jié) 第9章 Android軟件的破解技術(shù) 9.1 試用版軟件 9.1.1 試用版軟件的種類 9.1.2 實例破解——針對授權(quán)KEY方式的破解 9.2 序列號保護 9.3 網(wǎng)絡驗證 9.3.1 網(wǎng)絡驗證保護思路 9.3.2 實例破解——針對網(wǎng)絡驗證方式的破解 9.4 In-app Billing(應用內(nèi)付費) 9.4.1 In-app Billing原理 9.4.2 In-app Billing破解方法 9.5 Google Play License保護 9.5.1 Google Play License保護機制 9.5.2 實例破解——針對Google Play License方式的破解 9.6 重啟驗證 9.6.1 重啟驗證保護思路 9.6.2 實例破解——針對重啟驗證方式的破解 9.7 如何破解其他類型的Android程序 9.7.1 Mono for Android開發(fā)的程序及其破解方法 9.7.2 Qt for Android開發(fā)的程序及其破解方法 9.8 本章小結(jié) 第10章 Android程序的反破解技術(shù) 10.1 對抗反編譯 10.1.1 如何對抗反編譯工具 10.1.2 對抗dex2jar 10.2 對抗靜態(tài)分析 10.2.1 代碼混淆技術(shù) 10.2.2 NDK保護 10.2.3 外殼保護 10.3 對抗動態(tài)調(diào)試 10.3.1 檢測調(diào)試器 10.3.2 檢測模擬器 10.4 防止重編譯 10.4.1 檢查簽名 10.4.2 校驗保護 10.5 本章小結(jié) 第11章 Android系統(tǒng)攻擊與防范 11.1 Android系統(tǒng)安全概述 11.2 手機ROOT帶來的危害 11.2.1 為什么要ROOT手機 11.2.2 手機ROOT后帶來的安全隱患 11.2.3 Android手機ROOT原理 11.3 Android權(quán)限攻擊 11.3.1 Android權(quán)限檢查機制 11.3.2 串謀權(quán)限攻擊 11.3.3 權(quán)限攻擊檢測 11.4 Android組件安全 11.4.1 Activity安全及Activity劫持演示 11.4.2 Broadcast Receiver 安全 11.4.3 Service安全 11.4.4 Content Provider安全 11.5 數(shù)據(jù)安全 11.5.1 外部存儲安全 11.5.2 內(nèi)部存儲安全 11.5.3 數(shù)據(jù)通信安全 11.6 ROM安全 11.6.1 ROM的種類 11.6.2 ROM的定制過程 11.6.3 定制ROM的安全隱患 11.6.4 如何防范 11.7 本章小結(jié) 第12章 DroidKongFu變種病毒實例分析 12.1 DroidKongFu病毒介紹 12.2 配置病毒分析環(huán)境 12.3 病毒執(zhí)行狀態(tài)分析 12.3.1 使用APIMonitor初步分析 12.3.2 使用DroidBox動態(tài)分析 12.3.3 其他動態(tài)分析工具 12.4 病毒代碼逆向分析 12.4.1 Java層啟動代碼分析 12.4.2 Native層啟動代碼分析 12.4.3 Native層病毒核心分析 12.5 DroidKongFu病毒框架總結(jié) 12.6 病毒防治 12.7 本章小結(jié) ……
近幾年,Android在國內(nèi)的發(fā)展極其迅猛,這除了相關(guān)產(chǎn)品強大的功能與豐富的應用外,更是因為它優(yōu)良的性能表現(xiàn)吸引著用戶。2011年可謂是Android的風光年,從手機生產(chǎn)商到應用開發(fā)者都紛紛捧場,短短幾個月的時間,Android在國內(nèi)紅遍了大街小巷,截止到2012年的第一個季度,Android在國內(nèi)的市場份額就超過60%,將曾經(jīng)風靡一時的塞班系統(tǒng)遠遠的甩在了身后,與此同時,它也帶動了國內(nèi)移動互聯(lián)網(wǎng)行業(yè)的發(fā)展,創(chuàng)造了更多就業(yè)的崗位,國內(nèi)IT人士為之雀躍歡呼。
隨著Android在國內(nèi)的興起,基于Android的平臺應用需求也越來越復雜。形形色色的軟件壯大了Android市場,也豐富了我們的生產(chǎn)生活,越來越多的人從起初的嘗試到享受再到依賴,沉浸在Android的神奇海洋中。事情有利也總有弊,即使Android如此優(yōu)秀也會有怨聲載道的時候,各種信息泄露、惡意扣費、系統(tǒng)被破壞的事件也屢見不鮮,Android系統(tǒng)的安全也逐漸成為人們所關(guān)注的話題。 如今市場上講解Android開發(fā)的書籍已經(jīng)有很多了,從應用軟件開發(fā)層到系統(tǒng)底層的研究均豐富涵蓋,其中不乏一些經(jīng)典之作,然而遺憾的是,分析Android軟件及系統(tǒng)安全的書籍卻一本也沒有,而且相關(guān)的中文資料也非常匱乏,這使得普通用戶以及大多數(shù)Android應用開發(fā)者對系統(tǒng)的安全防護及軟件本身沒有一個全面理性的認識。因此,筆者決定將自身的實際經(jīng)驗整理,編寫為本書。 內(nèi)容導讀 本書主要從軟件安全和系統(tǒng)安全兩個方面講解Android平臺存在的攻擊與防范方法。 第1章和第2章主要介紹Android分析環(huán)境的搭建與Android程序的分析方法。 第3章詳細介紹了Dalvik VM匯編語言,它是Android平臺上進行安全分析工作的基礎(chǔ)知識,讀者只有掌握了這部分內(nèi)容才能順利地學習后面的章節(jié)。 第4章介紹了Android平臺的可執(zhí)行文件,它是Android軟件得以運行的基石,我們大多數(shù)的分析工作都是基于它,因此這部分內(nèi)容必須掌握。 第5章起正式開始了對Android程序的分析,對這部分的理解與運用完全是建立在前面章節(jié)的基礎(chǔ)之上。這一章詳細講述了Android軟件的各種反匯編代碼特征,以及可供使用的分析工具,如何合理搭配使用它們是這章需要學習的重點。 第6章主要講解ARM匯編語言的基礎(chǔ)知識,在這一章中,會對ARM匯編指令集做一個簡要的介紹,為下一章的學習做鋪墊。 第7章是本書的一個高級部分,主要介紹了基于ARM架構(gòu)的Android原生程序的特點以及分析它們的方法,讀者需要在這一章中仔細的體會并實踐,鑒于此類程序目前在市場上比較流行,讀者在閱讀時需要多進行實踐操作,多動手分析這類代碼,加強自己的逆向分析能力。 第8章介紹了Android平臺上軟件的動態(tài)調(diào)試技術(shù),動態(tài)調(diào)試與靜態(tài)分析是逆向分析程序時的兩大主要技術(shù)手段,各有著優(yōu)缺點,通過動態(tài)調(diào)試可以讓你看到軟件運行到某一點時程序的狀態(tài),對了解程序執(zhí)行流程有很大的幫助。 第9章詳細介紹了Android平臺軟件的破解方法。主要分析了目前市場上一些常見的Android程序保護方法,分析它們的保護效果以及介紹如何對它們進行破解,通過對本章的學習,讀者會對Android平臺上的軟件安全有一種“恍然大悟”的感覺。 第10章介紹了在面對軟件可能被破解的情況下,如何加強Android平臺軟件的保護,內(nèi)容與第9章是對立的,只有同時掌握了攻與防,才能將軟件安全真正地掌握到位。 第11章從系統(tǒng)安全的角度出發(fā),分析了Android系統(tǒng)中不同環(huán)節(jié)可能存在的安全隱患,同時介紹了面對這些安全問題時,如何做出相應的保護措施。另外,本章的部分小節(jié)還從開發(fā)人員的角度出發(fā),講解不安全代碼對系統(tǒng)造成的危害,讀者在掌握這部分內(nèi)容后,編寫代碼的安全意識會明顯提高。 第12章采用病毒實戰(zhàn)分析的方式,將前面所學的知識全面展示并加以應用,讓讀者能徹底地掌握分析Android程序的方法。本章的內(nèi)容詳實、知識涵蓋范圍廣,讀者完全掌握本章內(nèi)容后,以后動手分析Android程序時,便能夠信手拈來。 為了使讀者對文中所講述的內(nèi)容有深刻的認識,并且在閱讀時避免感到乏味,書中的內(nèi)容不會涉及太多的基礎(chǔ)理論知識,而更多的是采用動手實踐的方式進行講解,所以在閱讀本書前假定讀者已經(jīng)掌握了Android程序開發(fā)所必備的基礎(chǔ)知識,如果讀者還不具備這些基礎(chǔ)知識的話,請先打好基礎(chǔ)后再閱讀本書。 ……
你還可能感興趣
我要評論
|