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

基于Accessibility Service的Android外掛插件實現原理及防御措施

2019-12-12 06:05:16陳冬王太成
軟件導刊 2019年11期
關鍵詞:檢測方法

陳冬 王太成

摘 要:為解決傳統反外掛技術難以有效防御基于Accessibility Service的Android應用程序外掛問題,通過反編譯已知的基于Accessibility Service的移動外掛插件,從AccessibilityService源碼剖析入手,分析其實現原理和外掛模式,從而有針對性地提出通過AccessibilityManager有效檢測外掛插件,實現Android應用程序有意識屏蔽關鍵UI節點的獲取和點擊事件這兩種有效防御措施。實驗結果表明,綜合采用這兩種防御措施,對已知外掛插件及通過簽名變種的外掛插件識別準確率分別達到100%和92%。綜合應用AccessibilityManager檢測外掛插件及屏蔽關鍵UI節點和點擊事件這兩種防御措施能有效防御基于Accessibility Service的Android應用程序外掛。

關鍵詞:Accessibility Service;Android外掛;外掛分析;外掛防御;反外掛

Abstract: For solving the problem that traditional anti-cheat technology is difficult to defend against Android application cheater based on Accessibility Service, by decompoiling mobile cheaters based on Accessibility Service,we view the Accessibility Service source code to analyze its implementation principle and cheat mode. Finally two targeted defense measures are proposed that we can use Accessibility Manager to effectively detect cheaters and consciously block access and click for key UI nodes when implementing Android applications. Experiment results have shown that using these two defenses, the recognition accuracy of cheater and variation cheater by change signature is 100% and 92%. Using these two defenses can effectively protect Android application cheater based on Accessibility Service.

Key Words: Accessibility Service; Android cheater; cheater analysis; cheater detection; anti-cheat

0 引言

外掛程序在計算機界由來已久,上世紀90年代初就有程序員利用Windows操作系統的Hook函數監控操作系統消息進行軟件破解或木馬后門編寫[1]。到后來,在巨大的利益驅使下網絡游戲外掛盛行,程序員利用鼠標鍵盤模擬、修改客戶端程序、截取調換封包和全自動脫機等方法制作各種游戲外掛,給游戲公司造成巨額損失[2]。鑒于此,反外掛技術研究得到重視。大部分反外掛技術在客戶端使用Windows驅動掃描進程特征[3],在服務端基于交換機鏡像分光截獲通信協議匹配外掛行為[4]。隨著大數據應用和機器學習技術的發展,出現了基于用戶的基礎數據和行為數據分析[5],以及將SVM、KNN、極限學習機等機器學習算法用于游戲外掛檢測等[6]研究,網絡游戲領域反外掛技術日漸成熟。

隨著移動互聯網的蓬勃發展,移動端的惡意程序和外掛插件逐漸增多,特別是在Android移動端存在很多外掛插件,例如搶紅包、搶票、自動打卡等,嚴重影響了互聯網企業正常運營活動,給企業和用戶帶來了巨大損失。因此,移動端安全成為移動應用開發領域急需解決的核心問題之一。移動平臺安全研究很多,但大部分是針對平臺安全的,如借鑒傳統反木馬技術研究移動端應用程序框架層的Hook API方法和內核層的系統調用攔截方法[7],或是基于Android簽名機制使用簡單的黑名單過濾[8],或是結合機器學習算法構建檢測模型,實現對惡意行為的檢測理論研究[9]。移動平臺上外掛程序,特別是近兩年出現在Android平臺上利用Accessibility Service實現的外掛插件,其實現思路完全有別于傳統外掛程序實現思路,所以生搬傳統反外掛技術研究在實際應用中很難有效防御移動端外掛插件。本文通過對當前流行的基于Accessibility Service實現的移動端外掛插件進行反編譯,深入分析其實現原理和外掛行為模式,有針對性地提出防御措施,彌補了Accessibility Service類移動端外掛插件研究的缺失。

1 Accessibility Service剖析

Accessibility Service本來是Android提供給程序員實現無障礙輔助功能的一種系統服務,通過Accessibility Service,應用程序可以增強用戶界面以幫助殘障人士及暫時無法與設備充分交互的人[10]。Accessibility Service之所以被外掛插件利用,需要從Accessibility Service內部工作機制及其監控其它應用程序的原理兩個方面分析。

1.1 Accessibility Service內部工作機制

從Google的官方文檔和Android相關源代碼分析,得到AccessibilityService類和相關類及其關系如圖1所示。

