999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

完整的安卓系統(tǒng)框架層調(diào)用圖生成方法

2018-09-05 10:19:04代蕊蕊王雅哲
關(guān)鍵詞:進(jìn)程分析方法

代蕊蕊 王雅哲

文章編號(hào): 2095-2163(2018)03-0015-06中圖分類(lèi)號(hào): 文獻(xiàn)標(biāo)志碼: A

摘要: 關(guān)鍵詞: (1 Beijing Engineering Laboratory of the Internet Intelligent Device Sercurity, Institute of Information Engineering,

Chinese Academy of Sciences, Beijing 100195, China; 2 School of Cyber Security,

University of Chinese Academy of Sciences, Beijing 100049, China)

Abstract: At present, Android framework call graph static analysis is limited to the Java framework layer, ignoring the media services and sensor services in the C++ framework layer. The safety analysis of the Android system based on the call graph is also less complete. Based on the in-depth analysis of the Android system framework mechanism and source code, the paper presents a complete Android framework call graph generation method. It includes three parts, which are: the Java framework call graph, C++ framework call graph and JNI connection for complete call graph. After that, the paper analyzes in detail the call chain about remote process call, message handler and Java Native Interface.

Key words:

引言

當(dāng)前,對(duì)安卓系統(tǒng)框架層的調(diào)用圖靜態(tài)分析局限在Java框架層,但是安卓系統(tǒng)框架層卻還容納有不可或缺的一部分,即C++框架層,該層可提供一些頗具代表性的媒體服務(wù),包括CameraService、AudioFlinger、AudioPolicyService、MediaPlayerService、與用戶(hù)敏感信息密切相關(guān)的傳感器服務(wù)的主要功能也在該層運(yùn)行實(shí)現(xiàn),包括SensorService、GravitySensor、 LinearAccelerationSensor、 OrientationSensor等。本文研究旨在生成完整的安卓系統(tǒng)框架層調(diào)用圖,從而增進(jìn)現(xiàn)有安卓系統(tǒng)靜態(tài)分析的完整性,更好地支持論證各類(lèi)安卓系統(tǒng)框架層安全問(wèn)題的分析。在對(duì)安卓系統(tǒng)框架層機(jī)制和源碼深入探討分析的基礎(chǔ)上,該方法主要包含了Java框架層調(diào)用圖、C++框架層調(diào)用圖、JNI連接生成完整的框架層調(diào)用圖三個(gè)部分。下面,將就這一內(nèi)容展開(kāi)設(shè)計(jì)論述。

1安卓系統(tǒng)概述及框架層分析存在的問(wèn)題

1.1安卓系統(tǒng)架構(gòu)

安卓系統(tǒng)不僅龐大,而且錯(cuò)綜復(fù)雜,安卓系統(tǒng)架構(gòu)[1]如圖1所示。由圖1可知,從Kernel層開(kāi)始進(jìn)入安卓系統(tǒng),用于加載Binder Driver、Camera Driver、GPS Driver等;Native層中的init進(jìn)程(pid=1)是Linux系統(tǒng)的用戶(hù)進(jìn)程,用于啟動(dòng)ServiceManager(Binder服務(wù)管家)等重要服務(wù);C++ Framework層的Media Server進(jìn)程由init進(jìn)程衍生得來(lái),用于啟動(dòng)和管理CemaraService、AudioFlinger等本地系統(tǒng)服務(wù);Zygote進(jìn)程由init進(jìn)程孵化出來(lái),Java Framework的System Server是Zygote進(jìn)程孵化的第一個(gè)進(jìn)程,用于啟動(dòng)和管理LocationManagerService、WifiService、BluetoothManagerService等Java系統(tǒng)服務(wù);所有的APP進(jìn)程都是由Zygote進(jìn)程孵化的,通過(guò)Binder調(diào)用系統(tǒng)服務(wù)實(shí)現(xiàn)相應(yīng)功能。

1.2現(xiàn)有安卓系統(tǒng)框架層分析方案

