国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

安卓Xposed框架安全應(yīng)用研究

2016-06-16 19:43李偉陳忠紅
電腦知識(shí)與技術(shù) 2016年10期
關(guān)鍵詞:應(yīng)用研究

李偉+陳忠紅

摘要:Xposed是安卓系統(tǒng)下的框架服務(wù)程序,可通過hook原有函數(shù)在不修改系統(tǒng)app的情況下改變系統(tǒng)配置,影響系統(tǒng)運(yùn)行。基于Xposed框架可以開發(fā)許多功能強(qiáng)大的應(yīng)用模塊,在安全方面有非常廣闊的前景。介紹了Xposed框架的基本情況和發(fā)展趨勢(shì);分析了該框架的實(shí)現(xiàn)原理及其底層結(jié)構(gòu);研究了Xposed模塊的加載過程。重點(diǎn)對(duì)Xposed在未來手機(jī)安全方面的應(yīng)用進(jìn)行了研究。

關(guān)鍵詞:Xposed;框架安全;應(yīng)用研究

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)10-0049-03

1 概述

Xposed框架是在著名的智能手機(jī)開發(fā)者論壇XDA上誕生的一款特殊的安卓APP,由開發(fā)者rovo98進(jìn)行開發(fā)和升級(jí)。Xposed作為安卓系統(tǒng)下的框架服務(wù)程序,可以在不修改系統(tǒng)apk的情況下改變系統(tǒng)配置,影響系統(tǒng)運(yùn)行。其主要功能是建立了一個(gè)模塊安裝平臺(tái),在安裝Xposed框架之后,使用者可以通過安裝Xposed模塊應(yīng)用的方式,實(shí)現(xiàn)強(qiáng)大的功能。Xposed框架類似于越獄后的iOS系統(tǒng)Cydia平臺(tái),但由于安卓系統(tǒng)的開源性,Xposed框架可以提供更豐富的功能并讓用戶獲得更好的體驗(yàn)。

Xposed框架的原理是通過修改和替換系統(tǒng)文件進(jìn)而hook整個(gè)系統(tǒng),所以基于Xposed框架開發(fā)系統(tǒng)級(jí)應(yīng)用的難度大大降低。目前Xposed框架下的模塊多以優(yōu)化系統(tǒng)運(yùn)行速度、美化界面和提供便捷操作等功能為主,為數(shù)不多的安全類模塊均由外國(guó)開發(fā)者編寫,如綠色守護(hù)等模塊還需要支付費(fèi)用才可獲得全部功能,且安全應(yīng)用多以軟件權(quán)限控制為主,并沒有充分利用Xposed框架的強(qiáng)大功能,目前越來越多的開發(fā)者開始關(guān)注Xposed,出現(xiàn)利用Xposed框架編寫的密碼破解程序和針對(duì)安卓漏洞masterkey的Xposed框架檢測(cè)模塊和補(bǔ)丁程序,因此利用Xposed框架進(jìn)行安全方面應(yīng)用開發(fā)前景非常廣闊。

2 Xposed框架分析

2.1 Xposed框架實(shí)現(xiàn)原理和結(jié)構(gòu)

Xposed框架的運(yùn)作原理是劫持了安卓程序進(jìn)程的啟動(dòng)過程,正常的安卓程序在啟動(dòng)時(shí)的過程首先要啟用zygote進(jìn)程,zygote是安卓進(jìn)程的孵化器,其功能是創(chuàng)建Dalvik 虛擬機(jī)實(shí)例,并為Dalvik虛擬機(jī)加載資源,Dalvik虛擬機(jī)啟動(dòng)完成后就實(shí)現(xiàn)各子模塊的初始化,并且加載了相應(yīng)的Java核心類庫,這樣就可執(zhí)行Java代碼進(jìn)而執(zhí)行安卓程序[1]。

Xposed框架實(shí)現(xiàn)功能是通過修改/system/bin/app_process文件進(jìn)而hook系統(tǒng)函數(shù),app_process文件是zygote孵化器在創(chuàng)建dalvik虛擬機(jī)時(shí)調(diào)用的文件,其功能是啟動(dòng)安卓系統(tǒng)運(yùn)行時(shí)庫并啟動(dòng)虛擬機(jī),修改后的文件可以實(shí)現(xiàn)在dalvik虛擬機(jī)創(chuàng)建時(shí)hook進(jìn)而獲取權(quán)限,Xposed實(shí)現(xiàn)各種功能的前提是hook系統(tǒng)函數(shù),Xposed框架實(shí)現(xiàn)hook的原理是將需要hook的函數(shù)替換成Native方法XposedCallHandler,Dalvik虛擬機(jī)在解釋執(zhí)行函數(shù)時(shí),遇到在執(zhí)行中被hook的函數(shù),就會(huì)直接調(diào)用XposedCallHandler,XposedCallHandler再調(diào)用 XposedBridge類的handleHookedMethod完成注冊(cè)的beforeHookedMethod以及 afterHookedMethod 的調(diào)用,這兩類回調(diào)函數(shù)之間,會(huì)調(diào)用原始函數(shù),完成正常的功能。

