亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種適用于Android系統(tǒng)的軟件保護(hù)方法及系統(tǒng)的制作方法

文檔序號:6427559閱讀:390來源:國知局
專利名稱:一種適用于Android系統(tǒng)的軟件保護(hù)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明主要涉及到適用于Android(商標(biāo))平臺(系統(tǒng))的應(yīng)用軟件保護(hù)技術(shù),尤其涉及防止惡意反編譯開發(fā)者通過反編譯來盜用Android系統(tǒng)的APK應(yīng)用軟件。
背景技術(shù)
隨著信息技術(shù)的不斷發(fā)展,尤其是近來各種智能終端的快速增長,對各種應(yīng)用軟件的可移植性或跨平臺性能的要求越來越高。由此,例如java語言、perl語言、php語言等不將程序代碼編譯為二進(jìn)制碼可執(zhí)行程序的編程語言的應(yīng)用越來越廣泛。這種不將程序代碼編譯為二進(jìn)制碼可執(zhí)行程序的編程語言具有解釋執(zhí)行、跨平臺等特性,尤其是其跨平臺性,使開發(fā)人員擺脫了機(jī)器的束縛,可實(shí)現(xiàn)“一次編譯,到處運(yùn)行”。 然而,正是由于利用這種編程語言編寫的程序在運(yùn)行時(shí)直接以程序語言代碼或中間代碼表示,這就導(dǎo)致采用非編譯型編程語言編寫的程序源代碼容易被竊取。以Android平臺所使用的主流編程語言Java為例,采用Java語言編寫的程序在運(yùn)行前雖然需要經(jīng)過編譯,但并不會直接被編譯成(二進(jìn)制的)機(jī)器語言,而是編譯成java 字節(jié)碼后,再通過Java虛擬機(jī)解釋執(zhí)行。更具體地,Java字節(jié)碼文件是將采用Java語言編寫的程序代碼進(jìn)行編譯后產(chǎn)生的中間文件。它往往與Java虛擬機(jī)一起出現(xiàn),是實(shí)現(xiàn)平臺無關(guān)性的要素之一。因而,如何防止采用Java語言編寫的程序被竊取的問題,則轉(zhuǎn)化為如何更好地對Java字節(jié)碼文件進(jìn)行保護(hù)(加密)的問題。當(dāng)前,Java編程語言工具并未對 Java字節(jié)碼采取有效保護(hù)措施。加之,Java字節(jié)碼文件的結(jié)構(gòu)本身的特點(diǎn)使其易于被反編譯,源碼易被竊取,故存在Java源碼的安全問題。針對Java字節(jié)碼的特點(diǎn),出現(xiàn)了以下幾種方法來保護(hù)Java字節(jié)碼1.字節(jié)混淆技術(shù);2.數(shù)字水印技術(shù)等。但是,這些方法都不能很好的保護(hù)Java字節(jié)碼。字節(jié)碼混淆并不能完全防止反編譯,只是增加了反編譯后代碼閱讀的難度;而數(shù)字水印只能保證版權(quán),并不能保證代碼遭反編譯后被其它開發(fā)者利用。然而,Android系統(tǒng)又采用了不同于傳統(tǒng)虛擬機(jī)的Dalvik虛擬機(jī)。Dalvik基于寄存器實(shí)現(xiàn),縮減了 Java虛擬機(jī)的指令集。在Dalvik平臺,Java應(yīng)用程序被編譯生成DEX文件,并載入運(yùn)行。DEX文件格式如附圖1所示。Java字節(jié)碼文件壓縮為DEX文件的格式如附圖2所示.由此可見,傳統(tǒng)的保護(hù)Java字節(jié)碼的方法,很難應(yīng)用于Android應(yīng)用軟件的版權(quán)保護(hù)中,而且傳統(tǒng)的Java字節(jié)碼保護(hù)方法,并沒起到良好的保護(hù)效果。目前,谷歌(商標(biāo))用來向用戶提供適用于Android系統(tǒng)的應(yīng)用軟件(簡稱 Android應(yīng)用軟件)的商店提供了如下軟件保護(hù)相關(guān)措施(I)Google (商標(biāo))建立了一個(gè)特別的授權(quán)服務(wù)器,它保留了 Android用戶申請購買應(yīng)用的紀(jì)錄;(2)開發(fā)人員可以利用Google提供的API來編寫應(yīng)用程序中的相關(guān)代碼,從而實(shí)現(xiàn)當(dāng)應(yīng)用程序啟動時(shí),應(yīng)用程序自動查詢授權(quán)服務(wù)器;
3
(3)授權(quán)服務(wù)器然后告訴應(yīng)用程序該用戶是否具有使用該應(yīng)用程序的權(quán)利。但是,從以上版權(quán)保護(hù)措施中,本發(fā)明的發(fā)明人注意到,谷歌并未對通過反編譯 Android應(yīng)用軟件來盜用源代碼的行為提供防范。換而言之,上述措施并不能對于抄襲和克隆代碼的行為無法防范,因此,實(shí)際上并不能很好地起到保護(hù)應(yīng)用軟件的知識產(chǎn)權(quán)的作用。綜上,迫切需要找到一種能夠有效保護(hù)Android應(yīng)用軟件的方法,以更好地有效保護(hù)Android應(yīng)用軟件開發(fā)者的知識產(chǎn)權(quán)。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是需要提供一種適用于Android系統(tǒng)的能夠有效防止惡意反編譯開發(fā)者通過反編譯來盜用Android應(yīng)用軟件源代碼的方法及其系統(tǒng)。為了解決上述技術(shù)問題,本發(fā)明提供了一種適用于Android系統(tǒng)的軟件保護(hù)方法,其中,包括解析步驟,從待加密的Android應(yīng)用軟件的APK文件中解析出DEX文件;加密步驟,對所述DEX文件的全部或部分信息進(jìn)行加密,生成加密后的DEX文件;生成步驟,將所述加密后的DEX文件替換加密前的所述DEX文件,生成對所述DEX 文件的全部或部分信息進(jìn)行了加密的APK文件和對密鑰進(jìn)行MD5加密的摘要文件。其中,所述加密步驟中,僅對所述DEX文件的文件頭或DEX文件中的字節(jié)碼進(jìn)行密碼。其中,根據(jù)用戶各自的用戶信息來生成密鑰,所述密鑰用于對提供給各用戶的APK 文件中的DEX文件的全部或部分信息進(jìn)行加密。 其中,所述生成步驟中,所述密鑰信息為根據(jù)對APK文件中的DEX文件的全部或部分信息進(jìn)行加密的密鑰生成的MD5摘要文件。根據(jù)本發(fā)明的另一方面,還提供了一種適用于Android系統(tǒng)的軟件保護(hù)系統(tǒng),包括服務(wù)器和客戶端,其中,所述服務(wù)器執(zhí)行上述任一項(xiàng)所述的軟件保護(hù)方法、并向所述客戶端傳送加密后的 APK文件;所述客戶端接收服務(wù)器發(fā)來的加密后的APK文件并對所述加密后的APK文件進(jìn)行解密,生成解密后的AI3K文件,其中,所述客戶端是支持Android系統(tǒng)的客戶端。其中,所述客戶端還通過網(wǎng)絡(luò)傳送方式獲取用于對加密后APK文件進(jìn)行解密的解 S S朗fn息。其中,所述客戶端還通過將所述解密密鑰信息與所述解壓后的APK文件中的密鑰摘要信息進(jìn)行對比以此判斷是否繼續(xù)進(jìn)行解密。其中,所述客戶端通過調(diào)用連接庫的方式來進(jìn)行解密,所述連接庫用于實(shí)現(xiàn)解密時(shí)所用到的全部或部分算法。其中,所述客戶端根據(jù)所述解密后的APK文件來執(zhí)行APK安裝,然后刪除所述解密后的APK文件。與現(xiàn)有技術(shù)相比,本發(fā)明至少具有以下優(yōu)點(diǎn)相對于目前一些主要的Android應(yīng)用軟件商店提供的版權(quán)保護(hù)措施,該方案不僅
4能保護(hù)Android應(yīng)用軟件的版權(quán),還能對Android源代碼起到很好的保護(hù)作用。此外,由于該方案通過只針對APK文件中的DEX文件的關(guān)鍵信息(例如DEX文件頭、DEX文件中的字節(jié)碼等)的加密保護(hù),大大提高了加密和解密的執(zhí)行效率。在一個(gè)實(shí)施例中,優(yōu)選地采用了 Android支持的JNI技術(shù)將實(shí)現(xiàn)該解密過程所使用的解密算法或算法中的部分,這樣,可以進(jìn)一步加強(qiáng)對APK應(yīng)用軟件版權(quán)的保護(hù)強(qiáng)度。在一個(gè)實(shí)施例中,將密鑰轉(zhuǎn)變?yōu)榱?MD5文件,這也可以進(jìn)一步防止當(dāng)密鑰下載到客戶端后被盜取。在一個(gè)實(shí)施例中,根據(jù)各用戶的各自用戶信息動態(tài)生成(唯一的)各自的密鑰,從而可以盡量避免不同的用戶采用同一密鑰來解密APK文件(應(yīng)用軟件)。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述;此外,該發(fā)明的優(yōu)點(diǎn)還可以通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。此外,本發(fā)明所提供一整套Android應(yīng)用軟件保護(hù)措施,還可應(yīng)用于Android應(yīng)用軟件商城平臺上。利用該保護(hù)措施,可以為應(yīng)用軟件商城,提供一套解決方案,可以很好的解決保護(hù)第三方開發(fā)者提交的應(yīng)用軟件的版權(quán)。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地通過學(xué)習(xí)說明書中的內(nèi)容而變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。