PScout[2]是基于soot[3]的一個(gè)開(kāi)源項(xiàng)目,研究最終將提取安卓中API(documented API和undocumented API)和對(duì)應(yīng)的權(quán)限的關(guān)系,對(duì)應(yīng)關(guān)系的提取是通過(guò)權(quán)限提取和對(duì)安卓框架層調(diào)用圖的可達(dá)性分析得到的,但是PScout僅針對(duì)Java框架層,無(wú)法生成C++框架層的調(diào)用圖。

文獻(xiàn)[4]主要研究分析安卓框架層源碼中的安全體系,設(shè)計(jì)提出了一個(gè)靜態(tài)分析工具來(lái)分析源碼中的權(quán)限問(wèn)題。其中,生成框架層調(diào)用圖的工具是WALA,該工具同樣只針對(duì)安卓Java框架層,無(wú)法生成C++框架層的調(diào)用圖。

Kratos[5]的研發(fā)目的在于分析Android系統(tǒng)中權(quán)限不一致性問(wèn)題,即針對(duì)同一資源在不同路徑上的權(quán)限檢查不同,其中生成框架層調(diào)用圖的工具是Spark,該工具從一個(gè)入口點(diǎn)開(kāi)始尋找一個(gè)方法調(diào)用到的方法,然后以調(diào)用到的方法為起點(diǎn)繼續(xù)尋找下一級(jí)調(diào)用方法,同樣,該工具無(wú)法生成C++框架層的調(diào)用圖。

綜上所述可知,安卓系統(tǒng)框架層包括C++框架層、Java框架層和連接兩層的JNI,但是現(xiàn)有安卓系統(tǒng)框架層的分析方法僅針對(duì)Java框架層,卻忽略了C++框架層中的Camera、Audio等重要系統(tǒng)服務(wù)。特別指出的是,加速儀、陀螺儀、重力感應(yīng)儀、氣壓計(jì)、溫度計(jì)、光度計(jì)、溫度計(jì)、方位傳感器、磁強(qiáng)計(jì)等與用戶(hù)隱私高度相關(guān)的傳感器[6]的優(yōu)勢(shì)功能也在C++框架層實(shí)現(xiàn)。所以,為了更趨完善地系統(tǒng)支持各類(lèi)安卓系統(tǒng)框架層安全問(wèn)題的分析,就需要研究構(gòu)建一個(gè)完整的安卓系統(tǒng)框架層調(diào)用圖,不僅可以展示Java函數(shù)的調(diào)用,而且可以提供C++函數(shù)的調(diào)用關(guān)系,以及兩者之間的相互調(diào)用關(guān)系。

2完整的安卓系統(tǒng)框架層調(diào)用圖生成方法設(shè)計(jì)

為了保證安卓系統(tǒng)框架層調(diào)用圖的完整性,如圖2所示,本文基于對(duì)安卓系統(tǒng)框架層源碼的深入分析,結(jié)合PScout、Doxygen[7]和Graphviz[8]分別生成Java框架層調(diào)用圖和C++框架層調(diào)用圖,然后利用JNI中本地函數(shù)的注冊(cè)和Java函數(shù)指針的注冊(cè)將2部分調(diào)用圖合成一個(gè)完整的安卓系統(tǒng)框架層調(diào)用圖。研究?jī)?nèi)容可闡釋分述如下。

2.1Java框架層調(diào)用圖

Soot是開(kāi)源的Java編譯優(yōu)化框架,可以用其來(lái)對(duì)Java字節(jié)碼的程序流和控制流進(jìn)行分析,首先利用soot提取每個(gè)方法調(diào)用到的N個(gè)方法,然后提取N個(gè)方法中每個(gè)方法調(diào)用到的M個(gè)方法,如此重復(fù),從而可以對(duì)每個(gè)組件生成調(diào)用圖。