其中:AccessibilityService是Service的子類,并重寫了onBind方法。在onBind方法中創建并返回了一個IAccessibilityServiceClientWrapper實例對象。另外,在AccessibilityService中還預留了onAccessibilityEvent接口,提供給程序員在自己的AccessibilityService子類中實現針對AccessibilityEvent事件的邏輯處理。

IAccessibilityServiceClientWrapper繼承自IAccessibilityServiceClient類,該類是一個AIDL接口,同時IAccessibilityServiceClientWrapper還繼承了IAccessibilityServiceClient.Stub類,并且實現了HandlerCaller.Callback接口。由此可以確定AccessibilityService是一個遠程服務,使用Android的跨進程通信技術[11]。

Android系統編譯器在IAccessibilityServiceClient.aidl保存后會自動在相同的包目錄下生成對應的Java接口類,并在該類自動生成一個內部靜態抽象類Stub[12]。Stub類繼承android.os.Binder,該類向上又實現了IBinder接口,并且實現了IAccessibilityServiceClient接口。編譯器在Stub類內部生成一個靜態類Proxy,該類實現IAccessibilityServiceClient接口,所以最終AIDL執行結果是Stub中的Proxy代理執行結果[13]。

在IAccessibilityServiceClientWrapper的構造方法中有兩個較重要的參數,一個是looper,在Accessibility Service的實現中就是主線程,可使應用程序從binder線程回到主線程;另一個是Callbacks類型的回調對象callback。callback參數初始化一個HandlerCaller對象。HandlerCaller的主要作用是通過持有Context所在線程的Handler實例對象,不斷往Context所在線程的消息隊列發送消息,然后在Handler實例對象的回調方法handleMessage中調用回調對象的executeMessage方法,而回調對象正是IAccessibilityServiceClientWrapper,所以最終調用的是IAccessibilityServiceClientWrapper的executeMessage方法,具體流程如圖2所示。

1.2 綁定和監控其它APP原理

Android使用Accessibility Service監控其它應用程序并獲得UI更改方法如下:

從Google的官方文檔和Android相關源代碼分析得到相關類及其關系如圖3所示。當用戶在設置頁面開啟某個Accessibility Service的無障礙應用程序后,Android系統會發送一條廣播到AccessibilityManager Service系統服務[14]。收到該廣播后,AccessibilityManager Service會綁定開啟的Accessibility Service,即調用上文提到的繼承自Service的AccessibilityService子類的onBind方法。根據上文分析流程,在AccessibilityService內部,onBind方法會創建并返回一個IAccessibilityServiceClientWrapper對象,開啟AIDL跨進程通信。

當某個受到監控的應用程序UI發生改變時,Android會通過View類中的ViewRootImpl對象調用其中的AccessibilityManager對象發送AccessibilityEvent事件。發出的AccessibilityEvent事件會通過Binder類調用AccessibilityService的onAccessibilityEvent接口[15],并將AccessibilityEvent事件作為參數傳遞給AccessibilityService的具體實現類,即最終調用重寫的onAccessibilityEvent方法。

在Android的Accessibility Service實現框架中還有很重要的一點:UI中的每一個View對象都會存儲為一個AccessibilityNodeInfo對象。通過這個對象在UI節點樹中可以查找到對應的View對象,并像操作原View對象一樣對AccessibilityNodeInfo對象進行操作,例如執行點擊操作[16],其本質是對應用中的元數據使用反序列技術,通過AccessibilityInteractionClient類實現 [17],流程如圖4所示。

2 外掛插件實現思路

了解Accessibility Service的內部實現原理和它如何監控APP后,要實現一個基于Accessibility Service的Android外掛插件就變得容易了,其實現思路如下:

當手機用戶在設置界面為某個APP開啟無障礙服務后,Accessibility Service會一直在后臺運行。當手機屏幕界面狀態發生變化時,如狀態欄出現新通知、窗口中焦點被移動等,就會發生AccessibilityEvent事件,這樣Accessibility Service將可接收到界面的所有變化。而在Accessibility Service中,Android將手機屏幕中的所有UI組件信息存儲在AccessibilityNodeInfo類中,因此可通過這些信息在UI節點樹中獲得相應的組件View對象,并執行期望的操作,例如點擊操作。

以微信搶紅包外掛插件為例,插件在后臺啟動Accessibility Service后,當手機收到微信紅包的推送信息后,會發生AccessibilityEvent事件,從而調用AccessibilityService中重寫的onAccessibilityEvent方法,插件代碼通過判斷推送信息中是否包含“[微信紅包]”的消息提示進入聊天界面。通過AccessibilityNodeInfo遍歷窗口UI節點樹各個節點,發現帶有”領取紅包”字樣的節點,則點擊進入搶紅包界面。在搶紅包界面,插件代碼再通過UI節點的ID獲取含有“開”按鈕的UI節點,打開紅包詳情頁面。在紅包詳情頁面,通過UI節點ID獲取返回鍵按鈕對應的節點,點擊該節點并返回微信聊天界面。