2.2 Xposed框架結(jié)構(gòu)

Xposed框架基本分為以下四個(gè)部分組成:

1)Xposed:Xposed 是用c++編寫而成的,其功能是替換系統(tǒng)中的/system/bin/app_process文件,并為XposedBridge 提供JNI(Java本地接口)方法,實(shí)現(xiàn)Java和c++之間的通信;

2)XposedBridge:Xposedbridge是Xposed提供的jar文件,在app_process啟動(dòng)時(shí)系統(tǒng)會(huì)自動(dòng)加載該文件以達(dá)到hook目的,Xposedbridge是其他模塊開發(fā)的基礎(chǔ);

3)XposedInstaller:Xposed 的安裝文件,提供Xposed框架安裝功能和模塊安裝與下載和管理等功能,是Xposed框架的管理軟件;

4)XposedMods:XposedMods是基于Xposed框架開發(fā)的應(yīng)用模塊實(shí)現(xiàn)了強(qiáng)大而豐富的功能。

Xposed c++源碼[2]下載地址為http://github.com/rovo89/Xposed。主要包括如下文件:

1)app_main.cpp:app_main.cpp的作用是修改和替換安卓系統(tǒng)框架中的app_main.cpp文件,app_main.cpp文件的內(nèi)容就是/system/bin/app_process文件的代碼,在安卓程序啟動(dòng)過程中,app_process進(jìn)程會(huì)負(fù)責(zé)Dalvik虛擬機(jī)的初始化和啟動(dòng)工作,使安卓系統(tǒng)能夠運(yùn)行Java語言;

2)Xposed.cpp: 給app_main.cpp提供的調(diào)用函數(shù),以及 XposedBridge 的 JNI 方法的實(shí)現(xiàn)。完成Xposed框架的初始化工作以及類函數(shù)的 hook 操作,是Xposed框架的核心;

3)Xposed.h、Xposed_offsets.h: 頭文件。

Xposed c++部分具體工作流程如下:

1)安卓系統(tǒng)init進(jìn)程啟動(dòng)app_main.cpp;

2)調(diào)用app_main.cpp中的initTypePointers()函數(shù),對(duì)于 SDK大于18的系統(tǒng)版本版本會(huì)獲取atrace_set_tracing_enabled函數(shù)指針,該指針用于Zygote 初始化過程;

3)調(diào)用Xposed.cpp中的XposedInfo()函數(shù),該函數(shù)的功能是獲取系統(tǒng)的一些參數(shù),并打印到Log文件中,如獲取SDK版本號(hào),設(shè)備生產(chǎn)商,設(shè)備型號(hào)等;

4)調(diào)用Xposed.cpp中的isXposedDisabled()函數(shù),該函數(shù)的作用是判斷Xposed是否可用,通過讀取/data/data/de.robv.android.Xposed.installer/conf/disabled 文件,來判斷Xposed框架是否被禁用,如果該文件存在,則表示禁用Xposed;

5)調(diào)用Xposed.cpp中的XposedShouldIgnoreCommand()函數(shù),判斷啟動(dòng)請(qǐng)求以避免其他權(quán)限管理工具濫用Xposed的log文件;

6)調(diào)用Xposed.cpp中的addXposedToClasspath()函數(shù),判斷是否有新版本的XposedBridge存在,如有新版本則將新版本重命名為XposedBridge.jar并返回false;并將XposedBridge.jar添加到 CLASSPATH 環(huán)境變量中,如沒有新版本則返回true并啟動(dòng)zyogote;

7)調(diào)用AndroidRuntime::start(const char* className, const char* options)函數(shù),AndroidRuntime是安卓框架中的函數(shù),用于完成Dalvik虛擬機(jī)的初始化和啟動(dòng)工作以及運(yùn)行參數(shù)className指定的類中的main方法;

8)虛擬機(jī)在runtime的引導(dǎo)下啟動(dòng)完成;

9)調(diào)用onVmCreated()函數(shù)。該函數(shù)在AppRuntime類中被覆蓋。調(diào) 用 Xposed.cpp 中 的XposedOnVmCreated(JNIEnv* env, const char* className)函數(shù)。獲取 XposeBridge 類并 new一個(gè)全局引用;