對(duì)所有組件生成的調(diào)用圖添加遠(yuǎn)程進(jìn)程調(diào)用(Remote Process Call,RPC )相關(guān)的邊。在安卓Java框架層通過(guò)接口文件處理Binder RPC 操作,如圖3所示。圖2完整調(diào)用圖生成方法圖3Java框架層Binder遠(yuǎn)程進(jìn)程調(diào)用過(guò)程示例

Fig. 2Complete call graph generation method Fig. 3Java framework layer Binder RPC example

ILocationManager.aidl 是一個(gè)安卓接口定義文件,具體實(shí)現(xiàn)在LocationManagerService 服務(wù)中,ILocationManager$Stub是該服務(wù)的服務(wù)端代理;ILocationManager$Stub$Proxy 是該服務(wù)的客戶(hù)端代理;當(dāng)客戶(hù)端LocationManager 需要從服務(wù)LocationManagerService 獲取位置信息時(shí),調(diào)用服務(wù)端的getLastLocation方法,客戶(hù)端代理負(fù)責(zé)封裝IPC 數(shù)據(jù),服務(wù)端代理負(fù)責(zé)解析IPC數(shù)據(jù),然后調(diào)用了LocationManagerService 服務(wù)中的getLastLocation方法后,位置信息數(shù)據(jù)作為返回值被返回給LocationManager 服務(wù)管理者。

以獲取最后一次位置信息為例,添加RPC相關(guān)的邊后的部分調(diào)用鏈可見(jiàn)表1。

最后,添加消息處理機(jī)制相關(guān)的邊。在安卓中,消息發(fā)送使用通用的消息處理類(lèi),即Message Handler,消息發(fā)送者必須先獲取該類(lèi)才能發(fā)送消息。該類(lèi)可以用來(lái)區(qū)分消息的發(fā)送方法和接收方法,以Location ManagerService.java 中的MSG_LOCATION_CHANGED 消息的發(fā)送為例,源碼中的關(guān)鍵調(diào)用如圖4所示,消息的發(fā)送方法是reportLocation,消息的處理實(shí)例為mLocationHandler,對(duì)應(yīng)的類(lèi)是LocationManagerService 的內(nèi)部類(lèi)LocationWorkerHandler,該類(lèi)中有handleMessage方法。從該方法中可以看出,消息MSG_LOCATION_CHANGED對(duì)應(yīng)的調(diào)用方法為handleLocationChanged。

添加消息處理機(jī)制相關(guān)的邊后,位置信息上報(bào)對(duì)應(yīng)的部分調(diào)用鏈可見(jiàn)表2。

為了生成完整的C++框架層調(diào)用圖,設(shè)計(jì)過(guò)程可做如下解析:

(1)利用Doxygen和graphviz對(duì)整個(gè)安卓框架層的C++代碼生成分散的函數(shù)調(diào)用圖。

(2)處理分散的dot文件,通過(guò)文本分析識(shí)別所有dot文件中存在的邊,例如,圖5中的9條邊需要加入調(diào)用圖文件中,其它dot文件的處理方式相同。因?yàn)椴煌琩ot文件中可能存在相同的邊,就要對(duì)最終的結(jié)果文件進(jìn)行去重。

(3)添加RPC相關(guān)的邊。如圖6所示,以Camera為例,C++框架層的Binder通過(guò)接口文件實(shí)現(xiàn),如ICameraService接口執(zhí)行Binder RPC交互,重點(diǎn)處理來(lái)自客戶(hù)端的連接請(qǐng)求(getNumberOfCameras, getCameraInfo, connect)。其中,BpCameraService為客戶(hù)端代理,BnCameraService為服務(wù)端代理; ICamera接口將負(fù)責(zé)處理來(lái)自客戶(hù)端的設(shè)置與控制請(qǐng)求(startPreview, takePicture等),ICameraClient接口定義的是回調(diào)函數(shù),將負(fù)責(zé)處理來(lái)自服務(wù)端的事件(dataCallback, notifyCallback, dataCallbackTimestamp)。

