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

一種安卓SO文件的保護方法及裝置與流程

文檔序號:11292193閱讀:298來源:國知局
一種安卓SO文件的保護方法及裝置與流程

本發(fā)明涉及計算機技術領域,尤其涉及一種安卓(andriod)so文件的保護方法及裝置。



背景技術:

隨著移動設備的日益普及,移動應用產(chǎn)業(yè)尤其是andriod應用得到飛速的發(fā)展,相應的,其開發(fā)模式和代碼框架也都發(fā)生了巨大的變化。由于程序的功能日益豐富,為了節(jié)約開發(fā)時間,模塊化開發(fā)已經(jīng)成為一種開發(fā)趨勢,且android系統(tǒng)也提供獨立模塊的文件以及獨立模塊的加載和使用方式。

獨立的模塊文件稱為so文件,該文件可以使用c或者c++語言開發(fā)。模塊開發(fā)者為了保障程序的可用性和易用性,往往會將so文件的接口設計的更為簡潔和好用。在android程序發(fā)布時,獨立的so文件會隨之一同發(fā)布到用戶的終端中,任何人就可以輕易的獲取到所有的so文件,并且通過分析輕易的獲取so文件的所有接口,從而可以將該so文件使用到自己的android程序中,以盜取該so文件程序開發(fā)廠商的研發(fā)成果。目前,急需一種so文件的保護方法,來防止其他人員直接盜用廠商辛苦開發(fā)出的so文件。

可見,現(xiàn)有技術中so文件容易被輕易獲取和盜用,存在安全性低的技術問題。



技術實現(xiàn)要素:

本發(fā)明提供一種安卓so文件的保護方法及裝置,用以解決現(xiàn)有技術中so文件容易被輕易獲取和盜用,存在的安全性低的技術問題。

一方面,本發(fā)明提供了一種安卓so文件的保護方法,包括:

當應用程序加載so文件時,獲取所述so文件運行的環(huán)境信息,其中,所述so文件為加密文件;

對所述環(huán)境信息進行加密;

發(fā)送加密后的所述環(huán)境信息至服務器;

當接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,基于所述密鑰,解密并調(diào)用所述so文件。

可選的,所述so文件中加密的數(shù)據(jù)包括:常量數(shù)據(jù)和/或表格數(shù)據(jù)。

可選的,所述獲取所述應用程序中so文件運行的環(huán)境信息,包括:調(diào)用so文件的初始化函數(shù);基于所述初始化函數(shù),獲取所述so文件的運行的環(huán)境信息,所述環(huán)境信息包括以下任意一種或多種的組合:所述so文件的加載內(nèi)存地址范圍、當前內(nèi)存段的權限或所述so文件的路徑名稱。

可選的,所述對所述環(huán)境信息進行加密,包括:獲取所述應用程序的程序包名稱;基于所述程序包名稱,對所述環(huán)境信息進行加密。

可選的,所述基于所述程序包名稱,對所述環(huán)境信息進行加密,包括:計算所述程序包名稱的md5值;基于所述md5值,對所述環(huán)境信息進行加密。

可選的,在所述發(fā)送加密后的所述環(huán)境信息至服務器后,還包括:當沒有接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,退出對所述so文件的調(diào)用。

另一方面,提供一種安卓so文件的保護方法,包括:

接收客戶端發(fā)送的加密后的環(huán)境信息,其中,所述環(huán)境信息用于表征應用程序加載的so文件的運行環(huán)境;

判斷所述加密后的環(huán)境信息是否符合預設要求;

當所述加密后的環(huán)境信息符合預設要求時,發(fā)送密鑰至所述客戶端,以使所述客戶端能基于所述密鑰,解密并調(diào)用所述so文件。

可選的,所述判斷所述加密后的環(huán)境信息是否符合預設要求,包括以下任意一種或多種的組合:判斷是否能通過預設應用程序的程序包名稱,對所述加密后的環(huán)境信息進行解密;或者判斷所述環(huán)境信息中表征的so文件的類型是否滿足預設類型要求;或者判斷所述環(huán)境信息中表征的so文件的參數(shù)是否滿足預設參數(shù)要求。