10)注冊(cè)JNI函數(shù),Xposed.cpp中定義了供XposedBridge類使用的JNI方法,此處進(jìn)行注冊(cè),這樣當(dāng)XposeBridge中的main函數(shù)執(zhí)行時(shí),就可以調(diào)用 Xposed.cpp 中定義的JNI方法;

11)調(diào)用XposedBridge類的 main方法,進(jìn)入XposedBridge[3]。

至此Xposed的c++部分結(jié)束,Xposed框架就進(jìn)入了XposedBridge部分,開始執(zhí)行Java語言。

3 Xposed框架安全方面應(yīng)用模塊研究

通過對(duì)Xposed框架hook的原理和其模塊結(jié)構(gòu)的分析可以發(fā)現(xiàn),該框架可以hook幾乎整個(gè)安卓系統(tǒng),通過對(duì)hook的充分利用,可以實(shí)現(xiàn)非常豐富的功能,尤其是在安全方面有非常廣闊的前景, Xposed框架可以實(shí)現(xiàn)以下安全方面的功能。

1)修補(bǔ)漏洞

2013年出現(xiàn)過一個(gè)名為masterkey的著名漏洞,該漏洞可以對(duì) 99% 的安卓設(shè)備造成影響。這個(gè)漏洞自 Android 1.6(Donut)以來就一直存在,惡意軟件制作者可以在不破解加密簽名的前提下利用它來修改APK的代碼,可以繞過安卓應(yīng)用的簽名驗(yàn)證安全機(jī)制。這個(gè)漏洞理論上會(huì)影響android1.6至漏洞提報(bào)google時(shí)間點(diǎn)2013年2月之間的所有設(shè)備。雖然Google官方已經(jīng)修復(fù)了該漏洞,但是由于安卓系統(tǒng)更新的推動(dòng)力更多的來自于設(shè)備生產(chǎn)商,此補(bǔ)丁的推送滯后非常嚴(yán)重。占有大量用戶的各種第三方系統(tǒng)對(duì)漏洞的更新非常緩慢,但是Xposed模塊開發(fā)者及時(shí)開發(fā)了名為Master Key dual fix的模塊,可以在不升級(jí)系統(tǒng)的情況下修補(bǔ)漏洞,保障用戶安全。

2)破解手勢(shì)解鎖

Swipeback是Xposed框架中的一個(gè)實(shí)現(xiàn)滑動(dòng)返回手勢(shì)控制的模塊,由于設(shè)計(jì)優(yōu)秀廣受好評(píng)。但是在2014年初發(fā)現(xiàn)了一個(gè)安全漏洞,安裝了Xposed框架及其SwipeBack模塊的設(shè)備,可能輕易越過部分手勢(shì)密碼鎖直接進(jìn)入[5]。這個(gè)漏洞涉及到支付寶錢包、QQ等安卓應(yīng)用,在這類應(yīng)用中常會(huì)有用戶設(shè)置手勢(shì)密碼鎖以加強(qiáng)賬號(hào)的安全性,但在面對(duì)Xposed框架及其SwipeBack模塊時(shí),這個(gè)鎖將直接被繞過,本來經(jīng)過MD5加密驗(yàn)證的手勢(shì)密碼在swipeback面前起不到任何作用。只要在這些應(yīng)用的手勢(shì)密碼界面上,使用SwipeBack滑動(dòng)模塊就能直接取消手勢(shì)密碼,進(jìn)入應(yīng)用程序。雖然能夠被Xposed框架及其SwipeBack模塊繞過手勢(shì)密碼鎖的應(yīng)用只有一部分,這個(gè)漏洞并不是無法堵上的,但也說明了Xposed模塊實(shí)現(xiàn)各種功能的可能性。

3)程序控制和信息偽造

Xposed的App settings模塊可以直接禁用程序的API接口,而不必修改APK文件。XPrivacy模塊,可以阻止程序訪問隱私信息。XPrivacy還具有偽造信息的功能。可以對(duì)手機(jī)的序列號(hào),GPS坐標(biāo),電話號(hào)碼,運(yùn)營(yíng)商等等信息進(jìn)行修改,當(dāng)其他應(yīng)用試圖讀取這些信息的時(shí)候就返回修改值或隨機(jī)數(shù)。Xposed Appsettings 可以把每個(gè)API都列出來并禁用。與Xprivacy 配合,Xposed可以控制近百個(gè)項(xiàng)目,可以使應(yīng)用程序讀取預(yù)先設(shè)置的信息甚至指定應(yīng)用程序只能看特定信息。