圖6中類(lèi)與接口的繼承關(guān)系可以通過(guò)頭文件的分析獲取,Camera繼承自BnCameraClient;CameraService繼承自BnCameraService;CameraClient繼承自CameraService::Client,而CameraService::Client繼承自BnCamera,所以CameraClient繼承自BnCamera。接口中客戶(hù)端與服務(wù)端函數(shù)的對(duì)應(yīng)關(guān)系可以通過(guò)接口文件的分析獲取,以CameraClient中的takePicture函數(shù)為例,如圖7所示,Camera類(lèi)中的takePicture調(diào)用ICamera中的takePicture,ICamera中的takePicture通過(guò)BnCamera可傳遞給其子類(lèi)CameraClient,從而調(diào)用到了CameraClient中的takePicture。添加上RPC相關(guān)邊后的調(diào)用鏈(部分),參見(jiàn)第3節(jié)中表3中的5~7行。

2.3JNI連接生成完整的框架層調(diào)用圖

安卓中大量使用了JNI技術(shù),JNI層的代碼使用Native語(yǔ)言(C/C++)編寫(xiě),使得Java程序中的函數(shù)可以調(diào)用Native語(yǔ)言寫(xiě)的函數(shù),Native程序中的函數(shù)可以調(diào)用Java層的函數(shù)。如圖6所示,在Camera架構(gòu)中,android_hardware_Camera.cpp(JNI)位于Camera.java與Camera.cpp之間,目的就是將Camera.java中的連接、設(shè)置和控制類(lèi)信息傳遞給Camera.cpp,同時(shí)將Camera.cpp中的數(shù)據(jù)回調(diào)信息上交給Camera.java。

為了進(jìn)行如上功能研究,Java層需要向JNI注冊(cè)函數(shù),函數(shù)將定義在JNI中,如圖7所示。Camera.java中的函數(shù)takePicture調(diào)用本地函數(shù)native_takePcture,而native_takePicture在android_hardware_Camera.cpp(JNI)則注冊(cè)為android_hardware_Camera_takePicture,該函數(shù)中實(shí)現(xiàn)具體的功能,即調(diào)用Camera.cpp中的takePicture函數(shù)。這一調(diào)用鏈可參見(jiàn)第3節(jié)中表3中的2~4行。

對(duì)安卓框架層中其它JNI的處理原理也是如此,從而可以將Java框架層與C++框架層的調(diào)用圖連接起來(lái),生成完整的安卓框架層調(diào)用圖。3結(jié)果

以拍照(takePicture)為例,一條從Java層經(jīng)過(guò)JNI、跨過(guò)Binder RPC的調(diào)用鏈可見(jiàn)表3。起點(diǎn)為android.hardware.Camera.java中的takePicture函數(shù),終點(diǎn)為CameraClient.cpp中的takePicure函數(shù),該函數(shù)調(diào)用CameraHardwareInterface.h中的takePicture,本文將其視作偏硬件的操作,不計(jì)入調(diào)用鏈。

而且,研究中可以利用圖形數(shù)據(jù)庫(kù)neo4j[9]對(duì)兩點(diǎn)之間的調(diào)用圖進(jìn)行可視化,Location中部分調(diào)用圖如圖8所示。圖8中,每個(gè)節(jié)點(diǎn)代表一個(gè)函數(shù),在neo4j中點(diǎn)擊進(jìn)行查看。

4結(jié)束語(yǔ)

為了更好地支持各類(lèi)安卓系統(tǒng)框架層安全問(wèn)題的分析,增進(jìn)現(xiàn)有安卓系統(tǒng)靜態(tài)分析的完備性,本文研究設(shè)計(jì)了一種完整的安卓系統(tǒng)框架層調(diào)用圖生成方法。基于對(duì)安卓系統(tǒng)框架層源碼的深入分析和現(xiàn)有相關(guān)開(kāi)源項(xiàng)目的透徹理解,該方法主要包含Java框架層調(diào)用圖、C++框架層調(diào)用圖、JNI連接生成完整的框架層調(diào)用圖共3個(gè)部分。最終生成的完整調(diào)用圖可以支持安卓系統(tǒng)研究者的分析工作,例如,安卓權(quán)限機(jī)制的安全性分析、安卓安全訪問(wèn)管控系統(tǒng)中鉤子代碼的添加[10-11]。