再一方面,提供一種安卓so文件的保護裝置,所述裝置為客戶端,包括:

獲取模塊,用于當應用程序加載so文件時,獲取所述so文件運行的環(huán)境信息,其中,所述so文件為加密文件;

加密模塊,用于對所述環(huán)境信息進行加密;

第一發(fā)送模塊,用于發(fā)送加密后的所述環(huán)境信息至服務器;

解密模塊,用于當接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,基于所述密鑰,解密并調(diào)用所述so文件。

再一方面,提供一種安卓so文件的保護裝置,所述裝置為服務器,包括:

接收模塊,用于接收客戶端發(fā)送的加密后的環(huán)境信息,其中,所述環(huán)境信息用于表征應用程序加載的so文件的運行環(huán)境;

判斷模塊,用于判斷所述加密后的環(huán)境信息是否符合預設要求;

第二發(fā)送模塊,用于當所述加密后的環(huán)境信息符合預設要求時,發(fā)送密鑰至所述客戶端,以使所述客戶端能基于所述密鑰,解密并調(diào)用所述so文件。

本發(fā)明實施例中提供的一個或多個技術方案,至少具有如下技術效果或優(yōu)點:

本申請實施例提供的方法及裝置,預先對so文件進行加密,并設置在客戶端的應用程序加載so文件時,需要先獲取所述so文件運行的環(huán)境信息,并將加密后的所述環(huán)境信息發(fā)送至服務器,以供服務器根據(jù)所述環(huán)境信息來判斷是否允許所述應用程序調(diào)用該so文件,只有收到服務器返回的密鑰后,客戶端才能根據(jù)密鑰解密并調(diào)用所述so文件,以避免了不符合要求的應用程序對so文件的盜用,有效提高了so文件的安全性。

上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實施例中安卓so文件的保護方法的流程圖一;

圖2為本發(fā)明實施例中安卓so文件的保護方法的流程圖二;

圖3為本發(fā)明實施例中安卓so文件的保護裝置的結構示意圖一;

圖4為本發(fā)明實施例中安卓so文件的保護裝置的結構示意圖二。

具體實施方式

本申請實施例通過提供一種安卓so文件的保護方法及裝置,用以解決現(xiàn)有技術中so文件容易被輕易獲取和盜用,存在的安全性低的技術問題。實現(xiàn)了提高so文件的安全性的技術效果。

本申請實施例中的技術方案,總體思路如下:

當應用程序加載so文件時,獲取所述so文件運行的環(huán)境信息,其中,所述so文件為加密文件;對所述環(huán)境信息進行加密;發(fā)送加密后的所述環(huán)境信息至服務器;當接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,基于所述密鑰,解密并調(diào)用所述so文件。

上述方法通過預先對so文件進行加密,并設置在客戶端的應用程序加載so文件時,需要先獲取所述so文件運行的環(huán)境信息,并將加密后的所述環(huán)境信息發(fā)送至服務器,以供服務器根據(jù)所述環(huán)境信息來判斷是否允許所述應用程序調(diào)用該so文件,只有收到服務器返回的密鑰后,客戶端才能根據(jù)密鑰解密并調(diào)用所述so文件,以避免了不符合要求的應用程序對so文件的盜用,有效提高了so文件的安全性。

為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

實施例一

本實施例提供一種安卓so文件的保護方法,如圖1所示,該方法包括:

步驟s101,當應用程序加載so文件時,獲取所述so文件運行的環(huán)境信息,其中,所述so文件為加密文件;

步驟s102,對所述環(huán)境信息進行加密;

步驟s103,發(fā)送加密后的所述環(huán)境信息至服務器;

步驟s104,當接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,基于所述密鑰,解密并調(diào)用所述so文件。