4) 自動(dòng)安裝激活

Xposed模塊雖然具有豐富的功能但仍需要安裝并激活,Xposed模塊開發(fā)者M(jìn)indMac提供了一個(gè)可自動(dòng)安裝激活的Xposed惡意插件demo(需Root權(quán)限)。實(shí)現(xiàn)的在用戶未知情況下靜默安裝Xposed模塊并激活的功能。該模塊會(huì)在后臺(tái)自行安裝Xposed,并勾選自身的模塊,之后自動(dòng)重新啟動(dòng)使模塊激活生效。該應(yīng)用可以作為惡意插件的安裝平臺(tái)。當(dāng)用戶安裝的打包有該應(yīng)用插件的應(yīng)用后手機(jī)就可能在后臺(tái)運(yùn)行第三方插件造成安全風(fēng)險(xiǎn)。

5)關(guān)機(jī)竊聽

斯諾登在接受采訪時(shí)曾指出美國(guó)國(guó)家安全局(NSA)可以對(duì)手機(jī)進(jìn)行竊聽,即使是在關(guān)機(jī)的情況下也不能幸免。在2015年GeekPwn大賽(一個(gè)旨在演示智能設(shè)備安全漏洞利用、宣傳安全意識(shí)的會(huì)議)上,來自KeenTeam的開發(fā)者現(xiàn)場(chǎng)演示了安卓手機(jī)在關(guān)機(jī)狀態(tài)下被黑客通過聽筒進(jìn)行竊聽的全過程,據(jù)分析這個(gè)看似難以實(shí)現(xiàn)的任務(wù)可以通過Xposed模塊的方式實(shí)現(xiàn),其基本的思路是hook關(guān)機(jī)按鈕,當(dāng)點(diǎn)擊“關(guān)機(jī)”按鈕后彈出的提示框中“確定”按鈕。hook住interceptKeyBeforeQueueing函數(shù),播放關(guān)機(jī)動(dòng)畫,設(shè)置屏幕超時(shí)等功能。這樣就偽造了一個(gè)“已關(guān)機(jī)”的假象,再啟動(dòng)錄音或撥打特定電話就可以實(shí)現(xiàn)竊聽等功能。

4 總結(jié)

Xposed在安卓手機(jī)安全應(yīng)用方面擁有獨(dú)特的優(yōu)勢(shì),具有低廉的開發(fā)成本和廣闊的發(fā)展前景。本文介紹了Xposed框架的基本情況和發(fā)展趨勢(shì),詳細(xì)分析了Xposed框架實(shí)現(xiàn)原理,分析了該框架的實(shí)現(xiàn)原理及其底層結(jié)構(gòu),研究了Xposed模塊的加載過程。重點(diǎn)對(duì)Xposed框架在安全方面的廣闊的前景進(jìn)行了研究。

參考文獻(xiàn):

[1] Enck,McDaniel.Understanding Android Security[C]. Security & Privacy,IEEE, 2009: 50-57.

[2] Frank Ableson.Introduction to Android development[Z].

[3] rovo89.Introduction to Xposed[EB/OL]. (2012-03-31).http://forum.xda-developers.com/showthread.php?t=1574401.

[4] rovo89.Xposedsoundcode[EB/OL]. (2013-07-16).https://github.com/rovo89.

[5] XPosedWiki[EB/OL]. (2014-02-29).https://github.com/rovo89/XposedBridge/wiki/_pages.

[6] 王向輝,張國(guó)印,沈潔.Android應(yīng)用程序開發(fā)[M].北京:清華大學(xué)出版社, 2010: 120-144.

猜你喜歡
應(yīng)用研究
節(jié)奏訓(xùn)練在初中音樂課程教學(xué)中的應(yīng)用研究
AG接入技術(shù)在固網(wǎng)NGN的應(yīng)用研究
空域分類關(guān)鍵技術(shù)及應(yīng)用研究
分層教學(xué),兼顧全體
404 Not Found

404 Not Found


nginx
长白| 靖州| 吕梁市| 信阳市| 抚远县| 太谷县| 天等县| 宜丰县| 紫云| 莱州市| 凤庆县| 河南省| 彭州市| 万全县| 光泽县| 吉安县| 龙门县| 淅川县| 开封县| 临泉县| 藁城市| 宣武区| 乌什县| 隆安县| 洮南市| 房产| 始兴县| 奈曼旗| 毕节市| 罗源县| 武清区| 铜梁县| 吉木乃县| 汉阴县| 微山县| 云龙县| 康平县| 桐柏县| 桐庐县| 玛沁县| 临湘市|