3 外掛插件防御

在了解基于Accessibility Service實現外掛插件原理和Accessibility Service的工作機制后,制定防御措施就變得更有針對性,主要從兩個方面入手:①既然Accessibility Service需要通過AccessibilityManager Service注冊,就可以在AccessibilityManager Service處尋求方法進行相關插件的檢測和禁止;②既然最終操作View的是AccessibilityInteractionClient對象,那么就在此處想辦法,讓其無法獲得對應的View對象或無法操作該View對象,以達到防御插件的目的。

3.1 外掛插件檢測

Accessibility Service需要通過AccessibilityManager Service注冊,而在AccessibilityManager Service類中Android提供了一個getInstalledAccessibilityServiceList方法[18],該方法可通過用戶ID獲得所有AccessibilityService的服務信息。這些信息是通過AccessibilityServiceInfo類型提供的,其中PackageNames是防御代碼處理的關鍵。在具體實現時需注意:由于AccessibilityManager Service是系統類,并未提供重寫接口,除非重新編譯Android系統源代碼,否則無法實現代碼邏輯。但是上文提及的AccessibilityManager類,其內部利用Binder可以間接調用AccessibilityManager Service[19]。除此之外,AccessibilityManager Service還有一個getEnabledAccessibilityServiceList方法[18],可以取得所有已經開啟的AccessibilityService,所以防御的實現思路也是一樣的。通過比較正在監控目標的Accessibility Service應用程序的包名,檢測或禁止外掛插件啟動。

3.2 屏蔽View獲取和點擊事件

Accessibility Service最終是通過AccessibilityInteractionClient對象操作View對象。其中,通過調用findAccessibilityNodeInfosByText方法獲得期望的被監控應用程序UI的關鍵View對象,再通過調用performAccessibilityAction方法在該View對象上執行點擊操作。針對此原理采取以下兩個措施:①在實現APP時實現自己的TextView實現類,使其重寫TextView的findViewsWithText方法[20],在該方法中將控件移出UI節點樹,使Accessibility Service反序列查找UI節點樹時無法找到這個View對象;②performAccessibilityAction方法執行點擊事件最終會調用查找到的View的OnClickListener,所以可將OnClick替換為OnTouch事件。因為Android控件一般的操作都是執行點擊操作,外掛插件編寫者一般也會有這個固定思維。

4 結語

移動平臺的反外掛技術研究越來越重要,但將傳統的反外掛技術直接應用于移動應用平臺難以有效防御外掛,特別是基于Accessibility Service的移動外掛插件。本文通過反編譯已知的基于Accessibility Service的移動外掛插件,分析其實現原理和外掛行為模式,有針對性地提出通過AccessibilityManager有效檢測外掛插件,以及實現Android應用程序時有意識屏蔽關鍵View的獲取和點擊事件這兩種有效防御措施。實驗驗證表明,綜合采用這兩種措施,對已知外掛插件的識別準確率可達100%,對通過簽名變種的外掛插件識別準確率也達到92%。未來在外掛插件樣本數據充足的情況下,可以結合本文研究成果,應用機器學習算法,對移動外掛插件進行外掛行為模式的自動識別研究,以提高對其它形式變種外掛的識別準確率。

參考文獻:

[1] 甘迪文. Windows黑客編程技術詳解[M]. 北京:人民郵電出版社,2018.

[2] 蘭曉,尹杰. 中國網絡游戲外掛問題現狀分析[J]. 軟件,2010,31(10):71-77.

[3] 胡和君,范明鈺. 基于內存搜索的隱藏進程檢測技術[J]. 計算機應用,2008,29(1):124-129.

[4] 李延會,岳彩祥,徐金艷,等. 基于Winpcap的數據包捕獲和協議分析系統的設計與實現[J]. 中國科技信息,2009(10):66-71.

[5] 楊丹,高員,顧欣,等. 基于用戶數據分析的網頁游戲反外掛方法[J]. 電子產品可靠性與環境試驗,2015,33(4):25-31.

[6] 黃旭,曾孟佳,范婧,等. 一種基于ELM的在線游戲外掛檢測方法[J]. 微型電腦應用,2018,34(4): 1-4.

[7] 王倩文,沈蘇彬,吳振宇. 基于安卓平臺的惡意軟件動態監測的研究[J]. 計算機技術與發展,2018,28(8):124-128.

[8] NIKOLAY ELENKOV. Android security internals: an in-depth guide to android's security architecture[M]. No Starch Press,2014.

