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