參考文獻(xiàn)

[1] 卿斯?jié)h. Android安全研究進(jìn)展[J]. 軟件學(xué)報(bào),2016, 27(1): 45-71.

[2] AU K W Y, ZHOU Yifan, HUANG Zhen, et al. PScout: Analyzing the Android permission specification[C]// Proceedings of the 2012 ACM conference on computer and communications security. Raleigh, North Carolina, USA:ACM, 2012:217-228.

[3] VALLERAI R, CO P, GAGNON E, et al. Soot-a Java bytecode optimization framework[C]//CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research. Mississauga, Ontario, Canada: ACM, 1999:1-11.

[4] BACKES M, BUGIEL S, DERR E, et al. On demystifying the Android application framework: Re-visiting Android permission specification analysis[C]// 25th USENIX Security Symposium. Austin, TX: USENIX Association, 2016:1-18.

[5] SHAO Yuru, OTT J, CHEN Q A, et al. Kratos: Discovering inconsistent security policy enforcement in the Android framework[C]// Network and Distributed System Security Symposium. San Diego, California, USA:Dblp,2016:1-15.

[6] NARAIN S, VOHUU T D, BLOCK K, et al. Inferring user routes and locations using zero-permission mobile sensors[C]// Security and Privacy. San Jose, CA, USA:IEEE, 2016:397-413.

[7] Doxygen. Downloads[EB/OL]. [2018-01-30]. http://www.stack.nl/~dimitri/doxygen/download.html.

[8] graphviz. Graph visulization software[EB/OL]. [2016-10-10]. http://www.graphviz.org/.

[9] Neo4j.inc. neo4j[EB/OL].[2017-07-11]. https://neo4j.com/.

[10]CHAKRABORTY S, SHEN Chenguang, RAGHAVAN K R, et al. ipShield: A framework for enforcing context-aware privacy[C]//Proceedings of the 11th USENIX Symposium on Networked Systems Design and Implementation(NSDI'14). Seattle, WA, USA: Usenix Association, 2014:143-156.

[11]PETRACCA G, SUN Yuqiong, JAEGER T, et al. AuDroid: Preventing attacks on audio channels in mobile devices[C]//Proceedings of the 31st Annual Computer Security Applications Conference. Los Angeles, CA, USA:ACM, 2015:181-190.(上接第14頁(yè))

