亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于安卓系統(tǒng)應(yīng)用程序安全視角對(duì)拓展框架進(jìn)行測(cè)試和分析

        2017-01-24 07:52:46任小波張長(zhǎng)勝
        價(jià)值工程 2017年1期

        任小波 張長(zhǎng)勝

        摘要: 本文為探討安卓系統(tǒng)醫(yī)用程序的安全性能,對(duì)不同方式的拓展框架進(jìn)行了對(duì)比和分析,研究結(jié)果顯示I-ARM-Droid框架的優(yōu)越性能。本文展示了此框架下安卓應(yīng)用程序的部分代碼和Dalvik bytecode;對(duì)深入了解I-ARM-Droid框架,并在重寫安卓應(yīng)用程序相關(guān)工具中發(fā)揮作用具體應(yīng)用價(jià)值。

        Abstract: This paper makes a comparative analysis of the safety performance of the medical program of Android system, and analyzes the development framework of different ways. The results show that the I-ARM-Droid framework is superior to the performance of the system. This article shows some of the code and bytecode Dalvik of Android application under this framework; to understand the I-ARM-Droid framework, and to rewrite the application of Android application related tools to play a role in specific applications.

        關(guān)鍵詞: 安卓應(yīng)用程序;安全測(cè)試;拓展框架

        Key words: Android application;security testing;development framework

        中圖分類號(hào):[TN915.09] 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-4311(2017)01-0162-03

        0 引言

        安卓程序的應(yīng)用市場(chǎng)隨著移動(dòng)互聯(lián)網(wǎng)時(shí)代的發(fā)展經(jīng)歷著日新月異的改變。目前,就安卓系統(tǒng)來(lái)講,其中正在使用的應(yīng)用程序多達(dá)百萬(wàn)種,因此,對(duì)于安卓系統(tǒng)來(lái)講,如何進(jìn)行安全防控和安全測(cè)試就顯得尤為重要[1]。正因?yàn)檫@樣,諸多帶病毒的相應(yīng)軟件從安卓漏洞當(dāng)中出發(fā),使得眾多用戶自身的隱私遭受到了損害。研究者針對(duì)安卓手機(jī)用戶的安全問(wèn)題進(jìn)行了諸多研究,開(kāi)發(fā)多種形式的拓展框架 (Framework Extension)為其中重要程度很高的方式,在這當(dāng)中,I-ARM-Droid(In-App Reference Monitors for Android Applications)框架承擔(dān)著重寫重任[2],其突出的優(yōu)點(diǎn)便在于用戶不必更改安卓系統(tǒng)的中間件和Linux內(nèi)核,只需要關(guān)心應(yīng)用APP就可以對(duì)自身電腦進(jìn)行安全防范。之所以使用框架,目的是最大程度上以自定義的方式消除當(dāng)下安卓系統(tǒng)當(dāng)中的相應(yīng)安全隱患。

        1 拓展框架的安全防控原理

        拓展框架通過(guò)確定目標(biāo)方法的應(yīng)用程序建立引用監(jiān)聽(tīng),如此目的有二:其一,用戶自主性較強(qiáng),可自主就Java源代碼進(jìn)行編寫,之后進(jìn)行編譯,得到Dalvikbytecode攔截目標(biāo);除此之外,對(duì)于用戶來(lái)講,原有apk(安卓應(yīng)用程序)若以反轉(zhuǎn)編譯方式得到Dalvikbytecode并進(jìn)行修改,使用期調(diào)用用戶編寫的API,將修改的Dalvikbytecode和用戶創(chuàng)建的Dalvikbytecode集成一體,用戶簽名創(chuàng)建驗(yàn)證修改的apk。需要注意的是,在安卓系統(tǒng)中通常用證書(shū)的形式驗(yàn)證程序開(kāi)發(fā)者,因此,在這個(gè)過(guò)程中拓展框架成為關(guān)鍵一點(diǎn),用戶不必更改安卓系統(tǒng)的中間件和Linux內(nèi)核,只需要關(guān)心應(yīng)用APP就可以添加安全控制措施。并且,通過(guò)測(cè)試證明修改后的部件運(yùn)行性能沒(méi)有收到絲毫影響。

        1.1 確定目標(biāo)方法

        拓展框架進(jìn)行采用的時(shí)候,第一,用戶應(yīng)了解相應(yīng)的目標(biāo)方法,同時(shí)在此基礎(chǔ)上要滿足用戶的個(gè)性化需求。以框架為例,框架示意圖如圖1所示,Dalvikbytecode當(dāng)中,標(biāo)識(shí)方面應(yīng)以全名進(jìn)行認(rèn)可,詳細(xì)來(lái)看,即所有方法在全名當(dāng)中都含有多個(gè)方面,比如返回類型(returning types)、包名(package name)、和類名(class name)[3]。這種方法在用戶需要攔截兩個(gè)同名目標(biāo)方法時(shí)不會(huì)混淆,盡快兩個(gè)方法的名相同,但是可以明顯看出它們?cè)诓煌陌鼉?nèi)。

        1.2 創(chuàng)建Stub/Wedge Java API

        當(dāng)?shù)玫较鄳?yīng)的目標(biāo)方法后,對(duì)于用戶來(lái)講,即可在此基礎(chǔ)上進(jìn)行自定義,所以,就自定義狀況進(jìn)行闡述時(shí),需要分析Stub和Wedge這兩個(gè)重要的概念。

        在Dalvikbytecode中有靜態(tài)方法(Static method),構(gòu)造方法(Constructor),實(shí)例方法(Instance method)三種主要類型可供調(diào)用,在I-ARM-Droid框架中,用戶可以通過(guò)靜態(tài)方法添加用戶的自定義行為,因此,這種方法被稱為Stub方法。具體而言,靜態(tài)方法是在其方法聲明時(shí)添加Static標(biāo)示符,而Java支持靜態(tài)方法和靜態(tài)變量,所以靜態(tài)方法在被調(diào)用時(shí)需要與其類名一同,并不需要提前創(chuàng)建這個(gè)類的實(shí)例。舉例來(lái)說(shuō),I-ARM-Droid框架當(dāng)中應(yīng)就“java. lang. Math. Sqrt”方法進(jìn)行攔截,用戶方式,則可以同樣的返回種類與名字進(jìn)行設(shè)計(jì),也就是 “pkgprefix. java. lang. Math. sqrt”。然而就實(shí)例和靜態(tài)兩種方式來(lái)講,其是完全不同的,實(shí)例方法便不需要標(biāo)識(shí)符,在被調(diào)用時(shí),用戶只有就實(shí)例類型進(jìn)行創(chuàng)設(shè)才可使用相應(yīng)的方式。舉例如下:

        ClassA classA=new ClassA();

        classA. instanceMethodName()。

        圖2當(dāng)中展現(xiàn)的為被攔截實(shí)例方式。

        “android. app. Activity. setContentView(int)”。

        如圖2,其展示的即是用戶將I-ARM-Droid框架當(dāng)作基礎(chǔ)進(jìn)行攔截的相應(yīng)“android. app. Activity. setContentView(int)”。在這當(dāng)中,用戶有對(duì)返回種類與名字進(jìn)行相應(yīng)的創(chuàng)設(shè),差別及是新方式當(dāng)中的參數(shù)共有2個(gè),其一即是被攔截方面的相應(yīng)實(shí)例。和上述方式存在差別的是,所謂構(gòu)造方式,屬于Java創(chuàng)建類當(dāng)中的一種實(shí)例,特征即是定義和方法存在相似性,區(qū)別即是類名和構(gòu)造方式間是相應(yīng)的,其中沒(méi)有返回類型。ClassA classA=new ClassA(args)。圖3中便是攔截的構(gòu)造方法。

        觀察 I-ARM-Droid框架能夠發(fā)現(xiàn),所謂Wedge方法,即是用戶就目標(biāo)方法進(jìn)行攔截的相應(yīng)方式,舉例來(lái)講,若用戶想就“android. app. Activity. setContenView”進(jìn)行攔截的話,首先應(yīng)建立的是Wedge類“pkgprefix. wedge. android. app. Activity”。其中,能夠就setContentView進(jìn)行整體囊括。對(duì)于用戶來(lái)講,需要做的即是將全部承襲 “android.app.Activity”均改為繼承“pkgprefix.wedge.android.app.Activity” 類。圖4即為攔截的“android.app.activity” 類。在圖4中,相應(yīng)的用戶攔截方式是對(duì)為“android. app. Activity. setContent View”進(jìn)行的相應(yīng)調(diào)用,其中Weage整體名稱是“pkgprefix. wedge. android. app. Activity. setContentView”。在此基礎(chǔ)上,即可在更改MainActivity的前提下得到Wedge Activity。

        1.3 更改原始安卓apk

        將Wedge與Stub當(dāng)作基礎(chǔ)攔截目標(biāo)的方式,用戶方面,即可在對(duì)原有的安卓系統(tǒng)應(yīng)用程序當(dāng)中的相應(yīng)目標(biāo)方式進(jìn)行引用,在此基礎(chǔ)上,重寫名稱的調(diào)用情況,通常來(lái)講,用戶能得到apk文件,在這時(shí)候,apktool會(huì)因?yàn)榉淳幾g的方式得到Dalvikbytecode。命令操作即是“apktool d APPNAME. Apk DESTINATION FOLDER NAME” 。下述內(nèi)容是詳細(xì)對(duì)Dalvikbyte code攔截方式的闡述。①以Dalvik bytecode方式為基礎(chǔ),對(duì)靜態(tài)方式進(jìn)行更改;②以Dalvik bytecode為基礎(chǔ),更改其中的實(shí)例方式;③在Dalvik bytecode中修改構(gòu)造類型;④在Dalvik bytecode中修改 Wedge 方法。

        1.4 新的未簽名的apk文件由Dalvik bytecode編譯

        用戶方面,若之前的Dalvik bytecode進(jìn)行了相應(yīng)的更改,同時(shí)劃分成兩類Dalvik bytecode。則用戶的做法即是最大程度上將其進(jìn)行合成,而apktool工具即能創(chuàng)設(shè)相應(yīng)的apk文件,一旦命令成功執(zhí)行之后,新的apk文件便創(chuàng)建在apktool\simpleApp\dist上。

        1.5 簽名測(cè)試安卓應(yīng)用程序

        若安卓系統(tǒng)當(dāng)中有沒(méi)有簽名的相應(yīng)apk,則用戶的證書(shū)即會(huì)驗(yàn)證直白,所以此基礎(chǔ)上可以signapk.Jar為基礎(chǔ),獲取apk文件。概況而言,Stub和Wedge兩種方式攔截了要傳遞給目標(biāo)方法的參數(shù),適宜I-ARM-Droid用戶充分利用現(xiàn)有信息監(jiān)聽(tīng)并制定相應(yīng)的安全策略。

        2 基于安卓程序安全視角的I-ARM-Droid拓展框架分析

        在不同的包中創(chuàng)建Stub和Wedge方法,并不能用行內(nèi)添加自定義代替[4]。這是因?yàn)椋瑢⑵浞旁诓煌陌?,能夠極大有利于開(kāi)發(fā)者減少代碼量,并且新的方法只需要進(jìn)行單次添加。換句話說(shuō),這樣可以減少代碼冗余,并且管理代碼十分方便。同時(shí),本文選擇用Dalvik bytecode代替javabytecode植入也頗有深意,這是因?yàn)橹T如dex2jar等類似的相應(yīng)編譯工具,均是可通過(guò)Dalvik bytecode進(jìn)行轉(zhuǎn)碼的,之后得到Java字節(jié)碼,卻無(wú)法保證可以把javabytecode更改為Dalvikbytecode并保證其安全性能。

        2.1 拓展框架的局限之處

        以Stub與Wedge方式當(dāng)作基礎(chǔ)進(jìn)行創(chuàng)設(shè),最關(guān)鍵的即是相應(yīng)的開(kāi)發(fā)人員在安卓應(yīng)用程序開(kāi)放上擁有經(jīng)驗(yàn),就算是I-ARM-Droid可維持安卓系統(tǒng)當(dāng)中的相應(yīng)中間件層,然而開(kāi)發(fā)者方面,仍舊不能很好的就不一樣的目標(biāo)方法的安全敏感性進(jìn)行明確,因此開(kāi)發(fā)者便無(wú)從判定,需要向擁有豐富開(kāi)發(fā)經(jīng)驗(yàn)的大公司求助[5]。很顯然,這對(duì)安卓應(yīng)用程序開(kāi)發(fā)而言是一筆不菲的開(kāi)支,同是,當(dāng)開(kāi)發(fā)者不能維持源代碼準(zhǔn)確性時(shí),即會(huì)得到全部危險(xiǎn)目標(biāo)方法,特別應(yīng)注意的為, Stub與Wedge兩種方式均需要開(kāi)發(fā)者就原有的相應(yīng)程序代表展開(kāi)變化,舉例來(lái)講,采取Wedge方法時(shí),開(kāi)發(fā)者方面,應(yīng)就原有的子類進(jìn)行變化,承襲其中含有Wedge方式的相應(yīng)類,若類在安全測(cè)試上沒(méi)有通過(guò),那么程序的正常性就會(huì)受到威脅。

        2.2 拓展框架的優(yōu)越性能

        比較而言,I-ARM-Droid的框架是安卓全擴(kuò)展形式的“便攜式”體現(xiàn),這是因?yàn)榇丝蚣艽嬗趹?yīng)用層當(dāng)中,優(yōu)勢(shì)即是和中間件與Linux內(nèi)核方面的距離較遠(yuǎn)。若框架在進(jìn)行修改的時(shí)候關(guān)系到此兩方面的話,那么安卓系統(tǒng)的平臺(tái)代碼全部都得更換。在此狀況下,這種更換要比單純的對(duì)應(yīng)用程序代碼進(jìn)行更改的步驟與內(nèi)容更為繁雜,然而,即使是整體進(jìn)行修改,同樣應(yīng)獲取root權(quán)限[6],而這即會(huì)在很大程度上讓安卓系統(tǒng)平臺(tái)在安全方面受到威脅。所以, I-ARM-Droid優(yōu)勢(shì)是較高的,對(duì)其來(lái)講,需要做的即是對(duì)應(yīng)用層進(jìn)行部分的更改。另外,在注入了stub和wedge API后,對(duì)安卓應(yīng)用程序性能上的影響微乎其微。

        以最大程度上展現(xiàn)驗(yàn)證性能為目的,本篇在進(jìn)行試驗(yàn)的時(shí)候,采用的為Stub方法,對(duì)象即是“java.lang.StringBuilderappend(String str)” 調(diào)用過(guò)程,首先創(chuàng)建了靜態(tài)方法,如圖5所示。在此案例中,本文完成相應(yīng)的調(diào)用目標(biāo)方式是“java. lang. StringBuilder. append(String str)”10 000次。原有調(diào)用的相應(yīng)時(shí)間是68μs,納入Stub后,調(diào)用時(shí)間增加到了75μs。這在一定程度上表明幾乎每一次的相應(yīng)調(diào)用時(shí)間會(huì)維持在0.0007μs左右。如圖6所示,Logcat所展示出的是納入stub方法之前與之后,在調(diào)用時(shí)間方面的狀況(“pkgprefix. java. lang. StringBuider. append(java. lang. StringBuilder sb, String str” )。概而言之,重要性是I-ARM-Droid框架的重要特點(diǎn),無(wú)論是哪種目標(biāo)方式,其源頭都是Android SDK,或是Java SDK。除此之外,所有安卓應(yīng)用程序當(dāng)中,對(duì)象用戶均可以用相同的方法攔截目標(biāo)方法,保證安卓應(yīng)用平臺(tái)的安全性和兼容性。

        3 結(jié)論

        本文通以I-ARM-Droid拓展框架展示了部分代碼和工具,并通過(guò)安卓應(yīng)用程序改進(jìn)測(cè)試。本文研究在對(duì)目標(biāo)進(jìn)行明確時(shí),挑選的是難度較低的方式,就Stub與Wedge兩種方式進(jìn)行了創(chuàng)設(shè),同時(shí)展出了Dalvik bytecode反編譯(改正后)的相應(yīng)方式。就本篇來(lái)講,談到的2類方式都可以對(duì)參數(shù)進(jìn)行攔截,所以用戶即具有較大的便利性,可以相對(duì)明確的方式就目標(biāo)方法展開(kāi)監(jiān)控。

        參考文獻(xiàn):

        [1]夏宏利.云應(yīng)用安全測(cè)試技術(shù)探索[J].計(jì)算機(jī)與網(wǎng)絡(luò),2014(23).

        [2]張超永,鄧迎君,李松合,李國(guó)杰.對(duì)搭建企業(yè)源代碼安全測(cè)試云平臺(tái)的研究[J].電腦編程技巧與維護(hù),2016(09).

        [3]Davis B,Sanders B,Khodaverdia A,et al. I-ARM-Droid:A rewriting framework for in - app reference monitors for android

        applications[C]/ /In IEEE Mobile Security Technologies(MoST),San Francisco,CA,2012.

        [4]Hornyack P,Han S,Jung J,et al.These aren t the droids you re looking for:retrofitting android to protect data from imperious applications[C] / /Proceedings of the 18th ACM conference on Computer and communications security.ACM,2011.

        [5]Stavrou,Angelos,Ryan Johnson,et al. Programming on Android:Best Practices for Security and Reliability[C]/ /Software Security and Reliability (SERE). I E 7th International Conference,2013:1-2.

        [6]Rhee,Keunwoo,Hawon Kim.Security Test Methodology for an Agent of a Mobile Device Management System[J].International Journal of Security & Its Applications,2012,6:2.

        97久久人人超碰超碰窝窝| 国产精品久久av高潮呻吟| 国产av一区二区亚洲精品| 精品欧洲av无码一区二区14| 蜜臀aⅴ国产精品久久久国产老师| 国产一区二区丰满熟女人妻| 男女动态视频99精品| 精品国产yw在线观看| 福利体验试看120秒| 国产成人亚洲精品77| 久久精品国产亚洲av沈先生 | 欧美国产伦久久久久久久| 亚洲综合视频一区二区| 国模吧无码一区二区三区| 国产人妖视频一区二区| 精品国产自拍在线视频| 久久亚洲中文字幕精品熟| av 日韩 人妻 黑人 综合 无码| 在线观看国产高清免费不卡黄| 91麻豆精品一区二区三区| 亚洲久悠悠色悠在线播放| 久久中文精品无码中文字幕下载| 在线观看网址你懂的| 一区二区在线观看日本免费| www夜片内射视频在观看视频| 国产一线二线三线女| 无码AV午夜福利一区| 日本人妻系列中文字幕| 久久精品国产亚洲av高清热| 亚洲国产一区在线二区三区| 国内国外日产一区二区| 中国女人内谢69xxxxxa片| 激情欧美日韩一区二区| 国产一区二区亚洲av| 国产亚洲超级97免费视频| 色八a级在线观看| 欧美综合区自拍亚洲综合| 中文字幕人妻日韩精品| 国产色在线 | 亚洲| 精品国产一区二区三区AV小说 | 国产亚洲3p一区二区|