A. android軟體安全與逆向分析的Android術語
逆向分析是一種逆向工程技術,是一種產品設計技術再現過程,即對一項目標產品進行逆向分析及研究,從而演繹並得出該產品的處理流程、組織結構、功能特性及技術規格等設計要素,以製作出功能相近,但又不完全一樣的產品。逆向工程源於商業及軍事領域中的硬體分析。其主要目的是在不能輕易獲得必要的生產信息的情況下,直接從成品分析,推導出產品的設計原理 。Android 軟體安全與逆向分析是針對Android 軟體的逆向分析,對原有APK文件進行反向研究,包括對語法,代碼等進行分析,破解原有APK的源代碼,資源文件比如圖片,音頻等等行為。
1.APK一旦被破解,反編譯之後的源碼就被破解者獲取,開發者的勞動成果就被竊取,危害了開發者的利益。
2.反編譯的APK如果被進行二次打包,那麼APP就成為盜版產品,盜版產品侵害開發者的版權
3.反編譯的產品有可能被破解者進行二次打包,注入惡意代碼,竊取用戶隱私,惡意扣除用戶手機流量和資費,獲取用戶數據等等,這些行為嚴重傷害用戶的利益。
4.盜版產品不受保護,用戶得不到合理的售後支持和服務。
在這種情況下就需要加強對安卓APK DEX文件進行保護的技術,防止反編譯。dex文件其實就是Android系統中可以在Dalvik虛擬機上直接運行的文件格式。java源碼通過ADT編譯成Smali語言這是一個優化的過程,相對於.class文件它體積小、運行效率高、被編譯後可讀性低;Smali再到class. DEX本身就是一個加殼保護的過程。 DEX文件如果未做好保護,黑客通過反編譯可讓源碼完全暴露,可利用閱讀源碼來找到App的設計流程,通過對程序流程的了解將很容易對程序進行盜版、惡意篡改、惡意代碼注入等危險行為 。
1.隔離Jave程序。這種是最根本的保護,將一些關鍵的Class文件進行加密,例如對注冊碼、序列號管理相關的類進行加密,開發人員可以將關鍵的JavaClass放在伺服器端,用戶通過伺服器介面獲取服務而不是直接通過java文件。破解者就無法獲取class文件了。目前有很多通過介面提供服務的標准和協議,比如HTTP,webservice,RPC等等。但是呢,這種方式並不是適合所有的APP,比如單機運行的程序的無法隔離Java程序。
2.對class文件進行加密保護。開發者可以將一些關鍵的class文件進行加密,比如對注冊碼,序列號管理相關的類進行加密來防止反編譯。在使用這些被加密的類之前,程序需要首先對這些類進行解密,然後才能將這些類載入在JVM中。要解密這些類,必須要通過一些硬體或是軟體才能完成。
3.轉換成本地代碼
這是一種防止反編譯的比較有效的方法。因為本地代碼往往難以被反編譯。開發人員可以選擇將整個應用程序轉換成本地代碼,或者可以選擇關鍵模塊轉換。如果僅僅轉換關鍵部分模塊,Java程序在使用這些模塊時,需要使用JNI技術進行調用。當然,在使用這種技術保護Java程序的同時,也犧牲了Java的跨平台特性。對於不同的平台,我們需要維護不同版本的本地代碼,這將加重軟體支持和維護的工作。不過對於一些關鍵的模塊,有時這種方案往往是必要的。為了保證這些本地代碼不被修改和替代,通常需要對這些代碼進行數字簽名。在使用這些本地代碼之前,往往需要對這些本地代碼進行認證,確保這些代碼沒有被黑客更改。如果簽名檢查通過,則調用相關JNI方法.
4.代碼混淆
代碼混淆是對Class文件進行重新組織和處理,使得處理後的代碼與處理前代碼完成相同的功能(語義)。但是混淆後的代碼很難被反編譯,即反編譯後得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語義。從理論上來說,黑客如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研製反混淆的工具。但是從實際情況來看,由於混淆技術的多元化發展,混淆理論的成熟,經過混淆的Java代碼還是能夠很好地防止反編譯。下面我們會詳細介紹混淆技術,因為混淆是一種保護Java程序的重要技術 。
5.第三方工具加密
上面四種方式可能要耗費開發者很大一部分精力和時間,如果想要方便的話,可以尋求第三方的加密工具。目前市場上有一些工具是可以幫助APK加密的,比較知名的是愛加密的加密平台。相對於上面四種方式,這種第三方的加密工具要更全面和專業,可以有效的保護dex文件,so庫文件,xml主配文件以及其他資源文件不被反編譯和惡意篡改。
愛加密專家提醒,這些方式並不是獨立運用的,有時候可以混合使用,根據自己的情況來定,比如說高級混淆之後還是可以使用第三方的愛加密工具進行高級保護,多一重安全。
B. Android逆向工程師是做什麼的
必須掌握的技能
1、負責安卓程序的加解密和數據傳輸分析、拆解、逆向等工作;
2 、逆向APK,了解運行過程;
3 、Andorid本地提權獲得root許可權;
4 、熟練掌握軟體逆向靜態分析、動態調試、代碼跟蹤等;
5 、熟悉Android開發,了解打包、反編譯、破解流程;
6 、so破解。
目前了解的如下:
1,加解密:這就很多了,一般都是遇到後再折騰解密,而且解密代碼和秘鑰一般都在代碼裡面。
2,Andorid本地提權獲得root許可權,一般真機是用recovery刷機包,但是病毒提權是怎麼樣的
目前掌握的一種提權的是像輸入命令行一樣輸入su並且用pm提權
還有一種是修改init.rc文件
3,ida動態調式和代碼跟蹤
4,打包,編譯和破解的流程是什麼樣的?
5,so破解:一般就是破殼。各種殼(360,娜迦等等)
加殼的另一種常用的方式是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,做一些額外的工作。大多數病毒就是基於此原理。加殼的程序經常想盡辦法阻止外部程序或軟體對加殼程序的反匯編分析或者動態分析,以達到它不可告人的目的。這種技術也常用來保護軟體版權,防止被軟體破解。
6,了解反破解的技術
目前掌握的技術有:
1,反模擬器
2,反靜態代碼分析器如:反jeb
應該也是有很多反ida的,也就是加殼。
任職要求
1、具有豐富的Android開發分析經驗,熟悉android系統架構,熟悉android安全機制;
2、精通匯編語言、Java、C/C++語言,熟悉Smali語言,對逆向工程有濃厚興趣;
3、熟練掌握ida、gdb逆向分析工具;
4、熟練掌握軟體逆向靜態分析、動態調試、代碼跟蹤等;
5、熟悉so和Java層hook;
6、熟悉Android開發,了解打包、反編譯、破解流程;
7、深入理解arm Linux和Android底層運行機制;
8、熟練掌握各種調試工具:Smali、Dedexer、Dexmp、Apktool、Dex2jar、jd-gui。
C. Android逆向書籍推薦有哪些
如下:
1、豐生強《Android軟體安全權威指南》,2019年3月出版。
2、姜維《Android應用安全防護和逆向分析》,2018年1月出版。
3、豐生強《Android軟體安全與逆向分析》,2013年2月出版。
1和3作者都是豐生強(非蟲大神),裡面有很多相同的內容,但1比3新增了這六年間新出的技術,2中作者說有幾章是非蟲的支持。
介紹
安卓(Android)是一種基於Linux內核(不包含GNU組件)的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。
D. 銆0-1銆戜粠0.1寮濮嬪Android閫嗗悜-APK鍩烘湰緇撴瀯姒傝佸垎鏋
鎺㈢儲Android閫嗗悜涓栫晫錛欰PK緇撴瀯娣卞害瑙f瀽
鍦ㄥ綋浠婄戞妧鍓嶆部錛孉ndroid閫嗗悜宸ョ▼鎴愪負涓欏硅糠浜鴻屽疄鐢ㄧ殑鎶鏈錛屽畠鎻紺轟簡杞浠惰儗鍚庣殑閫昏緫錛屽寘鎷瀵嗙爜瀛﹀湪鍐呯殑澶嶆潅鏈哄埗銆侫PK錛岃繖涓鐪嬩技鏅閫氱殑鏂囦歡錛屽叾瀹為殣鈃忕潃涓涓涓板瘜鑰岀粨鏋勫寲鐨勪笘鐣屻傚畠灝卞儚涓涓鍔犲瘑鐨勫疂綆憋紝鏍稿績鐨勯掗鍖欏氨鏄痙ex鏂囦歡錛岃繖鏄閫嗗悜鍒嗘瀽鐨勯噸涓涔嬮噸銆傚埆鎷呭績錛屽嵆浣誇綘鏄鍒濆﹁咃紝甯傞潰涓婃湁浼楀氳嚜鍔ㄥ寲宸ュ叿鍙浠ュ崗鍔╀綘杞繪澗鍏ラ棬銆
APK涓鐨勮祫婧愭枃浠跺垎涓轟袱澶ч儴鍒嗭細闈欐佺殑assets錛堟湭緙栬瘧錛屽姞杞介熷害蹇浣嗗崰鐢ㄧ┖闂達級鍜岀紪璇戝悗鐨res錛堝寘鍚鍥劇墖銆佸竷灞鍜屽艱祫婧愶紝緋葷粺浼氳嚜鍔ㄥ垎閰嶅敮涓鏍囪瘑絎︼級銆俵ib鏂囦歡鍖哄垯鈃忕潃搴旂敤渚濊禆鐨勫簱璧勬簮錛屽畠浠鏄疉ndroid緋葷粺涓鍙鍏變韓鐨勫疂璐佃祫婧愶紝濡俵ibc.so鍜宭ibm.so錛屽瑰簲涓嶅悓CPU鏋舵瀯鐨勭増鏈錛屽俛rmeabi銆乤rmeabi-v7a鍜寈86銆
AndroidManifest.xml鏄搴旂敤鐨勯厤緗娓呭崟錛屽畠灝卞儚涓涓璇﹀敖鐨勮存槑涔︼紝鍖呭惈浜嗗簲鐢ㄧ殑鍚嶇О銆佹墍闇鐨勬潈闄愬0鏄庡拰緇勪歡淇℃伅銆傚湪鎵撳寘榪囩▼涓錛屽畠浼氳宓屽叆APK錛屽畨瑁呮椂緋葷粺浼氬規潈闄愯繘琛屼弗鏍肩殑媯鏌ャ傝宺esources.arsc鍒欐槸璧勬簮鏄犲皠鐨勫瓨鍌ㄥ簱錛孉RSC鏂囦歡鍒欐槸璧勬簮ID鐨勭儲寮曪紝渚誇簬緋葷粺蹇閫熷畾浣嶅拰鍔犺澆銆
絳懼悕鏂囦歡META-INF錛屽氨鍍廇PK鐨勮韓浠借瘉錛岃板綍浜嗙懼悕榪囩▼錛岀『淇濅簡APK鐨勫畬鏁存у拰瀹夊叏鎬с傚逛簬宸茬懼悕鐨凙PK錛岄渶閬靛驚v1鎴杤2鐨勯獙璇佹柟妗堬紝榪欐槸楠岃瘉鍏跺悎娉曟х殑鍏抽敭姝ラゃ傛繁鍏ョ悊瑙h繖浜涘簳灞傛満鍒訛紝鍙浠ラ氳繃闃呰葷郴緇熸灦鏋勮﹁В銆佸弽緙栬瘧鏁欑▼浠ュ強璧勬簮鏂囦歡鏍煎紡瑙f瀽絳変笓涓氭枃絝狅紝榪涗竴姝ユ彁鍗囦綘鐨勯嗗悜鎶鑳姐
Android閫嗗悜騫墮潪楂樹笉鍙鏀錛岃屾槸鎶鏈榪涙ョ殑妗ユ侊紝榪炴帴鐫寮鍙戣呬笌璁懼囩殑鍐呭湪閫昏緫銆備粠APK鐨勫熀鏈緇撴瀯寮濮嬶紝璁╂垜浠涓璧鋒彮寮Android涓栫晫紲炵樼殑闈㈢罕銆
E. 安卓開發需要學習什麼
學習分三個階段:
1,Android基礎階段:平台架構特性(JAVA/C) Market/應用程序組件 環境搭建與部署/打包與發布 AVD/DDMS/AAPT 調試與測試 相關資源訪問/資源製作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深層實現
2,Android進階初級:組件Widget/ 菜單Menu/ 布局Layout 詳解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL資料庫原理,。
SQLite /SharedPreferences/File詳解 多媒體Audio/Video/Camera 詳解
3,Android進階高級:藍牙/WIFI SMS/MMS 應用實現 深層次解析GPS原理。
實現LocationManager/LocationProvider 進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節 2D圖形庫(Graphics/View)詳解 SDCARD/感測器/手勢 應用實現
(5)android軟體安全與逆向分析pdf擴展閱讀:
知識體系
1、Unix/Linux平台技術:基本命令,Linux下的開發環境
2、企業級資料庫技術:SQL語言、SQL語句調優、Oracle資料庫技術
3、Java 語言核心技術:Java語言基礎、Java面向對象編程、JDK核心API、Java集合框架、Java網路編 程、JavaI/O編程、Java多線程編程、Java異常機制、Java安全、JDBC、XML
4、軟體工程和設計模式:軟體工程概述、配置管理及SVN、UML、基本設計模式
5、Android應用開發基礎:Android開發平台、Eclipse+ADT開發環境、AVD及感測模擬器調試、Android核心組件、Android常用組件、Android高級組件、文件及網路訪問、SQLite資料庫編程、後台服務編程
6、互聯網核心技術: HTML、CSS、JavaScript、JQuery、Ajax應用
7、Android高級應用開發:音頻視頻攝像頭、互聯網應用、GPS和位置服務、Google Map、2D3D繪制、感測器開發、游戲開發、電話及SMS服務、網路BluetoothWi-Fi等。
8、Android系統級開發:移植、驅動、NDK(C方向)。
9、JavaEE核心技術:Servlet核心技術、JSP核心技術、Struts、Spring、Hibernate框架。
F. Android軟體安全與逆向分析的書名
本書由淺入深、循序漸進地講解了Android 系統的軟體安全、逆向分析與加密解密技術。包括Android軟體逆向分析和系統安全方面的必備知識及概念、如何靜態分析Android 軟體、如何動態調試Android 軟體、Android 軟體的破解與反破解技術的探討,以及對典型Android 病毒的全面剖析。
本書適合所有Android 應用開發者、Android 系統開發工程師、Android 系統安全工作者閱讀學習。 豐生強(網名非蟲)
Android軟體安全專家。看雪論壇Android安全版版主;安卓巴士開發交流版版主。
對Android軟體與系統安全有狂熱的愛好和獨到的見解,對Android系統的全部源代碼進行過深入地研究和分析。逆向分析實戰經驗豐富。
在國內信息安全雜志上發表過多篇有價值的軟體安全文章,目前就職於國內某Android開發企業,常年混跡於看雪論壇(ID非蟲)。
作者郵箱:[email protected]
願與國內安全愛好者共同交流與探討安全技術。 第1章 Android程序分析環境搭建11.1 Windows分析環境搭建11.1.1 安裝JDK11.1.2 安裝Android SDK31.1.3 安裝Android NDK51.1.4 Eclipse集成開發環境61.1.5 安裝CDT、ADT插件61.1.6 創建Android Virtual Device81.1.7 使用到的工具91.2 Linux分析環境搭建91.2.1 本書的Linux環境91.2.2 安裝JDK91.2.3 在Ubuntu上安裝Android SDK101.2.4 在Ubuntu上安裝Android NDK111.2.5 在Ubuntu上安裝Eclipse集成開發環境121.2.6 在Ubuntu上安裝CDT、ADT插件131.2.7 創建Android Virtual Device131.2.8 使用到的工具151.3 本章小結15第2章 如何分析Android程序162.1 編寫第一個Android程序162.1.1 使用Eclipse創建Android工程162.1.2 編譯生成APK文件192.2 破解第一個程序202.2.1 如何動手?202.2.2 反編譯APK文件202.2.3 分析APK文件212.2.4 修改Smali文件代碼262.2.5 重新編譯APK文件並簽名262.2.6 安裝測試272.3 本章小結28第3章 進入Android Dalvik虛擬機293.1 Dalvik虛擬機的特點——掌握Android程序的運行原理293.1.1 Dalvik虛擬機概述293.1.2 Dalvik虛擬機與Java虛擬機的區別293.1.3 Dalvik虛擬機是如何執行程序的343.1.4 關於Dalvik虛擬機JIT(即時編譯)363.2 Dalvik匯編語言基礎為分析Android程序做准備373.2.1 Dalvik指令格式373.2.2 DEX文件反匯編工具393.2.3 了解Dalvik寄存器403.2.4 兩種不同的寄存器表示方法——v命名法與p命名法423.2.5 Dalvik位元組碼的類型、方法與欄位表示方法433.3 Dalvik指令集443.3.1 指令特點453.3.2 空操作指令453.3.3 數據操作指令463.3.4 返回指令463.3.5 數據定義指令463.3.6 鎖指令473.3.7 實例操作指令473.3.8 數組操作指令483.3.9 異常指令483.3.10 跳轉指令483.3.11 比較指令493.3.12 欄位操作指令503.3.13 方法調用指令503.3.14 數據轉換指令513.3.15 數據運算指令513.4 Dalvik指令集練習——寫一個Dalvik版的Hello World523.4.1 編寫smali文件523.4.2 編譯smali文件543.4.3 測試運行543.5 本章小結55第4章 Android可執行文件564.1 Android程序的生成步驟564.2 Android程序的安裝流程594.3 dex文件格式664.3.1 dex文件中的數據結構664.3.2 dex文件整體結構684.3.3 dex文件結構分析714.4 odex文件格式804.4.1 如何生成odex文件804.4.2 odex文件整體結構814.4.3 odex文件結構分析834.5 dex文件的驗證與優化工具dexopt的工作過程884.6 Android應用程序另類破解方法914.7 本章小結93第5章 靜態分析Android程序945.1 什麼是靜態分析945.2 快速定位Android程序的關鍵代碼945.2.1 反編譯apk程序945.2.2 程序的主Activity955.2.3 需重點關注的Application類955.2.4 如何定位關鍵代碼——六種方法965.3 smali文件格式975.4 Android程序中的類1005.4.1 內部類1005.4.2 監聽器1025.4.3 註解類1055.4.4 自動生成的類1085.5 閱讀反編譯的smali代碼1105.5.1 循環語句1105.5.2 switch分支語句1155.5.3 try/catch語句1215.6 使用IDA Pro靜態分析Android程序1275.6.1 IDA Pro對Android的支持1275.6.2 如何操作1285.6.3 定位關鍵代碼——使用IDA Pro進行破解的實例1325.7 惡意軟體分析工具包——Androguard1355.7.1 Androguard的安裝與配置1355.7.2 Androguard的使用方法1375.7.3 使用Androguard配合Gephi進行靜態分析1445.7.4 使用androlyze.py進行靜態分析1485.8 其他靜態分析工具1525.9 閱讀反編譯的Java代碼1525.9.1 使用dex2jar生成jar文件1525.9.2 使用jd-gui查看jar文件的源碼1535.10 集成分析環境——santoku1545.11 本章小結156第6章 基於Android的ARM匯編語言基礎——逆向原生!1576.1 Android與ARM處理器1576.1.1 ARM處理器架構概述1576.1.2 ARM處理器家族1586.1.3 Android支持的處理器架構1596.2 原生程序與ARM匯編語言——逆向你的原生Hello ARM1606.2.1 原生程序逆向初步1606.2.2 原生程序的生成過程1626.2.3 必須了解的ARM知識1646.3 ARM匯編語言程序結構1666.3.1 完整的ARM匯編程序1666.3.2 處理器架構定義1676.3.3 段定義1686.3.4 注釋與標號1696.3.5 匯編器指令1696.3.6 子程序與參數傳遞1706.4 ARM處理器定址方式1706.4.1 立即定址1706.4.2 寄存器定址1716.4.3 寄存器移位定址1716.4.4 寄存器間接定址1716.4.5 基址定址1716.4.6 多寄存器定址1716.4.7 堆棧定址1726.4.8 塊拷貝定址1726.4.9 相對定址1726.5 ARM與Thumb指令集1736.5.1 指令格式1736.5.2 跳轉指令1746.5.3 存儲器訪問指令1756.5.4 數據處理指令1776.5.5 其他指令1846.6 用於多媒體編程與浮點計算的NEON與VFP指令集1856.7 本章小結186第7章 Android NDK程序逆向分析1877.1 Android中的原生程序1877.1.1 編寫一個例子程序1877.1.2 如何編譯原生程序1887.2 原生程序的啟動流程分析1947.2.1 原生程序的入口函數1947.2.2 main函數究竟何時被執行1987.3 原生文件格式1997.4 原生C程序逆向分析2007.4.1 原生程序的分析方法2007.4.2 for循環語句反匯編代碼的特點2047.4.3 if...else分支語句反匯編代碼的特點2087.4.4 while循環語句反匯編代碼的特點2117.4.5 switch分支語句反匯編代碼的特點2157.4.6 原生程序的編譯時優化2187.5 原生C++程序逆向分析2227.5.1 C++類的逆向2227.5.2 Android NDK對C++特性的支持2257.5.3 靜態鏈接STL與動態鏈接STL的代碼區別2277.6 Android NDK JNI API逆向分析2327.6.1 Android NDK提供了哪些函數2327.6.2 如何靜態分析Android NDK程序2337.7 本章小結235第8章 動態調試Android程序2368.1 Android動態調試支持2368.2 DDMS的使用2378.2.1 如何啟動DDMS2378.2.2 使用LogCat查看調試信息2388.3 定位關鍵代碼2408.3.1 代碼注入法——讓程序自己吐出注冊碼2408.3.2 棧跟蹤法2448.3.3 Method Profiling2478.4 使用AndBug調試Android程序2508.4.1 安裝AndBug2518.4.2 使用AndBug2518.5 使用IDA Pro調試Android原生程序2548.5.1 調試Android原生程序2558.5.2 調試Android原生動態鏈接庫2568.6 使用gdb調試Android原生程序2608.6.1 編譯gdb與gdbserver2608.6.2 如何調試2628.7 本章小結264第9章 Android軟體的破解技術2659.1 試用版軟體2659.1.1 試用版軟體的種類2659.1.2 實例破解——針對授權KEY方式的破解2659.2 序列號保護2719.3 網路驗證2729.3.1 網路驗證保護思路2729.3.2 實例破解——針對網路驗證方式的破解2739.4 In-app Billing(應用內付費)2779.4.1 In-app Billing原理2779.4.2 In-app Billing破解方法2809.5 Google Play License保護2819.5.1 Google Play License保護機制2819.5.2 實例破解——針對Google Play License方式的破解2839.6 重啟驗證2849.6.1 重啟驗證保護思路2859.6.2 實例破解——針對重啟驗證方式的破解2859.7 如何破解其他類型的Android程序2969.7.1 Mono for Android開發的程序及其破解方法2969.7.2 Qt for Android開發的程序及其破解方法3019.8 本章小結309第10章 Android程序的反破解技術31010.1 對抗反編譯31010.1.1 如何對抗反編譯工具31010.1.2 對抗dex2jar31110.2 對抗靜態分析31210.2.1 代碼混淆技術31210.2.2 NDK保護31510.2.3 外殼保護31610.3 對抗動態調試31610.3.1 檢測調試器31610.3.2 檢測模擬器31710.4 防止重編譯31810.4.1 檢查簽名31810.4.2 校驗保護31910.5 本章小結320第11章 Android系統攻擊與防範32111.1 Android系統安全概述32111.2 手機ROOT帶來的危害32111.2.1 為什麼要ROOT手機32111.2.2 手機ROOT後帶來的安全隱患32211.2.3 Android手機ROOT原理32211.3 Android許可權攻擊32911.3.1 Android許可權檢查機制32911.3.2 串謀許可權攻擊33311.3.3 許可權攻擊檢測33611.4 Android組件安全33911.4.1 Activity安全及Activity劫持演示34011.4.2 Broadcast Receiver 安全34311.4.3 Service安全34511.4.4 Content Provider安全34611.5 數據安全34711.5.1 外部存儲安全34711.5.2 內部存儲安全34811.5.3 數據通信安全35011.6 ROM安全35111.6.1 ROM的種類35211.6.2 ROM的定製過程35211.6.3 定製ROM的安全隱患35911.6.4 如何防範36011.7 本章小結361第12章 DroidKongFu變種病毒實例分析36212.1 DroidKongFu病毒介紹36212.2 配置病毒分析環境36312.3 病毒執行狀態分析36412.3.1 使用APIMonitor初步分析36512.3.2 使用DroidBox動態分析36912.3.3 其他動態分析工具37312.4 病毒代碼逆向分析37612.4.1 Java層啟動代碼分析37612.4.2 Native層啟動代碼分析38112.4.3 Native層病毒核心分析39312.5 DroidKongFu病毒框架總結40412.6 病毒防治40612.7 本章小結406