[5] [ZK(#〗吳曉軍,王紅星,劉敏. 不同能見(jiàn)度下接收孔徑對(duì)無(wú)線光通信誤碼率性能影響分析[J]. 光學(xué)學(xué)報(bào),2013,33(10):1006003.

[6] 封雙連,張志剛,強(qiáng)希文,等. 戈壁地區(qū)近地面大氣折射率結(jié)構(gòu)常數(shù)的統(tǒng)計(jì)分析[J]. 強(qiáng)激光與粒子束, 2012, 24(1):39-42.

[7] 葛琪,王可東,張弘,等. 長(zhǎng)曝光大氣湍流退化圖像點(diǎn)擴(kuò)散函數(shù)估計(jì) [J]. 紅外與激光工程,2014,43(4):1327-1331.

[8] 王先鵬. 大氣激光通信系統(tǒng)誤碼特性的實(shí)驗(yàn)測(cè)量與分析 [D]. 西安:西安理工大學(xué),2008.

[9] 于林韜,宋路,韓成,等. 空地激光通信鏈路功率與通信性能分析與仿真 [J]. 光子學(xué)報(bào),2013,42(5):543-547.

[10]KAUR P, JAIN V K, KAR S. Performance analysis of FSO array receivers in presence of atmospheric turbulence[J]. IEEE Photonics Technology Letters, 2014, 26(12): 1165-1168.

[11]黃繼鵬,王延杰,孫宏海,等. 激光光斑位置精確測(cè)量系統(tǒng)[J]. 光學(xué)精密工程, 2013, 21(4):841-848.

[12]王德飛,楚振鋒,任正雷,等. 大氣湍流對(duì)激光通信系統(tǒng)誤碼率影響的研究 [J]. 激光與紅外,2011,41(4):390-393.

[13]ANDREWS L C, PHILLIPS R L, YOUNG C Y. Laser beam scintillation with applications [M]. Bellingham: SPIE Press, 2001.

[14]馬曉珊,朱文越,饒瑞中. 利用閃爍和漂移效應(yīng)測(cè)量大氣折射率結(jié)構(gòu)常數(shù)的對(duì)比分析[J]. 強(qiáng)激光與粒子束,2007,19(4):538-542.

[15]LI H D, KALLERGI M, CLARKE L P, et al. Markov random field for tumor detection in digital Mammagraphy[J]. IEEE Trans. on Medical Imaging,1995,14(3):565-576.

猜你喜歡
進(jìn)程分析方法
隱蔽失效適航要求符合性驗(yàn)證分析
債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
用對(duì)方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚(yú)
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國(guó)高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
主站蜘蛛池模板: 亚洲国产高清精品线久久| 毛片视频网址| 欧美国产菊爆免费观看 | AV片亚洲国产男人的天堂| 青草视频久久| 亚洲成人精品在线| 欧美性色综合网| 激情無極限的亚洲一区免费| 亚洲欧美另类专区| 亚洲成a∧人片在线观看无码| 亚洲视频在线青青| 亚洲午夜福利精品无码不卡| 亚洲精品爱草草视频在线| 欧美视频在线观看第一页| 国产好痛疼轻点好爽的视频| 欧美精品v欧洲精品| 婷婷综合色| 国产97区一区二区三区无码| 日韩高清一区 | 97青青青国产在线播放| 最新国产午夜精品视频成人| 国产产在线精品亚洲aavv| 亚洲动漫h| 日本精品αv中文字幕| 久久国产精品麻豆系列| 97综合久久| 中文字幕免费视频| 国产日韩精品一区在线不卡| 国产极品美女在线观看| 久久久久久尹人网香蕉| 亚洲无码久久久久| 国产精品丝袜在线| 色哟哟色院91精品网站| 国产精品久久久久久搜索| 在线网站18禁| 亚洲精品天堂在线观看| 91精品啪在线观看国产91九色| 黄色在线网| 伊人久久久久久久| 色屁屁一区二区三区视频国产| 97国产精品视频人人做人人爱| 色有码无码视频| 午夜无码一区二区三区| 熟妇丰满人妻av无码区| 一级毛片免费的| 又黄又湿又爽的视频| 欧美亚洲国产精品久久蜜芽| 四虎成人精品| 国产成人h在线观看网站站| 国产成人亚洲无吗淙合青草| 99ri精品视频在线观看播放| 色噜噜在线观看| 999精品色在线观看| 久久久精品国产SM调教网站| 欧美国产成人在线| 精品人妻一区无码视频| 无码专区国产精品一区| 一级毛片基地| 99国产精品一区二区| 一级爆乳无码av| 久久免费看片| 亚洲福利一区二区三区| 在线日本国产成人免费的| 激情成人综合网| 一本大道香蕉高清久久| 国产美女免费| 欧美全免费aaaaaa特黄在线| 中文成人无码国产亚洲| 国产理论最新国产精品视频| 亚洲码一区二区三区| 欧美伊人色综合久久天天| 中国国产A一级毛片| 国产亚洲欧美日韩在线一区| 国产主播在线一区| 亚洲天天更新| 婷婷亚洲综合五月天在线| 国产永久免费视频m3u8| 一级毛片免费播放视频| 国内99精品激情视频精品| 久久性妇女精品免费| 天天色综网| 人妖无码第一页|