附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中圖1為Android系統(tǒng)的Dalvik平臺編譯生成的DEX文件的格式示意圖。圖2為利用Java字節(jié)碼文件生成DDC文件的示意圖。圖3為根據(jù)第一實(shí)施例的適用于Android系統(tǒng)的軟件保護(hù)方法的流程示意圖。圖4示出在根據(jù)第二實(shí)施例的適用于Android系統(tǒng)的軟件保護(hù)系統(tǒng)中、加密后的 APK應(yīng)用文件如何在客戶端解密和安裝的流程示意圖。
具體實(shí)施例方式以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合, 所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。第一實(shí)施例在本發(fā)明的這一優(yōu)選實(shí)施例中,通過對Android應(yīng)用軟件(APK文件)中的DEX文件中的關(guān)鍵信息進(jìn)行加密,從而達(dá)到保護(hù)開發(fā)者源代碼信息和相應(yīng)版權(quán)的作用。更具體地,發(fā)明人注意到由于DEX文件由Java字節(jié)碼文件合并生成,而在DEX文件的頭部,包含著所合并Java類的全部信息,包括每個(gè)類的地址和描述信息、方法和字段以及所有字符串的地址信息等。通過頭文件的信息,可以按照特定的格式去解析該DEX文件,從而解析出每個(gè)類以及其包含的方法和字段的信息。由于,發(fā)明人發(fā)現(xiàn)可以利用這一特點(diǎn),僅對DEX文件的頭部進(jìn)行加密,在沒有該部分信息的引導(dǎo),Android的Dalvik虛擬機(jī)便無法識別該DEX文件,反編譯軟件也不可能正確解析該DEX文件。換而言之,發(fā)明人提出了只要能夠保護(hù)好DEX文件的頭文件信息或者說DEX文件關(guān)鍵部分的信息、就可以很好地保護(hù)Android應(yīng)用程序源代碼的構(gòu)思,進(jìn)而基礎(chǔ)這一構(gòu)思, 提供了一種通過對DEX文件的關(guān)鍵信息加以保護(hù)來提供一套加密和解密使用的技術(shù)方案。圖3示出了根據(jù)本實(shí)施例的Android系統(tǒng)的軟件保護(hù)方法的流程示意圖。下面參考圖3來說明本方法的各步驟。步驟310,從待加密的Android應(yīng)用軟件的APK文件中解析出DEX文件。更具體地,可以輸入待加密的Android應(yīng)用軟件(APK文件)。創(chuàng)建APK文件解壓縮的臨時(shí)目錄,并解壓APK文件到臨時(shí)目錄。在該步驟中,若使用編程實(shí)現(xiàn)自動化創(chuàng)建臨時(shí)目錄時(shí),可能出現(xiàn)臨時(shí)目錄創(chuàng)建失敗等意外情況,此時(shí)系統(tǒng)應(yīng)該能破壞該異常。步驟320,對步驟310中解析出來的DEX文件的全部或部分信息進(jìn)行加密以生成加密后的DEX文件。在對DEX文件進(jìn)行加密時(shí),既可以對DEX文件全部信息進(jìn)行加密,也可以僅對DEX 文件中的部分關(guān)鍵信息的進(jìn)行加密。優(yōu)選地,可以僅對DEX文件頭進(jìn)行塊加密,或僅對DEX文件中的字節(jié)碼加密等。加密內(nèi)容的選取,可以根據(jù)實(shí)際情況而定。例如,若DEX文件過大,則可僅對關(guān)鍵信息(例如 DEX文件頭、DEX文件中的字節(jié)碼等)的加密技術(shù),從而能夠達(dá)到更高的執(zhí)行效率的有益技術(shù)效果。需要說明的是,步驟002中,可通過各種方式來獲取用以進(jìn)行加密的密鑰(簡稱 加密密鑰)。例如,可以通過生成的方式獲取,也可以通過輸入的方式獲取。如果本方法應(yīng)用在服務(wù)器端,如應(yīng)用軟件商店的服務(wù)器。優(yōu)選地,根據(jù)各用戶各自的用戶信息來生成用于對提供給各用戶的APK文件進(jìn)行加密的密鑰,更具體地,可針對各用戶,根據(jù)各該用戶的各自用戶信息動態(tài)生成(唯一的)各自的密鑰,然后根據(jù)這些密鑰來為各用戶加密生成與各用戶對應(yīng)的加密文件。用戶用戶可以為與用戶有關(guān)的所有信息、例如身份信息、登錄帳號等。然后,可將該密鑰存放至對應(yīng)該用戶下載信息相關(guān)的表里。待用戶解密安裝該軟件時(shí), 可通過聯(lián)網(wǎng)方式來動態(tài)獲取該密鑰。這樣,可使得對應(yīng)不同的合法用戶,所下載的APK文件是通過不同的密鑰進(jìn)行加密后的加密文件,可以盡量避免不同的用戶采用同一密鑰來解密 APK文件(應(yīng)用軟件)。步驟330,將加密后的DEX文件替換加密前的DEX文件,生成對所述DEX文件的全部或部分信息進(jìn)行了加密的(新的)APK文件和對密鑰進(jìn)行MD5加密的摘要文件。密鑰信息可以為密鑰本身,但是優(yōu)選地,根據(jù)加密密鑰生成MD5摘要文件key. dat,該文件保存至AI3K解壓縮目錄的META-INF目錄下。以在生成加密后的APK文件時(shí),在加密后的APK文件中增加該摘要文件key. dat。需要說明的是,由于加密密鑰的強(qiáng)度可能較弱,系統(tǒng)可以在密鑰后面加一些特殊字符后再生成MD5摘要文件。如所有密鑰末尾加上“*$#”字符串后,對密鑰123456生成的密鑰MD5摘要文件其實(shí)是123456*$#的MD5摘要,這樣就增加了密鑰MD5摘要被暴力破解的難度。更具體地,可通過將上述操作中解壓縮后的目錄重新打包生成來生成新的APK文件。需要說明的是,在實(shí)現(xiàn)重新打包生成新的APK文件時(shí),并不需要對APK文件重新簽名。此外,在對解壓縮后的目錄進(jìn)行重新打包以生成新的APK文件之前,可先將原APK 文件備份成其它名字,也可直接刪掉,這樣可以保證新生成的AH(文件時(shí)可以將新的AH(文件直接命名成原APK文件的名字。第二實(shí)施例下面結(jié)合圖4進(jìn)一步說明本發(fā)明的第二實(shí)施例。本實(shí)施例提供了一種適用于 Android系統(tǒng)的軟件保護(hù)系統(tǒng)。本系統(tǒng)包括服務(wù)器和客戶端。服務(wù)器執(zhí)行第一實(shí)施例的所述軟件保護(hù)方法、并向客戶端傳送加密后的AH(文件。客戶端(亦稱終端)用于接收服務(wù)器發(fā)來的加密后的APK 文件并對其進(jìn)行解密。前述客戶端是支持Android系統(tǒng)的客戶端,簡稱Android客戶端。下面具體說明本實(shí)施例的系統(tǒng)對加密后的AI3K軟件,Android客戶端或者Android 系統(tǒng)終端,如何安裝加密APK的過程。此外,本實(shí)例,還公開了一種對加密后的AH(軟件進(jìn)行解密并安裝的系統(tǒng)。首先說明,本方案中將為客戶端提供一套基于圖4所示解密和安裝流程的客戶端安裝軟件,該軟件可以通過接受客戶端輸入解密密鑰,或通過該軟件登錄相應(yīng)的網(wǎng)站,如應(yīng)用軟件商店,系統(tǒng)通過聯(lián)網(wǎng)方式自動獲取。通過聯(lián)網(wǎng)方式獲取需要用戶在該應(yīng)用軟件商店注冊并獲得授權(quán)下載過相應(yīng)的APK文件,同時(shí)最佳的實(shí)施方案是安裝用戶無法看到該密鑰,以免用戶獲取密鑰后進(jìn)行非法傳播。下面將結(jié)合附圖4,說明客戶端解密并安裝加密后的AH(軟件的過程的一個(gè)示例。步驟110,系統(tǒng)根據(jù)用戶輸入的AH(文件路徑或者通過文件瀏覽器的方式選取需要安裝的加密APK文件。步驟111,客戶端接受用戶輸入的密鑰(解密密鑰),優(yōu)選地,客戶端通過將所述解密密鑰與加密后的AH(文件中的密鑰信息進(jìn)行對比以判斷是否進(jìn)行解密,更具體地,接收用戶手動輸入的解密密鑰并將解密密鑰進(jìn)行MD5加密,或通過網(wǎng)絡(luò)傳送方式直接獲取經(jīng) MD5加密后的用于解密加密后APK文件的解密密鑰信息。然后將基于網(wǎng)絡(luò)或輸入方式獲得的解密密鑰信息與APK目錄下的META-INF目錄下的key. dat文件內(nèi)容進(jìn)行對比,如果對比一致,就認(rèn)為該用戶輸入/獲取的解密密鑰是正確的。否則,系統(tǒng)會彈出對話框,提示用戶密鑰不正確。需要說明的是,如果系統(tǒng)是聯(lián)網(wǎng)獲取密鑰,如果通過客戶端用戶信息獲取不到該 APK的解密密鑰,則說明用戶并未合法下載該APK,則提示用戶要合法下載該應(yīng)用。步驟112,如果步驟111得以正確執(zhí)行,系統(tǒng)將該AI3K解壓至一個(gè)臨時(shí)目錄。步驟113,系統(tǒng)根據(jù)輸入的密鑰,對APK解壓目錄中的DEX文件執(zhí)行解密,生成解密后的APK文件。特別地,發(fā)明人注意到由于該解密過程是在客戶端實(shí)現(xiàn)的,該解密安裝軟件是APK 格式的安裝軟件,也存在被反編譯的風(fēng)險(xiǎn),因此,優(yōu)選地采用,Android支持的JNI技術(shù)將實(shí)現(xiàn)該解密過程所使用的解密算法或算法中的部分,以將全部或部分用于解密的核心算法編譯成鏈接庫文件,在執(zhí)行解密應(yīng)用軟件的過程中,由解密應(yīng)用軟件對連接庫文件進(jìn)行調(diào)用, 簡而言之,優(yōu)選為客戶端通過調(diào)用用于實(shí)現(xiàn)解密時(shí)所用到的全部或部分算法的連接庫的方式來進(jìn)行解密。這樣,可以進(jìn)一步加強(qiáng)對AH(應(yīng)用軟件版權(quán)的保護(hù)強(qiáng)度。此外,還需要說明的是,如何解密,要根據(jù)第一實(shí)施例使用的加密方案有關(guān)。例如, 如果第一實(shí)施例中對DEX文件的加密使用的是對DEX文件的關(guān)鍵信息加密,則解密過程中, 就使用對應(yīng)的解密技術(shù)對DEX文件的關(guān)鍵信息解密。步驟114,刪除加密時(shí)產(chǎn)生的密鑰MD5摘要文件。這樣可以保證重新打包AI3K軟件能正確安裝。步驟115,重新打包生成新的APK文件,打包完成后,刪除臨時(shí)目錄及下面的所有文件。步驟116,調(diào)用系統(tǒng)API執(zhí)行APK的安裝,安裝完成后刪除解密后的APK文件。需要說明的是,安裝完成后,優(yōu)選為刪除該解密后的AH(文件。這樣,可以避免該解密后的APK文件傳播出去,從而進(jìn)一步加強(qiáng)對軟件的版權(quán)保護(hù)。Android系統(tǒng)提供了 API接口可以用來開發(fā)APK安裝軟件。使用方法如下Intent intent = new Intent(Intent. ACTI0N_VIEff);intent.SetDataAndType(Uri. parse(apkPath)," application/vnd. andro i dpackage-archive");startActivity(intent);上述示例代碼中apkPath為變量,指代APK文件的路徑。本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。此外,該方案不僅可以應(yīng)用于Android應(yīng)用軟件商店,還可以應(yīng)用于普通開發(fā)者的軟件版權(quán)和知識產(chǎn)權(quán)保護(hù)中。
權(quán)利要求
1.一種適用于Android系統(tǒng)的軟件保護(hù)方法,其特征在于,包括解析步驟,從待加密的Android應(yīng)用軟件的APK文件中解析出DEX文件; 加密步驟,對所述DEX文件的全部或部分信息進(jìn)行加密,生成加密后的DEX文件; 生成步驟,將所述加密后的DEX文件替換加密前的所述DEX文件,生成對所述DEX文件的全部或部分信息進(jìn)行了加密的APK文件和對密鑰進(jìn)行MD5加密的摘要文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述加密步驟中,僅對所述DEX文件的文件頭或DEX文件中的字節(jié)碼進(jìn)行密碼。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)用戶各自的用戶信息來生成密鑰,所述密鑰用于對提供給各用戶的APK文件中的 DEX文件的全部或部分信息進(jìn)行加密。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述生成步驟中,所述密鑰信息為根據(jù)對APK文件中的DEX文件的全部或部分信息進(jìn)行加密的密鑰生成的MD5摘要文件。
5.一種適用于Android系統(tǒng)的軟件保護(hù)系統(tǒng),包括服務(wù)器和客戶端,其特征在于,所述服務(wù)器執(zhí)行根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的軟件保護(hù)方法、并向所述客戶端傳送加密后的AH(文件;所述客戶端接收服務(wù)器發(fā)來的加密后的APK文件并對所述加密后的APK文件進(jìn)行解密,生成解密后的APK文件,其中,所述客戶端是支持Android系統(tǒng)的客戶端。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述客戶端還通過網(wǎng)絡(luò)傳送方式獲取用于對加密后APK文件進(jìn)行解密的解密密鑰信息。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述客戶端還通過將所述解密密鑰信息與所述解壓后的APK文件中的密鑰摘要信息進(jìn)行對比以此判斷是否繼續(xù)進(jìn)行解密。
8.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述客戶端通過調(diào)用連接庫的方式來進(jìn)行解密,所述連接庫用于實(shí)現(xiàn)解密時(shí)所用到的全部或部分算法。
9.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述客戶端根據(jù)所述解密后的APK文件來執(zhí)行APK安裝,然后刪除所述解密后的APK 文件。
全文摘要
本發(fā)明公開了一種適用于Android系統(tǒng)的軟件保護(hù)方法及系統(tǒng)。該方法包括解析步驟,從待加密的Android應(yīng)用軟件的APK文件中解析出DEX文件;加密步驟,對所述DEX文件的全部或部分信息進(jìn)行加密,生成加密后的DEX文件;生成步驟,將所述加密后的DEX文件替換加密前的所述DEX文件,生成對所述DEX文件的全部或部分信息進(jìn)行了加密的APK文件和對密鑰進(jìn)行MD5加密的摘要文件。由于該方法通過只針對APK文件中的DEX文件的關(guān)鍵信息(例如DEX文件頭、DEX文件中的字節(jié)碼等)的加密保護(hù),從而大大提高了加密和解密的執(zhí)行效率。
文檔編號G06F21/00GK102236757SQ201110180829
公開日2011年11月9日 申請日期2011年6月30日 優(yōu)先權(quán)日2011年6月30日
發(fā)明者劉建培, 卞佳麗, 張曉杰, 范登科, 鄺堅(jiān) 申請人:北京郵電大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1