一種監控行動裝置的應用程式的方法和系統的製作方法
2023-05-28 08:52:16 2
專利名稱:一種監控行動裝置的應用程式的方法和系統的製作方法
技術領域:
本發明涉及通信安全領域。具體而言,涉及安卓作業系統中,監控應用程式的操作的方法和系統。
背景技術:
行動裝置,例如智慧型手機、平板電腦等,已經成為應用程式開發的主流平臺,並孕育產生了移動軟體和網際網路行業。隨著移動通訊行業的發展,行動裝置的用戶有了更大的自由度來選擇和安裝應用程式軟體,從而使行動裝置的使用體驗更加符合個性化的需求。然而,在移動應用生態系統中,除了無害的移動應用軟體,用戶無法避免接觸到病毒程序或包含病毒程序的有害軟體。移動應用平臺與傳統的個人電腦的桌面作業系統不同的是,移動應用平臺,例如安卓作業系統,對於系統內核進行了封鎖或者使開發者很難利用傳統病毒偵測手段來監視和控制其它應用程式的操作。現有技術中有一些的方法,例如,公開號為20110047597,申請日為2010年8月25日的,名為「安全數據獲取和分析的方法和系統」的美國專利申請公開了一種病毒檢索技術,該技術包括行動裝置的客戶端軟體將應用程式的相關數據發送至伺服器,由伺服器端對應用程式進行多方面的分析,並將分析結果傳回行動裝置。但是這種技術的限制在於其無法跟上行動應用程式的發展。隨著行動裝置的處理能力的逐步提高,行動應用程式的容量也日益增加,雖然伺服器端進行分析不會浪費行動裝置的處理器計算能力的資源,但是傳輸較大的程序的數據需要佔據行動裝置的無線傳輸流量,浪費一定的時間並可能消耗用戶的流量費用。此外,這種處理只能在程序安裝或對全部應用程式進行掃描是發揮作用,對於已經安裝的應用程式的操作完全不設限制。綜上所述,現有技術不能高效的實時監測行動應用程式的操作,或者其技術手段依賴於伺服器端的操作,需要依賴於已知的病毒和惡意軟體庫,而往往對於新出的惡意軟體和病毒無法產生效果,造成了技術應用的局限性。
發明內容
本發明解決的技術問題是提供一種行動裝置的應用程式監控的方法和系統,使監控手段突破了行動作業系統的API限制,通過底層的通信機制攔截惡意行為,並且實現了實時監控,也不需要依賴於伺服器端的資源。根據本發明的一個方面,所採用的技術方案是提供一種監控行動裝置應用程式的方法,包括以下步驟:建立模擬系統服務;與設備驅動程序中對設備的I/O通道進行管理的函數建立聯繫;截取所述應用程式發送到設備驅動程序中對設備的I/O通道進行管理的函數的數據;根據所截取的數據,將應用程式所請求的系統服務替換為相應的模擬系統服務;將該數據請求發送到模擬系統服務;以及記錄模擬系統服務收到的請求並轉發至分析模塊進行分析。
根據本發明的一個方面,記錄模擬系統服務收到的請求包括:在系統層服務和應用層服務之間建立代理服務;在代理服務中註冊應用服務;以及將系統層中的模擬系統服務記錄的請求轉化為應用層可見的請求。根據本發明的一個方面,截取所述應用程式發送到設備驅動程序中對設備的I/O通道進行管理的函數的數據的步驟進一步包括讀取用於系統進程間通信的系統驅動設備的數據接收緩存中的數據。根據本發明的一個方面,用於系統進程間通信的系統驅動設備是安卓作業系統中的binder內核驅動設備。根據本發明的一個方面,分析模塊將應用層可見的請求呈現給用戶,提示用戶選擇允許或禁止該請求的操作。根據本發明的一個方面,如果用戶選擇允許,將應用層可見的請求和允許的指令轉化為系統層中的模擬系統服務的請求,使相應的系統服務執行該請求的操作;如果用戶選擇禁止,則停止操作。根據本發明的一個方面,還包括建立用戶規則資料庫,並將應用程式名稱、操作類型和用戶選擇存入用戶規則資料庫。根據本發明的一個方面,還包括當分析模塊接收到應用層可見的請求,查詢用戶規則資料庫,根據用戶規則自動允許或禁止所請求的操作。根據本發明的一個方面,所採用的技術方案提供一種監控行動裝置應用程式的系統,包括安裝在行動裝置的客戶端,所述客戶端包括多個模擬系統服務模塊、函數鉤子模塊、代理服務模塊、分析模塊和用戶規則資料庫;所述模擬系統服務模塊對應於行動裝置作業系統中的系統服務模塊;所述函數鉤子模塊與行動裝置的作業系統內核通信,並與設備驅動程序中對設備的I/o通道進行管理的函數建立聯繫,截取所述應用程式發送到設備驅動程序中對設備的I/o通道進行管理的函數的數據,根據所截取的數據,將應用程式所請求的系統服務轉發至相應的模擬系統服務模塊;所述代理服務模塊與模擬系統服務模塊通信,所述代理服務模塊在系統層服務和應用層服務之間溝通,將系統層中的模擬系統服務記錄的請求轉化為應用層可見的請求;所述分析模塊與代理服務模塊和用戶規則資料庫通信,讀取應用程式請求的操作,並根據用戶規則資料庫中存儲的規則允許或禁止應用程式的操作。根據本發明的一個方面,當分析模塊允許應用程式的操作時,所述代理服務模塊將應用層可見的請求和允許的指令轉化為系統層中的模擬系統服務的請求,使相應的系統服務執行該請求的操作;當分析模塊禁止應用程式的操作時,則停止操作。本發明的有益效果在於,有效的繞過安卓作業系統對於系統內核的封鎖。本發明的有益效果還在於,實現應用程式的實時監控,並充分利用行動裝置本地資源。
下面結合流程圖對本發明進一步說明。圖1是本發明的監控行動裝置應用程式的方法的操作流程圖。
圖2是本發明的方法中的分析應用程式的操作的流程圖。圖3是本發明的方法中的監視應用程式的操作的流程圖。圖4是本發明的方法中的獲取系統服務請求和相關數據的操作的流程圖。圖5是本發明的方法中的代理服務轉化系統服務請求的操作的流程圖。圖6是本發明的採用監控行動裝置應用程式的方法的系統圖。
具體實施例方式本發明提供了一種監控行動裝置應用程式的方法和系統,從而使行動裝置的病毒監控軟體可以通過行動裝置作業系統內核監控應用程式的操作,實現實時監控並充分利用本地資源。根據本發明的一個實施方式,提供了一種監控行動裝置的應用程式的方法。以下的描述結合安卓作業系統平臺的環境,詳細解釋了客戶端軟體如何在安卓系統中監控應用程式的操作。如流程圖1所示,在步驟S101,建立模擬系統服務。模擬系統服務即模擬安卓作業系統中的系統服務,例如:簡訊的系統服務ISms和撥打電話的系統服務ITelephony等。模擬的系統服務包括了原系統服務中的函數,並且具備了特定的函數,以便存儲和轉發請求內容以及調用相應的系統服務。模擬的系統服務在服務管理器(Service Manager)中完成了註冊,並在啟動時激活。在步驟S102,與設備驅動程序中對設備的I/O通道進行管理的函數建立聯繫。在安卓作業系統中,設備驅動程序中對設備的I/O通道進行管理的函數即1ctl函數,與該函數建立聯繫即實時監控該函數的調用。對1ctl函數的調用通常意味著應用程式對於系統服務發送的請求。在步驟S103,截取所述應用程式發送到設備驅動程序中對設備的I/O通道進行管理的函數的數據。根據本發明的一個事實方式,如步驟S304所示,截取應用程式發送的Binder對象,解析出請求數據,該數據被保存在特定緩存地址中。舉例來說,如圖4所示,應用程式發出了發送簡訊的指令,該指令還包含發件號碼、收件號碼和簡訊內容等數據。該數據從應用程式發送至系統層,並且會通過Binder對象調用簡訊系統服務ISms。在系統層,通過讀取Binder對象特定的緩存地址,可獲得Binder指針所對應的系統服務和數據。在步驟S104,根據所截取的數據,將應用程式所請求的系統服務替換為相應的模擬系統服務。如圖4所示,通過將數據中的Binder指針進行替換,就可以截取本應發送至簡訊系統服務ISms的請求,並發送至模擬簡訊系統服務SISms。在步驟S105,記錄模擬系統服務收到的請求並轉發至分析模塊進行分析。如圖2所示的流程詳細描述了分析模塊對應用程式的行為進行分析的過程。在步驟S201,讀取服務請求和讀取用戶資料庫。所讀取的服務請求即圖1中步驟S105中,模擬系統服務收到的請求。用戶資料庫可以是行動裝置本地的資料庫,可以通過應用層程序讀取和檢索;用戶資料庫也可以是伺服器端的資料庫,行動裝置將服務請求數據包通過移動通訊連接,如GPRS、WCDMA或無線區域網路提交給伺服器,由伺服器完成檢索後將結果發回行動裝置。在步驟S202,判斷用戶規則資料庫中,是否有應用程式的操作的規則。如果用戶規則資料庫中沒有該應用程式的操作的規則,在步驟S203,提示用戶選擇允許或禁止該應用程式的該操作。提示的形式可以是在屏幕顯示彈出對話框,並提供選項按鈕供用戶選擇。在步驟S204,接收用戶選擇。如果用戶選擇禁止該操作,在步驟S205,終止分析程序;如果用戶選擇允許該操作,在步驟S206,將執行操作的指令發給模擬系統服務模塊。在步驟S212,判斷用戶是否選擇更新用戶規則。如果用戶選擇更新,在步驟S211,將用戶選擇存儲入用戶規則資料庫;如果用戶選擇不更新,在步驟S205,終止分析程序。在步驟S209,模擬系統服務模塊將應用程式的操作請求發送至相應的系統服務模塊。在步驟S210,系統服務模塊收到應用程式請求的具體操作並執行。當分析模塊在用戶規則資料庫中找到相應的應用程式的操作的規則時,在步驟S207,根據已有用戶規則,判斷該應用程式的操作應允許或禁止。如果判斷的結果是允許,則執行步驟S206的操作;如果判斷的結果是禁止,則在步驟S208,終止分析程序。在步驟S208和步驟S205,由於應用程式發送至Binder驅動設備的請求內容已經被截取並轉換Binder指針至模擬系統服務,請求內容不會被相應的系統服務接收。也可以說,不進行步驟S206和步驟S209的操作,應用程式的操作請求就不會執行,從而實現攔截應用程式的惡意操作,例如:發送扣費簡訊,後臺撥打收費電話號碼等。如圖3所示,監控行動裝置的應用程式的方法始於步驟S301,客戶端程序取得系統操作權限,通過調用系統的su命令向用戶請求獲取root權限,或者主動利用系統相關漏洞破解獲得root權限,從而取得系統操作權限。此外,與圖1中的差別在於,步驟S304,讀取用於系統進程間通信的系統驅動設備(binder內核驅動設備)的數據接收緩存中的數據。如圖4所示,展示了安卓作業系統的系統層處理Java應用程式的請求的過程。Java應用程式將發送簡訊息的請求、電話號碼和內容等發送至系統層,由Binder對象接收並處理應用層的請求。在數據流的處理中經過了幾個轉換過程,例如:(I)從Java虛擬環境(Java Virtual Machine)到Linux系統的C++空間,是通過Java本地調用ENV指令完成對象的映射過程;(2)從C++空間傳入內核Binder設備,使用ProcessState類完成;(3)系統服務從內核中的Binder設備讀取數據。根據本發明的一個實施方式,在上述步驟(2)之後,步驟(3)之前,從Binder設備對應的系統緩存中讀取服務請求,修改服務請求的Binder指針,從而使服務請求在上述步驟(3)之前被中斷,並由模擬的系統服務接收、記錄和轉發。例如:圖4中的簡訊服務請求本應由系統服務ISms接收和處理,通過本發明的操作,服務請求被修改了 Binder指針,從而使模擬系統服務SISms接收到服務請求。上述步驟完成了類似鉤子程序的過程。附圖5詳細展示了模擬系統服務和分析模塊之間的通信過程。如圖所示,模擬簡訊系統服務(SISms)接收到應用程式的簡訊發送請求,將請求相關的數據(數據包名、發件號碼、收件號碼、簡訊內容和權限號碼(例如「O」代表Sms權限))發送至代理服務。代理服務將上述數據轉換為Java程序可見的內容,並發送至分析模塊。如果分析模塊的輸出是「允許」相應的操作,分析模塊將分析結果發送給代理服務。分析結果可包括應用程式的數據包名、請求模擬簡訊服務的請求和分析結果的賦值(例如:允許=1)。該請求也經過從Java虛擬環境到C++空間的轉換,從C++空間注入Binder設備。在Binder設備中的類似鉤子程序不會對任何模擬系統服務相關的請求進行攔截或修改,因為在鉤子替換服務之前,模擬系統服務就已經得到對應的系統服務的Ibinder指針,所以模擬系統服務能夠直接通過該指針找到對應的系統服務,因此,分析結果的指令到達模擬簡訊系統服務。模擬簡訊系統服務讀取分析結果的指令,如果是允許,則直接將該請求通過之前保存的對應簡訊服務的Ibinder指針發送到對應的簡訊系統服務裡。簡訊系統服務接收到發送簡訊息的請求並執行。如圖6所示,監控行動裝置應用程式的系統包括客戶端模塊610。客戶端模塊610包括函數鉤子模塊611、模擬系統服務模塊612、代理服務模塊613、分析模塊614和用戶規則資料庫615,注入模塊616。注入模塊616用於將函數鉤子模塊611,模擬系統服務模塊612,代理服務模塊613,注入到系統進程ServiceManager裡面,並且啟動運行這些服務。主要是在第一次運行程序和系統每次開機的時候完成注入並啟動對應的服務。模擬系統服務模塊612對應於行動裝置作業系統中的系統服務模塊,具有系統服務模塊類似的功能並在系統服務管理器中註冊。函數鉤子模塊611與行動裝置的作業系統內核通信,並與設備驅動程序中對設備的I/O通道進行管理的函數建立聯繫,截取應用程式發送到Binder設備的服務請求和相關數據,根據所截取的數據,將應用程式的請求和相關數據轉發至相應的模擬系統服務模塊。 代理服務模塊613與模擬系統服務模塊612通信,代理服務模塊在系統層服務(安卓作業系統中的Linux環境)和應用層服務(Java虛擬環境)之間溝通,將系統層中的模擬系統服務記錄的請求轉化為應用層可見的請求。分析模塊614與代理服務模塊613和用戶規則資料庫615通信,讀取應用程式請求的操作,並根據用戶規則資料庫615中存儲的規則允許或禁止應用程式的操作。當分析模塊614允許應用程式的操作時,代理服務模塊613將應用層可見的請求和允許的指令轉化為系統層中的模擬系統服務可見的請求,使相應的系統服務模塊執行該請求的操作;當分析模塊614禁止應用程式的操作時,則停止操作。為了說明本發明的目的,不可能在此陳述裝置或方法的每一個組合,但本領域的技術人員會意識到本發明尚可能有許多更進一步的組合和修改。因此,本發明意在涵蓋所有此類的變更、修正及變化,例如,本發明不僅限於簡訊系統服務請求,其他請求形式,如撥打電話或多媒體錄製請求也可以依照本發明的方法實現監控的目的。此外,雖然本發明某個特定的特徵可能依據各種實現方式中的一種而被披露,這個特徵可以與其它實施方式中的其它特徵進行結合。
權利要求
1.一種監控行動裝置應用程式的方法和系統,其特徵在於包括以下步驟: a)建立模擬系統服務; b)與設備驅動程序中對設備的I/O通道進行管理的函數建立聯繫; c)截取所述應用程式發送到設備驅動程序中對設備的I/O通道進行管理的函數的數據; d)根據所截取的數據,將應用程式所請求的系統服務替換為相應的模擬系統服務並且將數據發送到模擬系統服務;以及 e)記錄模擬系統服務收到的請求並轉發至分析模塊進行分析。
2.根據權利要求1所述的監控行動裝置應用程式的方法,所述e)步驟還包括: 在系統層服務和應用層服務之間建立代理服務; 在代理服務中註冊應用服務;以及 將系統層中的模擬系統服務記錄的請求轉化為應用層可見的請求。
3.根據權利要求1所述的監控行動裝置應用程式的方法,所述c)步驟還包括:讀取用於系統進程間通信的系統驅動設備的數據接收緩存中的數據。
4.根據權利要求3所述的監控行動裝置應用程式的方法,所述用於系統進程間通信的系統驅動設備是安卓作業系統中的binder內核驅動設備。
5.根據權利要求2所述的監控行動裝置應用程式的方法,所述分析模塊將應用層可見的請求呈現給用戶,提示用戶選擇允許或禁止該請求的操作。
6.根據權利要求5所述的監控行動裝置應用程式的方法,還包括: 如果用戶選擇允許,將應用層可見的請求和允許的指令轉化為系統層中的模擬系統服務的請求,使相應的系統服務執行該請求的操作; 如果用戶選擇禁止,則停止操作。
7.根據權利要求5所述的監控行動裝置應用程式的方法,還包括: 建立用戶規則資料庫,並將應用程式名稱、操作類型和用戶選擇存入用戶規則資料庫。
8.根據權利要求7所述的監控行動裝置應用程式的方法,還包括: 當分析模塊接收到應用層可見的請求,查詢用戶規則資料庫,根據用戶規則自動允許或禁止所請求的操作。
9.一種監控行動裝置應用程式的系統,包括安裝在行動裝置的客戶端,所述客戶端包括多個模擬系統服務模塊、函數鉤子模塊、代理服務模塊、分析模塊和用戶規則資料庫; 所述模擬系統服務模塊對應於行動裝置作業系統中的系統服務模塊; 所述函數鉤子模塊與行動裝置的作業系統內核通信,並與設備驅動程序中對設備的I/O通道進行管理的函數建立聯繫,截取所述應用程式發送到設備驅動程序中對設備的I/O通道進行管理的函數的數據,根據所截取的數據,將應用程式所請求的系統服務轉發至相應的模擬系統服務模塊; 所述代理服務模塊與模擬系統服務模塊通信,所述代理服務模塊在系統層服務和應用層服務之間溝通,將系統層中的模擬系統服務記錄的請求轉化為應用層可見的請求; 所述分析模塊與代理服務模塊和用戶規則資料庫通信,讀取應用程式請求的操作,並根據用戶規則資料庫中存儲的規則允許或禁止應用程式的操作,或者根據提示用戶之後用戶的選擇允許或者禁止進行對應操作。
10.根據權利要求9的監控行動裝置應用程式的系統,當分析模塊允許應用程式的操作時,所述代理服務模塊將應用層可見的請求和允許或禁止的指令轉化為系統層中的模擬系統服務的請求,模擬系統服務再調用相應的系統服務,使相應的系統服務執行該請求的操作; 當分析模塊禁止應用程式的操作時,則停止操作,不再將該請求轉發給對應的系統服務進行處理,從而實 現攔截該請求。
全文摘要
本發明提供一種監控安卓作業系統中的應用程式的方法和系統。該方法包括建立模擬系統服務,與設備驅動程序中對設備的I/O通道進行管理的函數建立聯繫,截取所述應用程式發送到設備驅動程序中對設備的I/O通道進行管理的函數的數據,根據所截取的數據,將應用程式所請求的系統服務替換為相應的模擬系統服務,記錄模擬系統服務收到的請求並轉發至分析模塊進行分析。本發明的有益效果在於所截取的系統請求都是在系統的Binder通信傳輸過程中截取,利用模擬的系統層服務分析安卓作業系統中的應用程式的行為特徵,相比較其他的API攔截技術,用該方法和系統,不幹擾應用程式的正常運行。
文檔編號H04W24/00GK103108320SQ201110360808
公開日2013年5月15日 申請日期2011年11月15日 優先權日2011年11月15日
發明者曾陽, 施華國, 楊威, 林宇, 鄒仕洪 申請人:網秦無限(北京)科技有限公司