需要說明的是,本實施例提供的方法應用于客戶端,所述客戶端與所述服務器通過無線或有限網(wǎng)絡進行連接,以實現(xiàn)通信。

在具體實施過程中,所述客戶端可以為智能手機,平板電腦或臺式機,在此也不作限制。所述服務器可以是一臺獨立的服務器,也可以是多臺服務器組成的服務器群,在此也不作限制。

下面,結合圖1詳細介紹本實施例提供的安卓so文件的保護方法的具體實施步驟:

首先,執(zhí)行步驟s101,當應用程序加載so文件時,獲取所述so文件運行的環(huán)境信息,其中,所述so文件為加密文件。

具體來講,需要預先對so文件進行加密,具體可以是在編寫so文件時對其進行加密。

進一步,考慮到在編寫核心so文件的模塊代碼時,其中會使用到一些常量的表格,或者是函數(shù)使用的參數(shù)等,故可以設置主要對so文件中使用的常量數(shù)據(jù)或者表格數(shù)據(jù)進行加密,以保護最核心的內(nèi)容。

在具體實施過程中,對所述so文件的加密可以使用非對稱加密,也可以使用對稱加密算法,在此不作限制。

舉例來說,可以預先使用非對稱加密算法來對so文件中表格數(shù)據(jù)進行加密后存儲,調(diào)用so文件時則需要從服務器獲取到正確的密鑰,即key值,才能解密出這些表格數(shù)據(jù),從而才能使用so文件的模塊功能,如果獲取不到正確的key值,則無法使用so文件的功能。對so文件的具體加密過程可以如下:

首先,服務器使用rsa算法來生成一對公鑰publickey和私鑰secretkey。即通過rsa.createpairkey(secretkey,publickey)命令,使用rsa算法來生成一對私鑰publickey和私鑰secretkey。然后,服務器存儲這對密鑰,以供后續(xù)客戶端請求下發(fā)私鑰。

然后,使用rsa算法來對so文件中使用的常量數(shù)據(jù)和表格數(shù)據(jù)進行加密。即調(diào)用rsa算法的加密接口來對常量表格進行加密。例如,charg_gloabledata[size]為so文件中使用的表格數(shù)據(jù),rsa.encrypt則是rsa加密算法的接口,通過下述命令使用公鑰publickey來對全局的表格數(shù)據(jù)進行加密:

charg_gloabledata[size]={.....};

rsa.encrypt(g_gloabledata,size,publickey);

其中,charg_gloabledata[size]={.....}表征需要加密的表格數(shù)據(jù),用加密后的數(shù)據(jù)替換so文件中表格數(shù)據(jù)的內(nèi)容,從而保證so文件中存儲的表格是已加密狀態(tài)。

當對所述so文件加密后,可以將加密后的so文件隨著android的應用程序(app)發(fā)布到客戶端,當有應用程序要加載so文件時,必須先獲取所述so文件運行的環(huán)境信息。

在本申請實施例中,所述獲取所述so文件運行的環(huán)境信息,包括:

調(diào)用so文件的初始化函數(shù);

基于所述初始化函數(shù),獲取所述so文件的運行的環(huán)境信息,所述環(huán)境信息包括以下任意一種或多種的組合:所述so文件的加載內(nèi)存地址范圍、當前內(nèi)存段的權限或所述so文件的路徑名稱。

具體來講,可以預先在so文件的初始化函數(shù)jni_onload中加入獲取所述so文件運行的環(huán)境信息,并對所述環(huán)境信息加密后再發(fā)送至服務器的指令,當應用程序加載so文件是,必須調(diào)用so文件的初始化函數(shù)jni_onload,則會觸發(fā)獲取所述so文件運行的環(huán)境信息。

