[發明專利]一種提高安卓系統中應用程序保護強度的方法有效
| 申請號: | 201210263550.3 | 申請日: | 2012-07-28 |
| 公開(公告)號: | CN102831342A | 公開(公告)日: | 2012-12-19 |
| 發明(設計)人: | 不公告發明人 | 申請(專利權)人: | 北京深思洛克軟件技術股份有限公司 |
| 主分類號: | G06F21/00 | 分類號: | G06F21/00 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100086 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 提高 系統 應用程序 保護 強度 方法 | ||
技術領域
本發明涉及軟件版權保護技術,特別涉及一種用于安卓系統的應用軟件版權保護方法。
背景技術
Dalvik是Google公司自己設計用于Android平臺的Java虛擬機。Dalvik虛擬機是Google等廠商合作開發的Android移動設備平臺的核心組成部分之一。它可以支持已轉換為?.dex(即Dalvik?Executable)格式的Java應用程序的運行,.dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。Dalvik?經過優化,允許在有限的內存中同時運行多個虛擬機的實例,并且每一個Dalvik?應用作為一個獨立的Linux?進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。
Google于2007年底正式發布了Android?SDK,?作為?Android系統的重要特性,Dalvik虛擬機也第一次進入了人們的視野。每一個Android(安卓系統)應用程序在底層都會對應一個獨立的Dalvik虛擬機實例,其代碼在虛擬機的解釋下得以執行。每一個Android應用都運行在一個Dalvik虛擬機實例里,而每一個虛擬機實例都是一個獨立的進程空間。虛擬機的線程機制、內存分配和管理等等都是依賴底層操作系統而實現的。所有Android應用程序的線程都對應一個Linux線程,虛擬機因而可以更多的依賴操作系統的線程調度和管理機制。安卓(Android)系統使用Dalvik?虛擬機運行應用代碼,這可以保證安卓應用在不同手機廠商硬件平臺上的一致性,然而,由于Dalvik虛擬機屬于開放源代碼產品,虛擬機的實現代碼是公開的,其指令集也屬于典型的中間語言,因此基于Dalvik的應用程序可以很容易反編譯為可讀性非常好的源代碼。即使是對逆向工程不太熟悉的黑客也能很輕易的研究和修改安卓應用程序,這對于應用軟件的保護是非常不利的。
微軟公司用于保護.NET平臺產品的SLP(Software?License?and?Protection)技術使用了一種基于虛擬機的軟件保護方法。在普通的.NET平臺IL中間語言的虛擬機之外,再提供一個稱為安全虛擬機(Secure?Virtual?Machine)的新虛擬機,實施保護方案時,將受保護應用程序的部分指令通過置換算法轉換為新虛擬機的指令,同時將原始應用程序中被轉換的這部分指令替換為對新虛擬機的調用指令,由于所述安全虛擬機架構和指令集并不公開,由安全虛擬機指令逆向還原出源代碼的難度大大增加,從而提高了安全強度。盡管安全虛擬機技術對于保護中間語言類型的應用軟件具有非常顯著的效果,但是SLP技術還存在著調用點易于被發現、通信過程易于被模擬等問題,當前這些問題是通過混淆器解決的,但是效果不佳。
除了上述問題之外,安卓系統的運行環境和微軟公司的.NET平臺還存在很多不同之處,因此對于安卓平臺上的應用程序的保護而言,現在還并沒有較為合適的保護方法。
發明內容
有鑒于此,本發明提供了一種保護安卓系統應用軟件的方法,所述方法包括如下步驟:
創建安全虛擬機,所述安全虛擬機用于執行對應于所述應用程序中第一程序代碼指令的第二程序代碼指令;
創建由Dalvik虛擬機執行的第一程序代碼指令與由所述安全虛擬機執行的所述第二程序代碼指令的映射表;
根據所述映射表將所述應用程序中的所述第一程序代碼指令轉換為所述第二程序代碼指令;
將所述第一程序代碼指令從所述應用程序中刪除,并將所述應用程序中調用所述已刪除的所述第一程序代碼指令的調用方式更改為本地調用方式;
創建本地調用接口;
當需要執行所述應用程序中第一程序代碼指令時,Dalvik虛擬機執行所述本地調用接口;
所述本地調用接口調用所述安全虛擬機,由所述安全虛擬機執行所述第二程序代碼指令。
根據本發明的一個方面,在所述安全虛擬機中執行所述應用程序中的部分功能代碼,所述安全虛擬機具有安全保護功能。
根據本發明的一個方面,所述安全虛擬機具有花指令功能、或動態指令功能、或反跟蹤功能之類的安全保護功能。
根據本發明的一個方面,在根據所述映射表將所述第一程序代碼指令轉換為所述第二程序代碼指令的過程中,所述轉換過程由指令自動轉換單元根據映射表自動進行轉換,或者手動轉換。
根據本發明的一個方面,根據所述調用方式的類型,創建所述本地調用接口。
根據本發明的一個方面,提供一種提高安卓系統中應用程序保護強度的系統,所述系統包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京深思洛克軟件技術股份有限公司,未經北京深思洛克軟件技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210263550.3/2.html,轉載請聲明來源鉆瓜專利網。