[9] 王明生. 基于機器學習的Android惡意應用檢測系統的設計與實現[D]. 蘭州:蘭州大學,2017.

[10] GOOGLE ANDROID TEAM. Build accessibility services[EB/OL]. https://developer.android.google.cn/guide/topics/ui/accessibility/services.

[11] BLAKE MEIKE G. Inside the Android Os: building, customizing, managing and operating Android system services[M]. Addison-Wesley Professional, 2018.

[12] 胡安明. Android平臺中AIDL語言的研究與分析[J]. 廣東技術師范學院學報:自然科學版,2014, 35(3):29-31.

[13] GOOGLE ANDROID TEAM. Android interface definition language[EB/OL]. https://developer.android.com/guide/components/aidl.

[14] GOOGLE ANDROID TEAM. Broadcasts overview[EB/OL]. https://developer.android.google.cn/guide/components/broadcasts.

[15] 林學森. 深入理解Android內核設計思想[M].北京: 人民郵電出版社,2017.

[16] GOOGLE ANDROID TEAM. Use node tree debugging[EB/OL]. https://developer.android.com/guide/topics/ui/accessibility/node- tree-debugging.

[17] GOOGLE ANDROID TEAM. Build more accessible custom views[EB/OL]. https://developer.android.com/guide/topics/ui/accessibility/custom-views.

[18] GOOGLE ANDROID TEAM. Accessibility manager[EB/OL]. https://developer.android.com/reference/android/view/accessibility/AccessibilityManager.

[19] PATIL N,BHOLE D,SHETE P. Enhanced UI automator viewer with improved android accessibility evaluation features[C]. International Conference on Automatic Control & Dynamic Optimization Techniques. IEEE, 2016.

[20] GOOGLE ANDROID TEAM. TextView [EB/OL]. https://developer.android.com/reference/android/widget/TextView.

(責任編輯:杜能鋼)

猜你喜歡
檢測方法
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
學習方法
小波變換在PCB缺陷檢測中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
主站蜘蛛池模板: 日韩人妻少妇一区二区| 日韩人妻少妇一区二区| 国产精品视频a| 国产一区亚洲一区| 国产成人高清亚洲一区久久| 国产毛片基地| 麻豆国产精品一二三在线观看| 五月天丁香婷婷综合久久| 久久一级电影| 欧美一级99在线观看国产| 一级片一区| 先锋资源久久| 精品福利一区二区免费视频| 久久精品中文字幕少妇| 69综合网| 性网站在线观看| 99久久成人国产精品免费| 夜夜操天天摸| 国产成人高清精品免费| 白丝美女办公室高潮喷水视频| AV老司机AV天堂| 国产呦视频免费视频在线观看| 国产精品浪潮Av| 国产av色站网站| 九九热这里只有国产精品| 日本高清免费不卡视频| av在线手机播放| 久久国语对白| 欧美成人aⅴ| 狠狠干综合| 激情六月丁香婷婷四房播| 爆乳熟妇一区二区三区| 日韩一级二级三级| 国产综合日韩另类一区二区| 午夜老司机永久免费看片| 国产免费观看av大片的网站| 国产欧美又粗又猛又爽老| 一本大道香蕉中文日本不卡高清二区| 亚洲欧美日本国产综合在线 | 国产精品深爱在线| 手机精品福利在线观看| 国产农村1级毛片| 国产免费羞羞视频| 麻豆国产精品一二三在线观看| www.精品视频| 国产极品粉嫩小泬免费看| 爱色欧美亚洲综合图区| 国产精品三级av及在线观看| 久久国产热| 一级毛片a女人刺激视频免费| 欧美日韩亚洲综合在线观看| 国产日本一线在线观看免费| 男人天堂亚洲天堂| 久久国产拍爱| 欧美日韩国产精品va| 亚洲中文在线看视频一区| 亚洲第一区精品日韩在线播放| 免费一级α片在线观看| 特级欧美视频aaaaaa| 国产黄色爱视频| 国产青青操| 色综合五月| 一级毛片免费不卡在线视频| 在线日韩日本国产亚洲| 欧美精品成人| 色欲色欲久久综合网| 亚洲精品动漫在线观看| 呦女亚洲一区精品| 国产国拍精品视频免费看| 亚洲中字无码AV电影在线观看| 狠狠色狠狠色综合久久第一次| aa级毛片毛片免费观看久| 欧美成人A视频| 性色生活片在线观看| 久久成人免费| av性天堂网| 四虎国产精品永久一区| 国产在线自揄拍揄视频网站| 亚洲V日韩V无码一区二区| 99精品热视频这里只有精品7| 国产成人永久免费视频| 国产精品久久精品|