舉例來講,加入初始化函數(shù)中的獲取所述環(huán)境信息的指令可以是:先定義processbuilderprocessbuilder=newprocessbuilder(“cat/proc/pid/maps”),以用來創(chuàng)建一個新的進程,其中pid是當前應用程序的id,其中“/proc/pid/maps”則標示獲取當前程序的內(nèi)存映射信息,包含so的加載信息;再執(zhí)行process=processbuilder.start(),以執(zhí)行創(chuàng)建的進程;再執(zhí)行is=process.getinputstream(),以獲取進程的輸出信息;然后,執(zhí)行bytearrayoutputstreaminfo=newbytearrayoutputstream(),來定義一個輸出流;再下來,執(zhí)行while(is.read()!=-1){info.write(read);},以通過編寫一個while循環(huán)來將進程的輸出信息寫入到所述輸出流中;然后,執(zhí)行byte[]data=info.tobytearray(),將輸出流的信息轉換到byte數(shù)組中;再執(zhí)行stringresult=newstring(data),將byte數(shù)組的信息轉換成一個字符串信息。例如,采用上述步驟獲取的信息類似于如下一條so文件的環(huán)境信息:

“4d575000-4d58a000r-xp0000000003:06736549/lib/ld.so”

其中,4d575000-4d58a000標示so文件的加載內(nèi)存地址范圍;r-xp則標示當前內(nèi)存段的權限;/lib/ld.so則表示加載的so文件的路徑名稱。

因此,根據(jù)所述環(huán)境信息能較好的判斷出so文件的加載范圍和so文件的路徑名稱。

在獲取了所述環(huán)境信息后,執(zhí)行步驟s102,對所述環(huán)境信息進行加密。

在具體實施過程中,對所述環(huán)境信息進行加密后再傳送一方面是對所述環(huán)境信息的保護,另一方面能通過預先溝通好加密方式來幫助服務器判斷所述應用程序是否允許調(diào)用所述so文件。

在具體實施過程中,可以直接根據(jù)應用程序的程序包名稱來對所述環(huán)境信息進行加密,即先獲取所述應用程序的程序包名稱,再基于所述程序包名稱,對所述環(huán)境信息進行加密。

進一步,可以根據(jù)應用程序的程序包名稱的md5值來對所述環(huán)境信息進行加密,即先計算所述程序包名稱的md5值,再基于所述md5值,對所述環(huán)境信息進行加密。

具體來講,由于每個應用程序的程序包名稱都是不同的,所以獲取應用程序的程序包名稱,然后對程序包名稱計算其md5值來做為獲取到的客戶端的環(huán)境信息加密使用的key值。而服務器存儲有允許調(diào)用所述so文件的應用程序的程序包名稱,所以服務器會直接使用其認可的程序包名稱來解密所述環(huán)境信息。而如果客戶端是調(diào)用so文件的應用程序不是服務器允許的應用程序,那么獲取到的程序包名稱則會不一樣,從而服務器無法解密出正確的環(huán)境信息,從而可以拒絕給客戶端發(fā)送解密的密鑰。只有當服務器對所述環(huán)境信息解密成功后,才能繼續(xù)根據(jù)所述環(huán)境信息的本文內(nèi)容來判斷是否允許調(diào)用so文件。

在具體實施過程中,應用程序的程序包名稱可以采取下述方法獲?。?/p>

首先,通過在so文件中使用jni層的接口來獲取程序包名稱的方法id,具體實現(xiàn)代碼可以為:

jmethodidmethodid_pack=(*env)->getmethodid(env,context_clazz,"getpackagename","()ljava/lang/string;");

然后,通過程序包名稱的方法id來獲取當前應用程序的程序包名稱,具體實現(xiàn)代碼可以為:

jstringapplication_package=(*env)->callobjectmethod(env,context,methodid_pack);

其中,application_package則是應用程序的程序包名稱。

當然,應用程序的程序包名還可以通過像應用程序主程序發(fā)送請求,或查詢應用程序程序包地址的方式獲取,在此不作限制。

在具體實施過程中,獲取了應用程序的程序包名稱后,可以對所述程序包名稱使用md5算法來計算其md5值,以作為后續(xù)加密使用的key值。即設置key=md5.create(application_package)。

