編輯:關於Android編程
2013年6月,俄羅斯安全廠商卡巴斯基發現了史上最強手機木馬-Obad.A,該木馬利用了一個未知的Android設備管理器漏洞(ANDROID-9067882),已激活設備管理器權限的手機木馬利用該漏洞,可以在設置程序的設備管理器列表中隱藏,這樣用戶就無法通過正常途徑取消該手機木馬的設備管理器權限,從而達到無法卸載的目的。Android4.2版本以上系統已經修復該漏洞。(漏洞詳情:http://blog.csdn.net/androidsecurity/article/details/9124747)
日前,百度安全實驗室發現手機木馬開始利用另一新的Android設備管理器漏洞,新的設備管理器漏洞是由於Android系統在取消激活設備管理器流程的設計缺陷引起的,惡意軟件利用該設計缺陷,可以阻止用戶取消激活設備管理器,進而達到反卸載的目的。該漏洞存在於Android系統所有版本。
一、取消激活設備管理器源代碼分析
Android取消激活設備管理器流程源代碼:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD48cD4gICAgICBBbmRyb2lkyKHP+7yku+7J6LG4udzA7cb3u/mxvsH3s8zNvKO6PC9wPjxwPjxiciAvPjwvcD48cD4gPGltZyBzcmM9"/uploadfile/Collfiles/20141011/2014101108335741.png" alt="\" width="850" height="480" />
1、ActivityManagerNative.getDefault().stopAppSwitch()方法功能
為什麼第一步就調用該函數呢?通過源代碼注釋可以看出調用該函數目的是:禁止其它程序在用戶取消設備管理器操作過程彈出Dialog,影響用戶操作。
stopAppSwitch()源代碼如下圖所示:
通過代碼我們發現該方法的具體實現是:
規定在APP_SWITCH_DELAY_TIME時間內禁止進行Activity切換。該方法調用後,所有應用的Activity調用請求會被系統放到掛起的請求隊列中。被掛起的Activity調用請求會在APP_SWITCH_DELAY_TIME時間後才會被系統執行。
通過調用stopAppSwitch()方法,系統保證在進入取消設備管理器界面後,5秒內不會進行Activity的切換。
二、漏洞原理分析
通過以上流程我們發現,在第8步設備管理器調用
DevicePolicyManagerService.removeActiveAdmin()取消激活設備管理器之前,DevicePolicyManagerService會調用應用的onDisableRequested方法獲取取消激活的警示信息。如果onDisableRequested函數返回內容為空的,第8步就會自動執行;如果onDisableRequested函數返回內容不能為空,會彈出Dialog顯示返回的警示信息,提示用戶是否取消激活。用戶點擊確認後才會執行第8步。
如何阻止流程執行到第8步呢?
onDisableRequested是唯一在流程第8步之前被調用的函數。為了阻止流程走到第8步,onDisableRequested函數滿足以下條件即可:
1、返回內容不能為空,這樣才可以使設備管理器彈出取消激活設備管理器警示信息 Dialog。
2、通過Activity切換的方式使設備管理器彈出的警示信息Dialog消失。使用戶無法操作Dialog。
如果做到以上兩點,程序即可成功阻止用戶取消激活設備管理器操作。
三、漏洞利用方法
以下提出三種可以利用該流程設計缺陷,成功阻止用戶取消設備管理器的方法。
1、通過鎖屏方式
[java] view plaincopy
2、通過阻塞函數返回方式
[java] view plaincopy
3、通過透明窗口劫持方式
[java] view plaincopy以上方法都會在onDisableRequested中,采用不同方式使用戶在5秒時間內無法操作界面。因為5秒後Activity切換請求才會被系統執行。
我們學習了一些Android數據庫相關的基礎知識,和幾個頗為有用的SQLite命令,都是直接在命令行操作的。但是我們都知道,數據庫是要和程序結合在一起使用的,
本文實例講述了Android編程入門之HelloWorld項目目錄結構。分享給大家供大家參考,具體如下:我們介紹了如何搭建Android開發環境及簡單地建立一個Hello
這一章將重點討論怎麼在應用中加入ffmpeg組件。所有測試都將在 Android Studio工具中進行。測試例子源地址:https://github.com/roman
前言:工欲善其事,必先利其器,工作一段時間後,對於以上十個字的感觸是最深的。剛參加工作的時候,並沒有對於要做的事情有著自己的理解,經常是上面分配了工作,自己就乖乖地跑去做