Android是由Android Inc開(kāi)發(fā)的基于Linux平臺(tái)的操作系統(tǒng) ,如圖為Android系統(tǒng)架構(gòu):
Linux 內(nèi)核
最底層由Linux內(nèi)核構(gòu)成轮纫,Android系統(tǒng)部分以結(jié)構(gòu)微調(diào)后的Linux 2.6內(nèi)核版本為基礎(chǔ)趁仙,由相機(jī)洪添,聲卡,wifi雀费,鍵盤等多種驅(qū)動(dòng)程序構(gòu)成干奢,android的安全,內(nèi)存管理盏袄,進(jìn)程管理忿峻,網(wǎng)路協(xié)議棧,驅(qū)動(dòng)模型等主要系統(tǒng)服務(wù)都依賴于Linux辕羽,內(nèi)核會(huì)在硬件和軟件棧的剩余部分起到抽象作用逛尚。
庫(kù)
Linux內(nèi)核的上層是Android的本地庫(kù),由C刁愿、C++編寫黑低,它只是告知設(shè)備多種數(shù)據(jù)處理方式的命令集合。
應(yīng)用程序與框架
庫(kù)之上是應(yīng)用程序框架酌毡,包含資源分配、語(yǔ)音通話蕾管、管理智能手機(jī)基本功能的程序枷踏。
設(shè)備文件目錄結(jié)構(gòu)
文件目錄 | 說(shuō)明 |
---|---|
/ | 只有讀取權(quán)限的根(root)文件系統(tǒng)目錄。瀏覽啟動(dòng)相關(guān)設(shè)置文件掰曾,包含初始進(jìn)程信息 |
/system | 只有Android系統(tǒng)讀取權(quán)限的主目錄旭蠕,包括具備HAL和框架的庫(kù)文件、守護(hù)進(jìn)程相關(guān)可執(zhí)行文件旷坦、字體掏熬、媒體、系統(tǒng)應(yīng)用程序 |
/data | 有讀寫權(quán)限秒梅,該文件系統(tǒng)目錄包括可設(shè)置的用戶應(yīng)用程序及狀態(tài)信息 |
/cache | 有讀寫權(quán)限旗芬,包括瀏覽器緩存和用戶臨時(shí)狀態(tài)信息 |
/system/應(yīng)用名.apk | 保存系統(tǒng)應(yīng)用程序,優(yōu)化后的dex代碼保存到/system/app/應(yīng)用名.odex捆蜀,以安全模式啟動(dòng)時(shí)疮丛,運(yùn)行可操作的系統(tǒng)應(yīng)用 |
/data/app/應(yīng)用名.apk | 保存已注冊(cè)的用戶應(yīng)用程序幔嫂,優(yōu)化后的dex代碼保存到/data/dalvik-cache/應(yīng)用名.odex |
/data/app/<app-package-name>-1.apk | 保存用戶下載的應(yīng)用程序 |
/mnt/secure/asec/<app-package-name>-1.asec | 保存移動(dòng)到SD卡的應(yīng)用程序 |
這些目錄中,能獲取最多應(yīng)用程序信息的是/data/data/應(yīng)用名誊薄。雖然每個(gè)應(yīng)用程序都不同履恩,但是保存數(shù)據(jù)和設(shè)置文件比較多的應(yīng)用程序會(huì)有如下目錄結(jié)構(gòu)。診斷應(yīng)用程序漏洞和對(duì)移動(dòng)設(shè)備取證時(shí)呢蔫,需要仔細(xì)查看如下目錄切心,因?yàn)橛绊憫?yīng)用程序服務(wù)的重要信息全部保存于此。比如服務(wù)認(rèn)證秘鑰片吊、內(nèi)容數(shù)據(jù)绽昏、應(yīng)用程序設(shè)置文件等。
目錄 | 說(shuō)明 |
---|---|
files | 保存管理員內(nèi)部使用的文件(包括so文件定鸟,data文件而涉、ini文件等) |
lib | 保存應(yīng)用程序請(qǐng)求的庫(kù)文件(存在so文件) |
databases | 包含設(shè)置文件、內(nèi)容文件等的查詢 信息的 SQLite數(shù)據(jù)庫(kù)文件(存在db文件) |
cache | 有讀寫權(quán)限联予,包括瀏覽器緩存和用戶臨時(shí)狀態(tài)信息 |
shared_prefs | 保存為XML文件啼县,是應(yīng)用程序共享的設(shè)置文件 |
其中shared_prefs目錄內(nèi)的preferences.xml文件包含應(yīng)用程序的設(shè)置文件,因?yàn)榘ㄉ?jí)沸久,版本信息等內(nèi)容季眷,所以惡意訪問(wèn)(或診斷漏洞時(shí)),此處會(huì)包含API密鑰的盜用卷胯,認(rèn)證密鑰值等信息子刮。
db文件在測(cè)試時(shí),我們一般查詢一下數(shù)據(jù)庫(kù)信息窑睁,也會(huì)修改一些數(shù)據(jù)庫(kù)信息挺峡,以修改價(jià)格或者繞過(guò)認(rèn)證。測(cè)試時(shí)不僅要測(cè)試移動(dòng)設(shè)備數(shù)據(jù)庫(kù)担钮,也要檢查瀏覽器橱赠,應(yīng)用程序數(shù)據(jù)庫(kù)。
Android重要組件
組件 | 說(shuō)明 |
---|---|
Activity | 向用戶顯示的設(shè)備界面箫津,通過(guò)點(diǎn)擊菜單或按鈕等特定動(dòng)作轉(zhuǎn)換的畫面都可以成為Activity |
服務(wù) | 不顯示到屏幕狭姨,在后臺(tái)運(yùn)行,比如網(wǎng)絡(luò)傳輸苏遥,讀取文件等操作饼拍,Activity顯示畫面時(shí),服務(wù)通常一同運(yùn)行 |
內(nèi)容提供商 | 應(yīng)用程序共享的空間田炭,即使數(shù)據(jù)保存到文件系統(tǒng)或其他地方师抄,應(yīng)用程序也能通過(guò)內(nèi)容提供商訪問(wèn)數(shù)據(jù) |
廣播接收器 | 實(shí)時(shí)查看系統(tǒng)狀態(tài)(電池狀態(tài),郵件提醒等)教硫,發(fā)生事件時(shí)相應(yīng)司澎,要利用設(shè)備中發(fā)生的Notification等向用戶發(fā)出警報(bào) |
當(dāng)拿到apk文件后欺缘,我們要仔細(xì)查看AndroidMainfest.xml文件和classes.dex文件