當然,在具體實施過程中,所述key值除了可以設置為所述程序包名稱和其md5值外,還可以為程序的類型標識,程序名稱的首字母或簡稱等,在此不作限制。

在具體實施過程中,確定key值后,對所述環(huán)境信息的加密可以采取下述方法實現(xiàn):

使用加密算法,采用前述步驟確定的key值來對獲取到的所述環(huán)境信息進行加密。例如,可以采取加密算法aes,使用aes.encrypt(key,result)命令來進行加密,其中,key為之前計算得出的程序包名稱或程序包名稱的md5值,result為之前獲取的內(nèi)存映射信息,即所述環(huán)境信息。

當然,在具體實施過程中,也可以采用rsa加密算法和des加密算法來對所述環(huán)境信息進行加密,在此不作限制。

通過上述步驟就實現(xiàn)了在so文件的初始化中獲取環(huán)境信息并加密。

接下來,執(zhí)行步驟s103,發(fā)送加密后的所述環(huán)境信息至服務器。

在本申請實施例中,所述服務器與所述客戶端實現(xiàn)網(wǎng)絡連接,所述so文件中存儲有服務器的地址,并設置有與服務器通信的功能,所述服務器接收到所述環(huán)境信息后,可以通過以下至少一種方式判斷是否返回密鑰至所述客戶端:

第一種,判斷是否能按預設密碼解密。

具體來講,設置客戶端以應用程序的信息作為key值來對所述環(huán)境信息進行加密。而服務器存儲有允許調(diào)用所述so文件的應用程序的信息,所以服務器可以直接使用其認可的應用程序的信息作為key值來解密所述環(huán)境信息,例如,客戶端用調(diào)用so文件的當前應用程序的程序包名稱的md5值來加密,對應的服務器用允許調(diào)用so文件的應用程序的程序包名稱的md5值來解密。如果客戶端調(diào)用so文件的當前應用程序不是服務器允許的應用程序,那么客戶端用于加密的程序信息與客戶端解密的程序信息則會不一樣,從而服務器無法解密出正確的環(huán)境信息,從而拒絕給客戶端發(fā)送解密的密鑰。只有當服務器對所述環(huán)境信息解密成功后,才能繼續(xù)根據(jù)所述環(huán)境信息的本文內(nèi)容來判斷是否允許調(diào)用so文件。

需要說明的是,服務器端使用的解密算法需要與客戶端使用的加密算法預先對應設置。

舉例來說,客戶端采用aes算法,以當前應用程序的程序包名稱的md5值作為key值,來對獲得的所述環(huán)境信息進行加密,服務器收到客戶端上報的加密后環(huán)境信息后,使用同樣的aes算法并且使用允許調(diào)用so文件的程序包名稱的md5做為key值來對所述環(huán)境信息進行解密。如果解密失敗,拒絕給客戶端發(fā)送解密的密鑰,如果解密成功,再基于所述環(huán)境信息的具體內(nèi)容進行進一步判斷或直接發(fā)送密鑰。

服務器端使用md5做為key值來對所述環(huán)境信息進行解密的方法為:

首先,使用允許調(diào)用so文件的應用程序的程序包名稱計算md5值。具體命令為:key=md5.create(application_package);

然后,使用aes算法來對上報的數(shù)據(jù)進行解密。具體命令為:aes.decrypt(key,result)。

第二種,或者判斷所述環(huán)境信息中表征的so文件的類型或參數(shù)是否滿足預設要求。

具體來講,獲取的當前環(huán)境信息本文是獲取當前應用程序所加載的so文件的環(huán)境信息,因為不同的應用程序所需要加載的so文件是不一樣的,所以根據(jù)獲取加載的so文件的環(huán)境信息可以很好的區(qū)分應用程序。

即在解密后,對所述環(huán)境信息中加載的so文件的類型和參數(shù)進行判斷,由于服務器中預先存儲有加載的so文件的信息,例如,存儲有正常的程序會加載哪些必要的so文件,不會加載哪些so文件的信息;或者,正常的程序加載的每個so文件的加載內(nèi)存區(qū)間,故服務器根據(jù)預存的加載的so文件的信息,可以很容易的判斷出客戶端上報的所述環(huán)境信息是否是正確的應用程序加載so文件時的信息。如果服務器判斷出客戶端上報的所述環(huán)境信息符合正確的應用程序的加載信息,則向客戶端下發(fā)解密使用的密鑰(secretkey),否則向客戶端下發(fā)拒絕信息。

當然,在具體實施過程中,結合上述第一種和第二種方法來一同判斷是否返回密鑰,能夠增加判斷的準確性。即先采取第一種方法判斷能否對所述環(huán)境信息進行解密,如果解密失敗則拒絕返回密鑰,如果解密成功再采取第二種方法進一步判斷所述環(huán)境信息的具體內(nèi)容是否符合要求,符合則返回密鑰,不符合則拒絕返回密鑰。

再下來,執(zhí)行步驟s104,當接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,基于所述密鑰,解密并調(diào)用所述so文件。

具體來講,如果客戶端接收到所述服務器下發(fā)的密鑰信息,則對so文件進行解密,具體可以是對so文件中的常量數(shù)據(jù)或表格數(shù)據(jù)進行解密,從而so文件才能正確的使用。具體的解密指令可以為:rsa.decrypt(g_gloabledata,size,secretkey);

進一步,如果客戶端沒有接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,退出對所述so文件的調(diào)用。

進一步,退出對所述so文件的調(diào)用后,可以在所述客戶端上輸出初始化失敗信息以提醒用戶。

本實施例提供的方法,對so文件中所使用到的關鍵性的一些常量數(shù)據(jù)或者表格數(shù)據(jù)使用加密算法來進行加密,在應用程序調(diào)用so文件時,會對so文件的使用方程序進行驗證,如果驗證不成功則無法使用so文件的所有功能,從而可以對so文件進行保護。具體來講,在客戶端登陸啟動應用程序后,應用程序加載so文件,而在so文件進行初始化的同時,會獲取當前so文件所處的環(huán)境信息,獲取到環(huán)境信息后會通過so文件中編寫的與服務器的網(wǎng)絡連接功能來進行發(fā)送,而服務器則會根據(jù)上報的所述環(huán)境信息判斷當前使用方程序是否是正確的應用程序。只有當服務器校驗通過時,才會將解密密鑰下發(fā)至客戶端,才能夠正確的解密出需要使用的常量數(shù)據(jù)或者表格數(shù)據(jù),否則無法獲取到解密密鑰,從而無法使用so文件中的功能。

基于同一發(fā)明構思,本申請還提供了與實施例一中安卓so文件的保護方法對應的應用于服務器端的安卓so文件的保護方法,詳見實施例二。

實施例二

本實施例提供了一種安卓so文件的保護方法,如圖2所示,該方法包括:

步驟s201,接收客戶端發(fā)送的加密后的環(huán)境信息,其中,所述環(huán)境信息用于表征應用程序加載的so文件的運行環(huán)境;

步驟s202,判斷所述加密后的環(huán)境信息是否符合預設要求;

步驟s203,當所述加密后的環(huán)境信息符合預設要求時,發(fā)送密鑰至所述客戶端,以使所述客戶端能基于所述密鑰,解密并調(diào)用所述so文件。

需要說明的是,本實施例提供的方法應用于服務器端,所述服務器端與實施例一中的客戶端通過無線或有限網(wǎng)絡進行連接,以實現(xiàn)通信。

在具體實施過程中,所述客戶端可以為智能手機,平板電腦或臺式機,在此也不作限制。所述服務器可以是一臺獨立的服務器,也可以是多臺服務器組成的服務器群,在此也不作限制。

在本申請實施例中,所述判斷所述加密后的環(huán)境信息是否符合預設要求,包括以下任意一種或多種的組合:

判斷是否能通過預設應用程序的程序包名稱,對所述加密后的環(huán)境信息進行解密;或者

判斷所述環(huán)境信息中表征的so文件的類型是否滿足預設類型要求;或者

判斷所述環(huán)境信息中表征的so文件的參數(shù)是否滿足預設參數(shù)要求。

由于本發(fā)明實施例二所介紹的方法與實施例一中所介紹的方法屬于同一發(fā)明構思,而實施例二中判斷所述加密后的環(huán)境信息是否符合預設要求的具體實施步驟及原理也在實施例一中做了詳細描述,基于實施例一本領域技術人員應該了解實施例二提供方法的實施步驟及原理,故而在此不再贅述。

基于同一發(fā)明構思,本申請還提供了與實施例一中安卓so文件的保護方法對應的裝置,詳見實施例三。

實施例三

本實施例提供一種安卓so文件的保護裝置,所述裝置為客戶端,如圖3所示,包括:

獲取模塊301,用于當應用程序加載so文件時,獲取所述so文件運行的環(huán)境信息,其中,所述so文件為加密文件;

加密模塊302,用于對所述環(huán)境信息進行加密;

第一發(fā)送模塊303,用于發(fā)送加密后的所述環(huán)境信息至服務器;

解密模塊304,用于當接收到所述服務器基于加密后的所述環(huán)境信息返回的密鑰時,基于所述密鑰,解密并調(diào)用所述so文件。

在具體實施過程中,所述客戶端可以為智能手機,平板電腦或臺式機,在此不作限制。

由于本發(fā)明實施例三所介紹的裝置,為實施本發(fā)明實施例一的安卓so文件的保護方法所采用的裝置,故而基于本發(fā)明實施例一所介紹的方法,本領域所屬人員能夠了解該裝置的具體結構及變形,故而在此不再贅述。凡是本發(fā)明實施例一的方法所采用的裝置都屬于本發(fā)明所欲保護的范圍。

基于同一發(fā)明構思,本申請還提供了與實施例二中安卓so文件的保護方法對應的裝置,詳見實施例四。

實施例四

本實施例提供一種安卓so文件的保護裝置,所述裝置為服務器,如圖4所示,包括:

接收模塊401,用于接收客戶端發(fā)送的加密后的環(huán)境信息,其中,所述環(huán)境信息用于表征應用程序加載的so文件的運行環(huán)境;

判斷模塊402,用于判斷所述加密后的環(huán)境信息是否符合預設要求;

第二發(fā)送模塊403,用于當所述加密后的環(huán)境信息符合預設要求時,發(fā)送密鑰至所述客戶端,以使所述客戶端能基于所述密鑰,解密并調(diào)用所述so文件。

在本申請實施例中,所述服務器可以是一臺獨立的服務器,也可以是多臺服務器組成的服務器群,在此不作限制。

由于本發(fā)明實施例四所介紹的裝置,為實施本發(fā)明實施例二的安卓so文件的保護方法所采用的裝置,故而基于本發(fā)明實施例二所介紹的方法,本領域所屬人員能夠了解該裝置的具體結構及變形,故而在此不再贅述。凡是本發(fā)明實施例二的方法所采用的裝置都屬于本發(fā)明所欲保護的范圍。

本申請實施例中提供的技術方案,至少具有如下技術效果或優(yōu)點:

本申請實施例提供的方法及裝置,預先對so文件進行加密,并設置在客戶端的應用程序加載so文件時,需要先獲取所述so文件運行的環(huán)境信息,并將加密后的所述環(huán)境信息發(fā)送至服務器,以供服務器根據(jù)所述環(huán)境信息來判斷是否允許所述應用程序調(diào)用該so文件,只有收到服務器返回的密鑰后,客戶端才能根據(jù)密鑰解密并調(diào)用所述so文件,以避免了不符合要求的應用程序對so文件的盜用,有效提高了so文件的安全性。

本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內(nèi)的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。

顯然,本領域的技術人員可以對本發(fā)明實施例進行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1