欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

SDK發(fā)送、應(yīng)用發(fā)布、應(yīng)用運(yùn)行方法及裝置與流程

文檔序號(hào):11432461閱讀:249來源:國(guó)知局
SDK發(fā)送、應(yīng)用發(fā)布、應(yīng)用運(yùn)行方法及裝置與流程

本發(fā)明涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,特別涉及一種sdk(softwaredevelopmentkit,軟件開發(fā)工具包)發(fā)送、應(yīng)用發(fā)布、應(yīng)用運(yùn)行方法及裝置。



背景技術(shù):

在移動(dòng)互聯(lián)網(wǎng)盛行的今天,應(yīng)用開發(fā)方在開發(fā)某一應(yīng)用時(shí),往往需要從開發(fā)工具提供方獲取sdk,基于該sdk來完成該應(yīng)用的開發(fā)。由于該sdk是對(duì)該sdk的源代碼進(jìn)行編譯得到,所以該sdk的源代碼可以輕易地通過反編譯工具對(duì)該sdk破解得到,因此,為了避免在該sdk的傳輸過程中該sdk的源代碼被攻擊者獲取后進(jìn)行惡意使用,亟需一種sdk發(fā)送方法。

目前,提供了一種sdk發(fā)送方法,具體可以為:開發(fā)人員在編寫sdk的源代碼時(shí),可以手動(dòng)地將該sdk的源代碼中標(biāo)準(zhǔn)的函數(shù)名稱、方法名稱或者類名稱修改為自定義的名稱,得到混淆后的源代碼,對(duì)該混淆后的源代碼進(jìn)行編譯得到加密后的sdk,將該加密后的sdk發(fā)送給應(yīng)用開發(fā)方,以供應(yīng)用開發(fā)方基于該加密后的sdk來開發(fā)應(yīng)用。

在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:

通過混淆后的源代碼得到加密后的sdk只是增加了反編譯的難度和工作量,并不能完全阻止反編譯,攻擊者仍然可以對(duì)該加密后的sdk進(jìn)行反編譯,得到混淆后的源代碼,通過將該混淆后的源代碼中混淆的名稱替換為有意義的名稱,可以獲取到該源代碼,源代碼的保密性較低。



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

為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種sdk發(fā)送、應(yīng)用發(fā)布、應(yīng)用運(yùn)行方法及裝置。所述技術(shù)方案如下:

第一方面,提供了一種sdk發(fā)送方法,所述方法包括:

當(dāng)接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù) 文件,所述接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,所述至少一個(gè)接口和所述至少一個(gè)接口函數(shù)聲明包含于所述第一sdk中,所述加密函數(shù)文件是對(duì)所述第一sdk中的函數(shù)進(jìn)行加密得到,所述第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

基于所述接口文件、所述加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,所述保護(hù)邏輯庫用于對(duì)所述加密函數(shù)文件進(jìn)行加載和解密;

將所述第二sdk發(fā)送給應(yīng)用開發(fā)方,以供所述應(yīng)用開發(fā)方基于所述第二sdk發(fā)布目標(biāo)應(yīng)用。

第二方面,提供了一種應(yīng)用發(fā)布方法,所述方法包括:

接收開發(fā)工具提供方發(fā)送的第二sdk,所述第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,所述接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,所述至少一個(gè)接口和所述至少一個(gè)接口函數(shù)聲明包含于第一sdk中,所述加密函數(shù)文件是對(duì)所述第一sdk中的函數(shù)進(jìn)行加密得到,所述第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

基于所述接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,所述應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼;

將所述加密函數(shù)文件、所述保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到所述目標(biāo)應(yīng)用;

將所述目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)所述目標(biāo)應(yīng)用進(jìn)行發(fā)布。

第三方面,提供了一種應(yīng)用運(yùn)行方法,所述方法包括:

從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,所述目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,所述加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,所述第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

當(dāng)接收到所述目標(biāo)應(yīng)用的運(yùn)行指令時(shí),基于所述編譯后的應(yīng)用源代碼和所述保護(hù)邏輯庫,調(diào)用所述加密函數(shù)文件,以運(yùn)行所述目標(biāo)應(yīng)用。

第四方面,提供了一種sdk發(fā)送裝置,所述裝置包括:

處理模塊,用于當(dāng)接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口 文件和加密函數(shù)文件,所述接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,所述至少一個(gè)接口和所述至少一個(gè)接口函數(shù)聲明包含于所述第一sdk中,所述加密函數(shù)文件是對(duì)所述第一sdk中的函數(shù)進(jìn)行加密得到,所述第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

生成模塊,用于基于所述接口文件、所述加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,所述保護(hù)邏輯庫用于對(duì)所述加密函數(shù)文件進(jìn)行加載和解密;

發(fā)送模塊,用于將所述第二sdk發(fā)送給應(yīng)用開發(fā)方,以供所述應(yīng)用開發(fā)方基于所述第二sdk發(fā)布目標(biāo)應(yīng)用。

第五方面,提供了一種應(yīng)用發(fā)布裝置,所述裝置包括:

接收模塊,用于接收開發(fā)工具提供方發(fā)送的第二sdk,所述第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,所述接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,所述至少一個(gè)接口和所述至少一個(gè)接口函數(shù)聲明包含于第一sdk中,所述加密函數(shù)文件是對(duì)所述第一sdk中的函數(shù)進(jìn)行加密得到,所述第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

編譯模塊,用于基于所述接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,所述應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼;

集成模塊,用于將所述加密函數(shù)文件、所述保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到所述目標(biāo)應(yīng)用;

發(fā)送模塊,用于將所述目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)所述目標(biāo)應(yīng)用進(jìn)行發(fā)布。

第六方面,提供了一種應(yīng)用運(yùn)行裝置,所述裝置包括:

下載模塊,用于從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,所述目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,所述加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,所述第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

調(diào)用模塊,用于當(dāng)接收到所述目標(biāo)應(yīng)用的運(yùn)行指令時(shí),基于所述編譯后的應(yīng)用源代碼和所述保護(hù)邏輯庫,調(diào)用所述加密函數(shù)文件,以運(yùn)行所述目標(biāo)應(yīng)用。

本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:在本發(fā)明實(shí)施例中,當(dāng)開發(fā)工具提供方接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和 加密函數(shù)文件,基于該接口文件、該加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,操作簡(jiǎn)單,生成效率較高,之后,開發(fā)工具提供方將該第二sdk發(fā)送給應(yīng)用開發(fā)方,以供該應(yīng)用開發(fā)方基于該第二sdk發(fā)布目標(biāo)應(yīng)用。由于第二sdk中包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,因此,第二sdk可以大大提高反編譯的難度和工具量。且由于接口文件包括的是接口和接口函數(shù)聲明,加密函數(shù)文件包括的是函數(shù)密文,保護(hù)邏輯庫中沒有第一sdk中的內(nèi)容,因此,即使攻擊者可以對(duì)該第二sdk成功進(jìn)行反編譯,也無法獲取到sdk源代碼,從而實(shí)現(xiàn)了對(duì)sdk源代碼的保護(hù),增強(qiáng)了sdk源代碼的保密性。

附圖說明

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

圖1是本發(fā)明實(shí)施例提供的一種sdk發(fā)送、應(yīng)用發(fā)布、應(yīng)用運(yùn)行方法所涉及的實(shí)施環(huán)境的示意圖。

圖2是本發(fā)明實(shí)施例提供的一種sdk發(fā)送方法流程圖。

圖3是本發(fā)明實(shí)施例提供的一種應(yīng)用發(fā)布方法流程圖。

圖4是本發(fā)明實(shí)施例提供的一種應(yīng)用運(yùn)行方法流程圖。

圖5是本發(fā)明實(shí)施例提供的另一種sdk發(fā)送方法流程圖。

圖6是本發(fā)明實(shí)施例提供的另一種應(yīng)用發(fā)布方法流程圖。

圖7是本發(fā)明實(shí)施例提供的另一種應(yīng)用運(yùn)行方法流程圖。

圖8是本發(fā)明實(shí)施例提供的一種sdk發(fā)送裝置的結(jié)構(gòu)示意圖。

圖9是本發(fā)明實(shí)施例提供的一種處理模塊的結(jié)構(gòu)示意圖。

圖10是本發(fā)明實(shí)施例提供的另一種處理模塊的結(jié)構(gòu)示意圖。

圖11是本發(fā)明實(shí)施例提供的另一種sdk發(fā)送裝置的結(jié)構(gòu)示意圖。

圖12是本發(fā)明實(shí)施例提供的一種應(yīng)用發(fā)布裝置的結(jié)構(gòu)示意圖。

圖13是本發(fā)明實(shí)施例提供的一種編譯模塊的結(jié)構(gòu)示意圖。

圖14是本發(fā)明實(shí)施例提供的一種應(yīng)用運(yùn)行裝置的結(jié)構(gòu)示意圖。

圖15是本發(fā)明實(shí)施例提供的一種調(diào)用模塊的結(jié)構(gòu)示意圖。

圖16是本發(fā)明實(shí)施例提供的另一種調(diào)用模塊的結(jié)構(gòu)示意圖。

圖17是本發(fā)明實(shí)施例提供的一種調(diào)用單元的結(jié)構(gòu)示意圖。

圖18是本發(fā)明實(shí)施例提供的再一種sdk發(fā)送裝置的結(jié)構(gòu)示意圖。

圖19是本發(fā)明實(shí)施例提供的另一種應(yīng)用發(fā)布裝置的結(jié)構(gòu)示意圖。

圖20是本發(fā)明實(shí)施例提供的再一種應(yīng)用發(fā)布裝置的結(jié)構(gòu)示意圖。

圖21是本發(fā)明實(shí)施例提供的另一種應(yīng)用運(yùn)行裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。

在對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)地解釋說明之前,先對(duì)本發(fā)明實(shí)施例的應(yīng)用場(chǎng)景予以說明。圖1是本發(fā)明實(shí)施例提供的一種sdk發(fā)送、應(yīng)用發(fā)布、應(yīng)用運(yùn)行方法所涉及的實(shí)施環(huán)境的示意圖,參見圖1,該實(shí)施環(huán)境包括:開發(fā)工具提供方110、應(yīng)用開發(fā)方120、應(yīng)用發(fā)布平臺(tái)130和終端140,開發(fā)工具提供方110與應(yīng)用開發(fā)方120之間可以通過有線或者無線網(wǎng)絡(luò)進(jìn)行連接,應(yīng)用開發(fā)方120與應(yīng)用發(fā)布平臺(tái)130之間可以通過有線或者無線網(wǎng)絡(luò)進(jìn)行連接,應(yīng)用發(fā)布平臺(tái)130和終端140之間可以通過有線或者無線網(wǎng)絡(luò)進(jìn)行連接。其中,開發(fā)工具提供方110用于生成sdk,并將該sdk發(fā)送給應(yīng)用開發(fā)方120,該開發(fā)工具提供方110可以是該sdk提供商的服務(wù)器等。應(yīng)用開發(fā)方120用于基于sdk開發(fā)應(yīng)用,并將該應(yīng)用發(fā)送到應(yīng)用發(fā)布平臺(tái)130,該應(yīng)用開發(fā)方120可以是終端或者服務(wù)器,例如,該應(yīng)用開發(fā)方120可以為移動(dòng)電話、平板電腦等、工作站、服務(wù)器等。應(yīng)用發(fā)布平臺(tái)130用于發(fā)布應(yīng)用,該應(yīng)用分發(fā)平臺(tái)130可以為應(yīng)用寶、手機(jī)助手等。終端140用于從應(yīng)用發(fā)布平臺(tái)130中下載應(yīng)用并運(yùn)行該應(yīng)用,該終端140可以為移動(dòng)電話,計(jì)算機(jī),平板設(shè)備,個(gè)人數(shù)字助理等。

圖2是本發(fā)明實(shí)施例提供的一種sdk發(fā)送方法流程圖,該方法用于開發(fā)工具提供方,參見圖2,該方法包括:

步驟201:當(dāng)接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一 sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk。

步驟202:基于接口文件、加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,保護(hù)邏輯庫用于對(duì)加密函數(shù)文件進(jìn)行加載和解密。

步驟203:將第二sdk發(fā)送給應(yīng)用開發(fā)方,以供應(yīng)用開發(fā)方基于第二sdk發(fā)布目標(biāo)應(yīng)用。

在本發(fā)明實(shí)施例中,當(dāng)開發(fā)工具提供方接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,基于該接口文件、該加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,操作簡(jiǎn)單,生成效率較高,之后,開發(fā)工具提供方將該第二sdk發(fā)送給應(yīng)用開發(fā)方,以供該應(yīng)用開發(fā)方基于該第二sdk發(fā)布目標(biāo)應(yīng)用。由于第二sdk中包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,因此,第二sdk可以大大提高反編譯的難度和工具量。且由于接口文件包括的是接口和接口函數(shù)聲明,加密函數(shù)文件包括的是函數(shù)密文,保護(hù)邏輯庫中沒有第一sdk中的內(nèi)容,因此,即使攻擊者可以對(duì)該第二sdk成功進(jìn)行反編譯,也無法獲取到sdk源代碼,從而實(shí)現(xiàn)了對(duì)sdk源代碼的保護(hù),增強(qiáng)了sdk源代碼的保密性。

可選地,對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,包括:

從第一sdk中,獲取至少一個(gè)接口和至少一個(gè)函數(shù);

從至少一個(gè)函數(shù)中,獲取至少一個(gè)接口函數(shù),至少一個(gè)接口函數(shù)為至少一個(gè)接口所對(duì)應(yīng)的函數(shù);

獲取至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口函數(shù)聲明為至少一個(gè)接口函數(shù)的函數(shù)聲明;

基于至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,生成接口文件;

對(duì)至少一個(gè)函數(shù)分別進(jìn)行加密,得到至少一個(gè)函數(shù)密文;

基于至少一個(gè)函數(shù)密文,生成加密函數(shù)文件。

可選地,基于至少一個(gè)函數(shù)密文,生成加密函數(shù)文件之后,還包括:

對(duì)于至少一個(gè)函數(shù)中的每個(gè)函數(shù),對(duì)函數(shù)進(jìn)行哈希運(yùn)算,得到函數(shù)的信息摘要;

對(duì)信息摘要進(jìn)行加密,得到函數(shù)的數(shù)字簽名;

將數(shù)字簽名添加到加密函數(shù)文件中。

可選地,將第二sdk發(fā)送給應(yīng)用開發(fā)方之前,還包括:

獲取第二sdk所適用的應(yīng)用標(biāo)識(shí);

對(duì)獲取的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第一哈希值;

將第一哈希值添加到第二sdk中。

上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對(duì)此不再一一贅述。

圖3是本發(fā)明實(shí)施例提供的一種應(yīng)用發(fā)布方法流程圖,該方法用于應(yīng)用開發(fā)方,參見圖3,該方法包括:

步驟301:接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk。

步驟302:基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼。

步驟303:將加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用。

步驟304:將目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。

在本發(fā)明實(shí)施例中,應(yīng)用開發(fā)方接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,基于該接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼,由于該接口文件中包括的是接口和接口函數(shù)聲明,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取到該接口文件并對(duì)該接口文件進(jìn)行反編譯,也不能獲取到sdk源代碼,提高了sdk源代碼的保密性。之后,應(yīng)用開發(fā)方將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用,將該目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。由于加密函數(shù)文件中包括的是函數(shù)密文,后續(xù)目標(biāo)應(yīng)用運(yùn)行時(shí)實(shí)際上調(diào)用的是加密函數(shù)文件,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取接口文件并對(duì)該接口文件進(jìn)行篡改,也不會(huì)影響目標(biāo)應(yīng)用的正常運(yùn)行。

可選地,基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,包括:

當(dāng)?shù)诙dk中包括第一哈希值時(shí),獲取目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí);

對(duì)目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第二哈希值;

當(dāng)?shù)诙V蹬c第一哈希值相同時(shí),基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯。

上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對(duì)此不再一一贅述。

圖4是本發(fā)明實(shí)施例提供的一種應(yīng)用運(yùn)行方法流程圖,該方法用于終端中,參見圖4,該方法包括:

步驟401:從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk。

步驟402:當(dāng)接收到目標(biāo)應(yīng)用的運(yùn)行指令時(shí),基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,以運(yùn)行目標(biāo)應(yīng)用。

在本發(fā)明實(shí)施例中,終端從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,該目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,當(dāng)接收到該目標(biāo)應(yīng)用的運(yùn)行指令時(shí),通過保護(hù)邏輯庫對(duì)該加密函數(shù)文件進(jìn)行加載和解密,并通過該編譯后的應(yīng)用源代碼調(diào)用解密后的該加密函數(shù)文件,以運(yùn)行該目標(biāo)應(yīng)用,從而在保證目標(biāo)應(yīng)用正常運(yùn)行的同時(shí)提高了該加密函數(shù)文件的保密性。

可選地,基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,包括:

通過保護(hù)邏輯庫對(duì)加密函數(shù)文件中的至少一個(gè)函數(shù)密文進(jìn)行加載和解密,得到至少一個(gè)函數(shù);

確定運(yùn)行指令所調(diào)用的目標(biāo)接口;

基于編譯后的應(yīng)用源代碼和目標(biāo)接口,從至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù);

通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

可選地,基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,包括:

確定運(yùn)行指令所調(diào)用的目標(biāo)接口;

基于編譯后的應(yīng)用源代碼和目標(biāo)接口,通過保護(hù)邏輯庫對(duì)加密函數(shù)文件中 的目標(biāo)函數(shù)密文進(jìn)行加載和解密,得到目標(biāo)函數(shù);

通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

可選地,通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù),包括:

當(dāng)加密函數(shù)文件中包括至少一個(gè)數(shù)字簽名時(shí),對(duì)目標(biāo)函數(shù)進(jìn)行哈希運(yùn)算,得到第一摘要;

從至少一個(gè)數(shù)字簽名中,獲取目標(biāo)函數(shù)的數(shù)字簽名;

對(duì)獲取的數(shù)字簽名進(jìn)行解密,得到第二摘要;

當(dāng)?shù)谝徽c第二摘要相同時(shí),通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,本發(fā)明實(shí)施例對(duì)此不再一一贅述。

圖5是本發(fā)明實(shí)施例提供的一種sdk發(fā)送方法流程圖,該方法用于開發(fā)工具提供方,參見圖5,該方法包括:

步驟501:當(dāng)接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,該接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,該至少一個(gè)接口和該至少一個(gè)接口函數(shù)聲明包含于第一sdk中,該加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk。

需要說明的是,第一sdk是對(duì)sdk源代碼進(jìn)行編譯得到的,該sdk源代碼為開發(fā)工具提供方的開發(fā)人員編寫的用于進(jìn)行應(yīng)用開發(fā)的源代碼。

另外,對(duì)第一sdk進(jìn)行預(yù)處理時(shí),可以通過指定保護(hù)工具對(duì)第一sdk進(jìn)行預(yù)處理,該指定保護(hù)工具可以預(yù)先設(shè)置,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件的操作可以包括如下步驟(1)-(6):

(1)、從第一sdk中,獲取至少一個(gè)接口和至少一個(gè)函數(shù)。

其中,當(dāng)從第一sdk中獲取至少一個(gè)接口時(shí),可以基于存儲(chǔ)的接口列表中的至少一個(gè)接口名稱,從第一sdk中獲取至少一個(gè)接口,或者,可以對(duì)第一sdk中的至少一個(gè)接口進(jìn)行識(shí)別,對(duì)所識(shí)別的至少一個(gè)接口進(jìn)行獲取,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,對(duì)第一sdk中的至少一個(gè)接口進(jìn)行識(shí)別的操作可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對(duì)此不進(jìn)行詳細(xì)闡述。

需要說明的是,從第一sdk中獲取至少一個(gè)接口和至少一個(gè)函數(shù)的操作還可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對(duì)此不再進(jìn)行詳細(xì)闡述。

(2)、從該至少一個(gè)函數(shù)中,獲取至少一個(gè)接口函數(shù),該至少一個(gè)接口函數(shù)為該至少一個(gè)接口所對(duì)應(yīng)的函數(shù)。

具體地,對(duì)于該至少一個(gè)接口中的每個(gè)接口,可以從該接口中獲取接口函數(shù)名稱,基于該接口函數(shù)名稱,從該至少一個(gè)函數(shù)中,獲取接口函數(shù)。

需要說明的是,從該至少一個(gè)函數(shù)中,獲取至少一個(gè)接口函數(shù)的操作還可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對(duì)此不再進(jìn)行詳細(xì)闡述。

(3)、獲取至少一個(gè)接口函數(shù)聲明,該至少一個(gè)接口函數(shù)聲明為該至少一個(gè)接口函數(shù)的函數(shù)聲明。

其中,當(dāng)獲取至少一個(gè)接口函數(shù)聲明時(shí),對(duì)于該至少一個(gè)接口函數(shù)中的每個(gè)接口函數(shù),可以對(duì)該接口函數(shù)中的函數(shù)聲明進(jìn)行識(shí)別,對(duì)所識(shí)別的函數(shù)聲明進(jìn)行獲取,得到接口函數(shù)聲明;或者,可以對(duì)該接口函數(shù)中的函數(shù)體進(jìn)行識(shí)別,從該接口函數(shù)中刪除所識(shí)別的函數(shù)體,得到接口函數(shù)聲明。

需要說明的是,該接口函數(shù)的函數(shù)聲明中可以包括該接口函數(shù)的函數(shù)返回類型、函數(shù)名稱、參數(shù)名稱和參數(shù)類型,該接口函數(shù)的函數(shù)體中可以包括該接口函數(shù)的具體實(shí)現(xiàn)。

另外,對(duì)接口函數(shù)的函數(shù)聲明或者函數(shù)體進(jìn)行識(shí)別的操作可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對(duì)此不進(jìn)行詳細(xì)闡述。

(4)、基于該至少一個(gè)接口和該至少一個(gè)接口函數(shù)聲明,生成接口文件。

具體地,可以將該至少一個(gè)接口和該至少一個(gè)接口函數(shù)進(jìn)行打包,得到接口文件,當(dāng)然,也可以以其它方式基于該至少一個(gè)接口和該至少一個(gè)接口函數(shù)聲明生成接口文件,本發(fā)明實(shí)施例對(duì)此不做具體限定。

(5)、對(duì)該至少一個(gè)函數(shù)分別進(jìn)行加密,得到至少一個(gè)函數(shù)密文。

具體地,對(duì)于該至少一個(gè)函數(shù)中的每個(gè)函數(shù),可以將該函數(shù)進(jìn)行加密,得到函數(shù)密文;或者,可以對(duì)該函數(shù)進(jìn)行拆分,得到多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息,對(duì)該多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息進(jìn)行加密,得到函數(shù)密文。

需要說明的是,該多個(gè)函數(shù)段為將該函數(shù)拆分后得到的多段字節(jié)碼。另外,該多個(gè)函數(shù)段的位置信息中包括該多個(gè)函數(shù)段中各個(gè)函數(shù)段在函數(shù)中的位置。

其中,對(duì)該函數(shù)進(jìn)行加密時(shí),可以利用指定加密算法和該開發(fā)工具提供方的密鑰對(duì)該函數(shù)進(jìn)行加密,當(dāng)然,也可以利用其它的方法進(jìn)行加密,本發(fā)明實(shí)施例對(duì)此不做具體限定。

需要說明的是,指定加密算法可以預(yù)先設(shè)置,如該指定加密算法可以為des(dataencryptionstandard,數(shù)據(jù)加密標(biāo)準(zhǔn))算法、aes(advancedencryptionstandard,高級(jí)加密標(biāo)準(zhǔn))算法等等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,對(duì)該多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息進(jìn)行加密時(shí),也可以利用指定加密算法和該開發(fā)工具提供方的密鑰對(duì)該多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息整體進(jìn)行加密,或者,利用指定加密算法和該開發(fā)工具提供方的密鑰對(duì)該多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息分別進(jìn)行加密,當(dāng)然,也可以利用其它的方法對(duì)該多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息進(jìn)行加密,本發(fā)明實(shí)施例對(duì)此不作具體限定。再者,本發(fā)明實(shí)施例中對(duì)該多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息進(jìn)行加密,得到函數(shù)密文,可以進(jìn)一步提高函數(shù)的保密性。

其中,對(duì)該函數(shù)進(jìn)行拆分,得到多個(gè)函數(shù)段時(shí),可以按照指定格式對(duì)該函數(shù)進(jìn)行拆分,得到多個(gè)函數(shù)段。另外,指定格式可以預(yù)先設(shè)置,如該指定格式可以為函數(shù)聲明+函數(shù)體、函數(shù)名+形式參數(shù)+函數(shù)體等等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

例如,當(dāng)該指定格式為函數(shù)聲明+函數(shù)體時(shí),按照該指定格式對(duì)函數(shù)進(jìn)行拆分,得到多個(gè)函數(shù)段為該函數(shù)的函數(shù)聲明和函數(shù)體。當(dāng)該指定格式為函數(shù)名+形式參數(shù)+函數(shù)體時(shí),按照該指定格式對(duì)函數(shù)進(jìn)行拆分,得到多個(gè)函數(shù)段為該函數(shù)的函數(shù)名、形式參數(shù)和函數(shù)體。

(6)、基于該至少一個(gè)函數(shù)密文,生成加密函數(shù)文件。

具體地,可以將該至少一個(gè)函數(shù)密文進(jìn)行打包,得到加密函數(shù)文件,當(dāng)然,也可以以其它方式基于該至少一個(gè)函數(shù)密文,生成加密函數(shù)文件,本發(fā)明實(shí)施例對(duì)此不做具體限定。

進(jìn)一步地,基于該至少一個(gè)函數(shù)密文,生成加密函數(shù)文件之后,對(duì)于至少一個(gè)函數(shù)中的每個(gè)函數(shù),還可以對(duì)該函數(shù)進(jìn)行哈希運(yùn)算,得到該函數(shù)的信息摘要;對(duì)該信息摘要進(jìn)行加密,得到該函數(shù)的數(shù)字簽名;將該數(shù)字簽名添加到加密函數(shù)文件中。

其中,對(duì)該函數(shù)進(jìn)行哈希運(yùn)算時(shí),可以利用指定哈希算法對(duì)該函數(shù)進(jìn)行哈 希運(yùn)算。另外,該指定哈希算法可以預(yù)先設(shè)置,如該指定哈希算法可以為md5(message-digestalgorithm5,信息-摘要算法5)、sha1(securehashalgorithm,安全哈希算法)等等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,對(duì)該信息摘要進(jìn)行加密時(shí),可以利用指定加密算法和該開發(fā)工具提供方的密鑰對(duì)該信息摘要進(jìn)行加密,當(dāng)然,也通過利用其它的方法進(jìn)行加密,本發(fā)明實(shí)施例對(duì)此不做具體限定。

其中,將該數(shù)字簽名添加到加密函數(shù)文件中時(shí),可以將該數(shù)字簽名打包到該加密函數(shù)文件中,當(dāng)然,也可以以其它方式將該數(shù)字簽名添加到該加密函數(shù)文件中,本發(fā)明實(shí)施例對(duì)此不做具體限定。

步驟502:基于接口文件、加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,保護(hù)邏輯庫用于對(duì)加密函數(shù)文件進(jìn)行加載和解密。

具體地,可以將接口文件、加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫進(jìn)行打包,得到該第二sdk,當(dāng)然,也可以以其它方式基于接口文件、加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,本發(fā)明實(shí)施例對(duì)此不做具體限定。

需要說明的是,該保護(hù)邏輯庫可以通過指定保護(hù)工具生成,且該指定保護(hù)工具可以在完成對(duì)第一sdk的預(yù)處理時(shí)對(duì)該保護(hù)邏輯庫進(jìn)行生成。

需要說明的是,由于第二sdk中包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,因此,第二sdk可以大大提高反編譯的難度和工作量。且由于接口文件包括的是接口和接口函數(shù)聲明,加密函數(shù)文件包括的是函數(shù)密文,保護(hù)邏輯庫中沒有第一sdk中的內(nèi)容,因此,即使攻擊者可以對(duì)該第二sdk成功進(jìn)行反編譯,也無法獲取到sdk源代碼,從而實(shí)現(xiàn)了對(duì)sdk源代碼的保護(hù),增強(qiáng)了sdk源代碼的保密性。

另外,在本發(fā)明實(shí)施例中,無需提供sdk源代碼,只需對(duì)第一sdk進(jìn)行預(yù)處理,基于預(yù)處理得到的接口文件、加密函數(shù)文件和已存儲(chǔ)的保護(hù)邏輯庫,即可生成第二sdk,操作簡(jiǎn)單,易于對(duì)sdk源代碼進(jìn)行保護(hù)。另外,由于第二sdk是基于第一sdk得到的,第一sdk是對(duì)sdk的源代碼進(jìn)行編譯得到的,因此,開發(fā)工具提供方在集成該第二sdk時(shí),可以先采用普通集成方式集成第一sdk,再基于第一sdk集成第二sdk,集成過程簡(jiǎn)單,集成效率較高。

步驟503:將第二sdk發(fā)送給應(yīng)用開發(fā)方,以供應(yīng)用開發(fā)方基于第二sdk發(fā)布目標(biāo)應(yīng)用。

需要說明的是,可以通過有線或者無線網(wǎng)絡(luò)將第二sdk發(fā)送給應(yīng)用開發(fā)方,本發(fā)明實(shí)施例對(duì)此不做具體限定。

進(jìn)一步地,將第二sdk發(fā)送給應(yīng)用開發(fā)方之前,還可以獲取第二sdk所適用的應(yīng)用標(biāo)識(shí);對(duì)獲取的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第一哈希值;將第一哈希值添加到第二sdk中。

需要說明的是,應(yīng)用標(biāo)識(shí)可以為應(yīng)用的應(yīng)用名稱和應(yīng)用簽名中的至少一個(gè),且當(dāng)該應(yīng)用標(biāo)識(shí)為應(yīng)用名稱時(shí),該應(yīng)用標(biāo)識(shí)用于唯一標(biāo)識(shí)該應(yīng)用,當(dāng)該應(yīng)用標(biāo)識(shí)為應(yīng)用簽名時(shí),該應(yīng)用標(biāo)識(shí)用于唯一標(biāo)識(shí)應(yīng)用提供商,當(dāng)該應(yīng)用標(biāo)識(shí)為該應(yīng)用名稱和應(yīng)用簽名時(shí),該應(yīng)用標(biāo)識(shí)用于唯一標(biāo)識(shí)該應(yīng)用提供商提供的該應(yīng)用。

需要說明的是,應(yīng)用簽名為應(yīng)用提供商在開發(fā)某一應(yīng)用時(shí),對(duì)該應(yīng)用附加的序列號(hào),該序列號(hào)用于表示提供該應(yīng)用的應(yīng)用提供商。

其中,對(duì)獲取的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算時(shí),可以利用指定哈希算法對(duì)獲取的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算。

其中,將第一哈希值添加到第二sdk中時(shí),可以將第一哈希值打包到第二sdk中,當(dāng)然,也可以以其它方式將第一哈希值添加到第二sdk中,本發(fā)明實(shí)施例對(duì)此不做具體限定。

在本發(fā)明實(shí)施例中,當(dāng)開發(fā)工具提供方接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,基于該接口文件、該加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,操作簡(jiǎn)單,生成效率較高,之后,開發(fā)工具提供方將該第二sdk發(fā)送給應(yīng)用開發(fā)方,以供該應(yīng)用開發(fā)方基于該第二sdk發(fā)布目標(biāo)應(yīng)用。由于第二sdk中包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,因此,第二sdk可以大大提高反編譯的難度和工具量。且由于接口文件包括的是接口和接口函數(shù)聲明,加密函數(shù)文件包括的是函數(shù)密文,保護(hù)邏輯庫中沒有第一sdk中的內(nèi)容,因此,即使攻擊者可以對(duì)該第二sdk成功進(jìn)行反編譯,也無法獲取到sdk源代碼,從而實(shí)現(xiàn)了對(duì)sdk源代碼的保護(hù),增強(qiáng)了sdk源代碼的保密性。

需要說明的是,在本發(fā)明實(shí)施例中,開發(fā)工具提供方可以通過上述步驟501-503生成第二sdk并將該第二sdk發(fā)送給應(yīng)用開發(fā)方,而應(yīng)用開發(fā)方基于該第二sdk發(fā)布目標(biāo)應(yīng)用的操作可以通過如下步驟601-604實(shí)現(xiàn)。

圖6是本發(fā)明實(shí)施例提供的一種應(yīng)用發(fā)布方法流程圖,該方法用于應(yīng)用開 發(fā)方,參見圖6,該方法包括:

步驟601:接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫。

需要說明的是,應(yīng)用開發(fā)方接收的第二sdk即為上述步驟503中開發(fā)工具提供方向應(yīng)用開發(fā)方發(fā)送的第二sdk。

步驟602:基于該接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,該應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼。

具體地,當(dāng)?shù)诙dk中包括第一哈希值時(shí),獲取該目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí);對(duì)該目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第二哈希值;當(dāng)該第二哈希值與該第一哈希值相同時(shí),基于該接口文件,對(duì)該應(yīng)用源代碼進(jìn)行編譯。

其中,對(duì)目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算時(shí),可以利用指定哈希算法對(duì)該目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算。

需要說明的是,本發(fā)明實(shí)施例中,可以當(dāng)該第二哈希值與該第一哈希值相同時(shí),基于該接口文件,對(duì)該應(yīng)用源代碼進(jìn)行編譯,從而可以避免第二sdk不適用的應(yīng)用或者應(yīng)用提供商對(duì)該接口文件的非法使用。

另外,當(dāng)該應(yīng)用標(biāo)識(shí)為應(yīng)用的應(yīng)用名稱時(shí),本發(fā)明實(shí)施例可以實(shí)現(xiàn)對(duì)特定應(yīng)用的檢驗(yàn),從而限制該接口文件只能由該特定應(yīng)用使用,該特定應(yīng)用為第二sdk所適用的應(yīng)用;當(dāng)該應(yīng)用標(biāo)識(shí)為應(yīng)用的應(yīng)用簽名時(shí),本發(fā)明實(shí)施例可以實(shí)現(xiàn)對(duì)特定應(yīng)用提供商的檢驗(yàn),從而限制該接口文件只能由該特定應(yīng)用提供商使用,該特定應(yīng)用提供商為第二sdk所適用的應(yīng)用提供商;當(dāng)該應(yīng)用標(biāo)識(shí)為應(yīng)用的應(yīng)用名稱和應(yīng)用簽名時(shí),本發(fā)明實(shí)施例可以實(shí)現(xiàn)對(duì)特定應(yīng)用提供商提供的特定應(yīng)用的檢驗(yàn),從而實(shí)現(xiàn)該接口文件只能由該特定應(yīng)用提供商提供的特定應(yīng)用使用,該特定應(yīng)用提供商提供的特定應(yīng)用為第二sdk所適用的應(yīng)用。

需要說明的是,本發(fā)明實(shí)施例中可以基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,得到編譯后的應(yīng)用源代碼,該編譯后的應(yīng)用源代碼中包括接口文件中的至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取到該接口文件并對(duì)該接口文件進(jìn)行反編譯,也不能獲取到sdk源代碼,提高了sdk源代碼的保密性。

步驟603:將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用。

需要說明的是,將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用時(shí),可以將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行打包,得到目標(biāo)應(yīng)用,當(dāng)然,也可以以其它方式將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用,本發(fā)明實(shí)施例對(duì)此不做具體限定。

另外,由于加密函數(shù)文件中包括的是函數(shù)密文,后續(xù)目標(biāo)應(yīng)用運(yùn)行時(shí)實(shí)際上調(diào)用的是加密函數(shù)文件,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取該接口文件并對(duì)該接口文件進(jìn)行篡改,也不會(huì)影響目標(biāo)應(yīng)用的正常運(yùn)行。

步驟604:將目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。

需要說明的是,可以通過有線或者無線網(wǎng)絡(luò)將目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),本發(fā)明實(shí)施例對(duì)此不做具體限定。

需要說明的是,應(yīng)用發(fā)布平臺(tái)用于發(fā)布應(yīng)用,該應(yīng)用發(fā)布平臺(tái)可以為應(yīng)用寶、手機(jī)助手等等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

在本發(fā)明實(shí)施例中,應(yīng)用開發(fā)方接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,基于該接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼,由于該接口文件中包括的是接口和接口函數(shù)聲明,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取到該接口文件并對(duì)該接口文件進(jìn)行反編譯,也不能獲取到sdk源代碼,提高了sdk源代碼的保密性。之后,應(yīng)用開發(fā)方將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用,將該目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。由于加密函數(shù)文件中包括的是函數(shù)密文,后續(xù)目標(biāo)應(yīng)用運(yùn)行時(shí)實(shí)際上調(diào)用的是加密函數(shù)文件,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取接口文件并對(duì)該接口文件進(jìn)行篡改,也不會(huì)影響目標(biāo)應(yīng)用的正常運(yùn)行。

需要說明的是,在本發(fā)明實(shí)施例中,應(yīng)用開發(fā)方可以通過上述步驟601-604基于第二sdk生成目標(biāo)應(yīng)用,并將該目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)所述目標(biāo)應(yīng)用進(jìn)行發(fā)布,而終端從該應(yīng)用發(fā)布平臺(tái)下載該目標(biāo)應(yīng)用,并運(yùn)行該目標(biāo)應(yīng)用的操作可以通過如下步驟701-702實(shí)現(xiàn)。

圖7是本發(fā)明實(shí)施例提供的一種應(yīng)用運(yùn)行方法流程圖,該方法用于終端,參見圖7,該方法包括:

步驟701:從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,該目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼。

需要說明的是,終端下載的目標(biāo)應(yīng)用即為上述步驟604中應(yīng)用開發(fā)方向應(yīng)用發(fā)布平臺(tái)發(fā)送的目標(biāo)應(yīng)用。

步驟702:當(dāng)接收到該目標(biāo)應(yīng)用的運(yùn)行指令時(shí),基于該編譯后的應(yīng)用源代碼和該保護(hù)邏輯庫,調(diào)用該加密函數(shù)文件,以運(yùn)行該目標(biāo)應(yīng)用。

需要說明的是,運(yùn)行指令用于指示運(yùn)行該目標(biāo)應(yīng)用,該運(yùn)行指令可以由用戶觸發(fā),用戶可以通過指定操作觸發(fā),該指定操作可以為滑動(dòng)操作、單擊操作、語音操作等等,本發(fā)明實(shí)施例對(duì)此不做具體限定。

具體地,基于該編譯后的應(yīng)用源代碼和該保護(hù)邏輯庫,調(diào)用該加密函數(shù)文件的操作可以包括如下兩種方式:

第一種方式:通過該保護(hù)邏輯庫對(duì)該加密函數(shù)文件中的至少一個(gè)函數(shù)密文進(jìn)行加載和解密,得到至少一個(gè)函數(shù);確定該運(yùn)行指令所調(diào)用的目標(biāo)接口;基于該編譯后的應(yīng)用源代碼和該目標(biāo)接口,從該至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù);通過該編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù)。

其中,通過該保護(hù)邏輯庫對(duì)該加密函數(shù)文件中的至少一個(gè)函數(shù)密文進(jìn)行加載和解密,得到至少一個(gè)函數(shù)時(shí),可以通過該保護(hù)邏輯庫中的安全類加載器對(duì)該至少一個(gè)函數(shù)密文進(jìn)行加載,并通過該保護(hù)邏輯庫對(duì)該加載后的至少一個(gè)函數(shù)密文進(jìn)行解密,得到至少一個(gè)函數(shù)。

由于函數(shù)密文是對(duì)函數(shù)加密后得到的,該函數(shù)密文不符合終端的類加載器的加載格式,因此,為了保證該函數(shù)密文可以被終端正常加載,可以使用保護(hù)邏輯庫中的安全類加載器將函數(shù)密文加載到終端中。其中,該安全類加載器用于加載函數(shù)密文。

其中,通過保護(hù)邏輯庫對(duì)該加載后的至少一個(gè)函數(shù)密文進(jìn)行解密,得到至少一個(gè)函數(shù)的操作可以為:當(dāng)函數(shù)密文是對(duì)函數(shù)進(jìn)行加密得到時(shí),通過保護(hù)邏輯庫提供的指定加密算法的逆算法和開發(fā)工具提供方的密鑰對(duì)該至少一個(gè)函數(shù)密文進(jìn)行解密,得到至少一個(gè)函數(shù);當(dāng)函數(shù)密文是對(duì)多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息進(jìn)行加密得到時(shí),對(duì)于該至少一個(gè)函數(shù)密文中的每個(gè)函數(shù)密文,通過保護(hù)邏輯庫提供的指定加密算法的逆算法和開發(fā)工具提供方的密鑰對(duì)該函數(shù)密文進(jìn)行解密,得到多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息,基于該多個(gè)函 數(shù)段的位置信息,對(duì)該多個(gè)函數(shù)段進(jìn)行組裝,得到該函數(shù)。

需要說明的是,基于開發(fā)工具提供方對(duì)函數(shù)的加密方法的不同,通過保護(hù)邏輯庫對(duì)該加載后的至少一個(gè)函數(shù)密文的解密方法也不同,該加密方法與該解密方法是對(duì)應(yīng)的。

其中,確定該運(yùn)行指令所調(diào)用的目標(biāo)接口的操作可以參考相關(guān)技術(shù),本發(fā)明實(shí)施例對(duì)此不進(jìn)行詳細(xì)闡述。

其中,基于該編譯后的應(yīng)用源代碼和該目標(biāo)接口,從該至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù)時(shí),可以基于該編譯后的應(yīng)用源代碼和該目標(biāo)接口,確定目標(biāo)函數(shù)名稱,基于該目標(biāo)函數(shù)名稱,從該至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù)。

其中,由于編譯后的應(yīng)用源代碼中包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,因此,基于該編譯后的應(yīng)用源代碼和該目標(biāo)接口,確定目標(biāo)函數(shù)名稱時(shí),可以基于該目標(biāo)接口,從編譯后的應(yīng)用源代碼中確定該目標(biāo)接口對(duì)應(yīng)的接口函數(shù)聲明,并從該目標(biāo)接口對(duì)應(yīng)的接口函數(shù)聲明中,獲取接口函數(shù)名稱,將該獲取的接口函數(shù)名稱確定為目標(biāo)函數(shù)名稱。

其中,基于該目標(biāo)函數(shù)名稱,從該至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù)時(shí),可以基于該目標(biāo)函數(shù)名稱,從該至少一個(gè)函數(shù)中獲取該目標(biāo)函數(shù)名稱對(duì)應(yīng)的函數(shù),將獲取的函數(shù)確定為目標(biāo)函數(shù)。

其中,通過該編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù)的操作可以為:當(dāng)該加密函數(shù)文件中包括至少一個(gè)數(shù)字簽名時(shí),對(duì)該目標(biāo)函數(shù)進(jìn)行哈希運(yùn)算,得到第一摘要;從該至少一個(gè)數(shù)字簽名中,獲取該目標(biāo)函數(shù)的數(shù)字簽名;對(duì)獲取的數(shù)字簽名進(jìn)行解密,得到第二摘要;當(dāng)該第一摘要與該第二摘要相同時(shí),通過該編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù)。

其中,對(duì)該目標(biāo)函數(shù)進(jìn)行哈希運(yùn)算時(shí),可以利用指定哈希算法對(duì)該目標(biāo)函數(shù)進(jìn)行哈希運(yùn)算。

其中,對(duì)獲取的數(shù)字簽名進(jìn)行解密,得到第二摘要時(shí),可以通過保護(hù)邏輯庫提供的指定加密算法的逆算法和開發(fā)工具提供方的密鑰對(duì)該獲取的數(shù)字簽名進(jìn)行解密,得到第二摘要。

需要說明的是,基于開發(fā)工具提供方對(duì)函數(shù)的信息摘要的加密方法的不同,通過保護(hù)邏輯庫對(duì)該獲取的數(shù)字簽名的解密方法也不同,該加密方法與該解密方法是對(duì)應(yīng)的。

需要說明的是,在本發(fā)明實(shí)施例中,當(dāng)?shù)谝徽c第二摘要相同時(shí),終端可以確定該目標(biāo)函數(shù)未被篡改,進(jìn)而可以通過該編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù),保證該目標(biāo)應(yīng)用的正常運(yùn)行。

另外,在本發(fā)明實(shí)施例中,在初次運(yùn)行該目標(biāo)應(yīng)用時(shí),可以通過保護(hù)邏輯庫對(duì)該加密函數(shù)文件中的至少一個(gè)函數(shù)密文進(jìn)行加載和加密,得到至少一個(gè)函數(shù),從而可以使得終端在初次運(yùn)行該目標(biāo)應(yīng)用之后再次運(yùn)行該目標(biāo)應(yīng)用時(shí),無需再進(jìn)行加載和解密的操作,直接從該至少一個(gè)函數(shù)中獲取所要調(diào)用的函數(shù)并對(duì)該函數(shù)進(jìn)行調(diào)用即可,提高了函數(shù)調(diào)用效率,節(jié)省了終端的處理資源。

第二種方式:確定該運(yùn)行指令所調(diào)用的目標(biāo)接口;基于該編譯后的應(yīng)用源代碼和該目標(biāo)接口,確定目標(biāo)函數(shù)名稱;基于該目標(biāo)函數(shù)名稱,通過該保護(hù)邏輯庫對(duì)該加密函數(shù)文件中的目標(biāo)函數(shù)密文進(jìn)行加載和解密,得到目標(biāo)函數(shù);通過該編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù)。

其中,確定該運(yùn)行指令所調(diào)用的目標(biāo)接口,基于該編譯后的應(yīng)用源代碼和該目標(biāo)接口,確定目標(biāo)函數(shù)名稱的操作與步驟702第一種方式中的操作相同,本發(fā)明實(shí)施例在此不再贅述。

其中,基于該目標(biāo)函數(shù)名稱,通過該保護(hù)邏輯庫對(duì)該加密函數(shù)文件中的目標(biāo)函數(shù)密文進(jìn)行加載和解密,得到目標(biāo)函數(shù)時(shí),可以基于該目標(biāo)函數(shù)名稱,通過該保護(hù)邏輯庫中的安全類加載器對(duì)該目標(biāo)函數(shù)密文進(jìn)行加載,并通過該保護(hù)邏輯庫對(duì)該加載后的目標(biāo)函數(shù)密文進(jìn)行解密,得到目標(biāo)函數(shù)。

其中,通過保護(hù)邏輯庫對(duì)該加載后的目標(biāo)函數(shù)密文進(jìn)行解密,得到目標(biāo)函數(shù)的操作可以為:當(dāng)函數(shù)密文是對(duì)函數(shù)進(jìn)行加密得到時(shí),通過保護(hù)邏輯庫提供的指定加密算法的逆算法和開發(fā)工具提供方的密鑰對(duì)該目標(biāo)函數(shù)密文進(jìn)行解密,得到目標(biāo)函數(shù);當(dāng)函數(shù)密文是對(duì)多個(gè)函數(shù)段和該多個(gè)函數(shù)段的位置信息進(jìn)行加密得到時(shí),通過保護(hù)邏輯庫提供的指定加密算法的逆算法和開發(fā)工具提供方的密鑰對(duì)該目標(biāo)函數(shù)密文進(jìn)行解密,得到該多個(gè)目標(biāo)函數(shù)段和該多個(gè)目標(biāo)函數(shù)段的位置信息,基于該多個(gè)目標(biāo)函數(shù)段的位置信息,對(duì)該多個(gè)目標(biāo)函數(shù)段進(jìn)行組裝,得到該目標(biāo)函數(shù)。

需要說明的是,基于開發(fā)工具提供方對(duì)函數(shù)的加密方法的不同,通過保護(hù)邏輯庫對(duì)該加載后的目標(biāo)函數(shù)密文的解密方法也不同,該加密方法與該解密方法是對(duì)應(yīng)的。

其中,通過該編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù)的操作與步驟702第一種方式中的操作相同,本發(fā)明實(shí)施例在此不再贅述。

需要說明的是,本發(fā)明實(shí)施例中,可以實(shí)現(xiàn)對(duì)該加密函數(shù)文件的按需加載,也即是,可以在確定所要調(diào)用的目標(biāo)函數(shù)后,只對(duì)該目標(biāo)函數(shù)進(jìn)行加載和解密,從而避免該終端中出現(xiàn)該加密函數(shù)文件中的所有函數(shù),進(jìn)而避免攻擊者從該終端中獲取到該加密函數(shù)文件中的所有函數(shù),提高了該加密函數(shù)文件的保密性。

進(jìn)一步地,通過編譯后的應(yīng)用源代碼調(diào)用該目標(biāo)函數(shù)之后,還可以將該目標(biāo)函數(shù)進(jìn)行卸載,從而保證在目標(biāo)應(yīng)用每次運(yùn)行時(shí),該終端中都只會(huì)存在該次運(yùn)行所需調(diào)用的函數(shù),進(jìn)一步避免該終端中出現(xiàn)該加密函數(shù)文件中的所有函數(shù),避免攻擊者從該終端中獲取到該加密函數(shù)文件中的所有函數(shù),進(jìn)一步提高了該加密函數(shù)文件的保密性。

在本發(fā)明實(shí)施例中,終端從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,該目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,當(dāng)接收到該目標(biāo)應(yīng)用的運(yùn)行指令時(shí),通過保護(hù)邏輯庫對(duì)該加密函數(shù)文件進(jìn)行加載和解密,并通過該編譯后的應(yīng)用源代碼調(diào)用解密后的該加密函數(shù)文件,以運(yùn)行該目標(biāo)應(yīng)用,從而在保證目標(biāo)應(yīng)用正常運(yùn)行的同時(shí)提高了該加密函數(shù)文件的保密性。

參見圖8,本發(fā)明實(shí)施例提供了一種sdk發(fā)送裝置,該裝置包括處理模塊801,生成模塊802和發(fā)送模塊803。

處理模塊801,用于當(dāng)接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

生成模塊802,用于基于接口文件、加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,保護(hù)邏輯庫用于對(duì)加密函數(shù)文件進(jìn)行加載和解密;

發(fā)送模塊803,用于將第二sdk發(fā)送給應(yīng)用開發(fā)方,以供應(yīng)用開發(fā)方基于第二sdk發(fā)布目標(biāo)應(yīng)用。

可選地,參見圖9,該處理模塊801包括第一獲取單元8011,第二獲取單元8012,第三獲取單元8013,第一生成單元8014,第一加密單元8015和第二生成單元8016。

第一獲取單元8011,用于當(dāng)接收到處理指令時(shí),從第一sdk中,獲取至少一個(gè)接口和至少一個(gè)函數(shù);

第二獲取單元8012,用于從至少一個(gè)函數(shù)中,獲取至少一個(gè)接口函數(shù),至少一個(gè)接口函數(shù)為至少一個(gè)接口所對(duì)應(yīng)的函數(shù);

第三獲取單元8013,用于獲取至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口函數(shù)聲明為至少一個(gè)接口函數(shù)的函數(shù)聲明;

第一生成單元8014,用于基于至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,生成接口文件;

第一加密單元8015,用于對(duì)至少一個(gè)函數(shù)分別進(jìn)行加密,得到至少一個(gè)函數(shù)密文;

第二生成單元8016,用于基于至少一個(gè)函數(shù)密文,生成加密函數(shù)文件。

可選地,參見圖10,該處理模塊還包括運(yùn)算單元8017,第二加密單元8018和添加單元8019。

運(yùn)算單元8017,用于對(duì)于至少一個(gè)函數(shù)中的每個(gè)函數(shù),對(duì)函數(shù)進(jìn)行哈希運(yùn)算,得到函數(shù)的信息摘要;

第二加密單元8018,用于對(duì)信息摘要進(jìn)行加密,得到函數(shù)的數(shù)字簽名;

添加單元8019,用于將數(shù)字簽名添加到加密函數(shù)文件中。

可選地,參見圖11,該裝置還包括獲取模塊804,運(yùn)算模塊805和添加模塊806。

獲取模塊804,用于獲取第二sdk所適用的應(yīng)用標(biāo)識(shí);

運(yùn)算模塊805,用于對(duì)獲取的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第一哈希值;

添加模塊806,用于將第一哈希值添加到第二sdk中。

在本發(fā)明實(shí)施例中,當(dāng)開發(fā)工具提供方接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,基于該接口文件、該加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,操作簡(jiǎn)單,生成效率較高,之后,開發(fā)工具提供方將該第二sdk發(fā)送給應(yīng)用開發(fā)方,以供該應(yīng)用開發(fā)方基于該第二sdk發(fā)布目標(biāo)應(yīng)用。由于第二sdk中包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,因此,第二sdk可以大大提高反編譯的難度和工具量。且由于接口文件包括的是接口和接口函數(shù)聲明,加密函數(shù)文件包括的是函數(shù)密文,保護(hù)邏輯庫中沒有第一sdk中的內(nèi)容,因此,即使攻擊者可以對(duì)該第二sdk成功進(jìn)行反編 譯,也無法獲取到sdk源代碼,從而實(shí)現(xiàn)了對(duì)sdk源代碼的保護(hù),增強(qiáng)了sdk源代碼的保密性。

需要說明的是:上述實(shí)施例提供的sdk發(fā)送裝置在sdk發(fā)送時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的sdk發(fā)送裝置與sdk發(fā)送實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。

參見圖12,本發(fā)明實(shí)施例提供了一種應(yīng)用發(fā)布裝置,該裝置包括接收模塊1201,編譯模塊1202,集成模塊1203和發(fā)送模塊1204。

接收模塊1201,用于接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

編譯模塊1202,用于基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼;

集成模塊1203,用于將加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用;

發(fā)送模塊1204,用于將目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。

可選地,參見圖13,該編譯模塊1202包括獲取單元12021,運(yùn)算單元12022和編譯單元12023。

獲取單元12021,用于當(dāng)?shù)诙dk中包括第一哈希值時(shí),獲取目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí);

運(yùn)算單元12022,用于對(duì)目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第二哈希值;

編譯單元12023,用于當(dāng)?shù)诙V蹬c第一哈希值相同時(shí),基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯。

在本發(fā)明實(shí)施例中,應(yīng)用開發(fā)方接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,基于該接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼,由于該接口文件中包括的是接口和接口函數(shù)聲明,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取到該接口文件并對(duì)該接口文件進(jìn)行反編譯,也不能獲取到sdk源代碼,提高了sdk源代碼的保密性。之后,應(yīng)用開發(fā)方將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用,將該目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。由于加密函數(shù)文件中包括的是函數(shù)密文,后續(xù)目標(biāo)應(yīng)用運(yùn)行時(shí)實(shí)際上調(diào)用的是加密函數(shù)文件,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取接口文件并對(duì)該接口文件進(jìn)行篡改,也不會(huì)影響目標(biāo)應(yīng)用的正常運(yùn)行。

需要說明的是:上述實(shí)施例提供的應(yīng)用發(fā)布裝置在應(yīng)用發(fā)布時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的應(yīng)用發(fā)布裝置與應(yīng)用發(fā)布實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。

參見圖14,本發(fā)明實(shí)施例提供了一種應(yīng)用運(yùn)行裝置,該裝置包括下載模塊1401和調(diào)用模塊1402。

下載模塊1401,用于從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

調(diào)用模塊1402,用于當(dāng)接收到目標(biāo)應(yīng)用的運(yùn)行指令時(shí),基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,以運(yùn)行目標(biāo)應(yīng)用。

可選地,參見圖15,該調(diào)用模塊1402包括第一加載解密單元14021,第一確定單元14022,獲取單元14023和調(diào)用單元14024。

第一加載解密單元14021,用于當(dāng)接收到目標(biāo)應(yīng)用的運(yùn)行指令時(shí),通過保護(hù)邏輯庫對(duì)加密函數(shù)文件中的至少一個(gè)函數(shù)密文進(jìn)行加載和解密,得到至少一個(gè)函數(shù);

第一確定單元14022,用于確定運(yùn)行指令所調(diào)用的目標(biāo)接口;

獲取單元14023,用于基于編譯后的應(yīng)用源代碼和目標(biāo)接口,從至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù);

調(diào)用單元14024,用于通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

可選地,參見圖16,該調(diào)用模塊1402包括第二確定單元14025,第二加載解密單元14026和調(diào)用單元14024。

第二確定單元14025,用于當(dāng)接收到目標(biāo)應(yīng)用的運(yùn)行指令時(shí),確定運(yùn)行指令所調(diào)用的目標(biāo)接口;

第二加載解密單元14026,用于基于編譯后的應(yīng)用源代碼和目標(biāo)接口,通過保護(hù)邏輯庫對(duì)加密函數(shù)文件中的目標(biāo)函數(shù)密文進(jìn)行加載和解密,得到目標(biāo)函數(shù);

調(diào)用單元14024,用于通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

可選地,參見圖17,該調(diào)用單元14024包括運(yùn)算子單元140241,獲取子單元140242,解密子單元140243和調(diào)用子單元140244。

運(yùn)算子單元140241,用于當(dāng)加密函數(shù)文件中包括至少一個(gè)數(shù)字簽名時(shí),對(duì)目標(biāo)函數(shù)進(jìn)行哈希運(yùn)算,得到第一摘要;

獲取子單元140242,用于從至少一個(gè)數(shù)字簽名中,獲取目標(biāo)函數(shù)的數(shù)字簽名;

解密子單元140243,用于對(duì)獲取的數(shù)字簽名進(jìn)行解密,得到第二摘要;

調(diào)用子單元140244,用于當(dāng)?shù)谝徽c第二摘要相同時(shí),通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

在本發(fā)明實(shí)施例中,終端從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,該目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,當(dāng)接收到該目標(biāo)應(yīng)用的運(yùn)行指令時(shí),通過保護(hù)邏輯庫對(duì)該加密函數(shù)文件進(jìn)行加載和解密,并通過該編譯后的應(yīng)用源代碼調(diào)用解密后的該加密函數(shù)文件,以運(yùn)行該目標(biāo)應(yīng)用,從而在保證目標(biāo)應(yīng)用正常運(yùn)行的同時(shí)提高了該加密函數(shù)文件的保密性。

需要說明的是:上述實(shí)施例提供的應(yīng)用運(yùn)行裝置在應(yīng)用運(yùn)行時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的應(yīng)用運(yùn)行裝置與應(yīng)用運(yùn)行發(fā)實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。

圖18示出了本發(fā)明一個(gè)實(shí)施例提供的sdk發(fā)送裝置服務(wù)器的結(jié)構(gòu)示意圖。該服務(wù)器可以是后臺(tái)服務(wù)器集群中的服務(wù)器。具體來講:

服務(wù)器1800包括中央處理單元(cpu)1801、包括隨機(jī)存取存儲(chǔ)器(ram)1802和只讀存儲(chǔ)器(rom)1803的系統(tǒng)存儲(chǔ)器1804,以及連接系統(tǒng)存儲(chǔ)器1804和中央處理單元1801的系統(tǒng)總線1805。服務(wù)器1800還包括幫助計(jì)算機(jī)內(nèi)的各個(gè)器件之間傳輸信息的基本輸入/輸出系統(tǒng)(i/o系統(tǒng))1806,和用于存儲(chǔ)操作系統(tǒng)1813、應(yīng)用程序1814和其他程序模塊1815的大容量存儲(chǔ)設(shè)備1807。

基本輸入/輸出系統(tǒng)1806包括有用于顯示信息的顯示器1808和用于用戶輸入信息的諸如鼠標(biāo)、鍵盤之類的輸入設(shè)備1809。其中顯示器1808和輸入設(shè)備1809都通過連接到系統(tǒng)總線1805的輸入輸出控制器1810連接到中央處理單元1801?;据斎?輸出系統(tǒng)1806還可以包括輸入輸出控制器1810以用于接收和處理來自鍵盤、鼠標(biāo)、或電子觸控筆等多個(gè)其他設(shè)備的輸入。類似地,輸入輸出控制器1810還提供輸出到顯示屏、打印機(jī)或其他類型的輸出設(shè)備。

大容量存儲(chǔ)設(shè)備1807通過連接到系統(tǒng)總線1805的大容量存儲(chǔ)控制器(未示出)連接到中央處理單元1801。大容量存儲(chǔ)設(shè)備1807及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為服務(wù)器1800提供非易失性存儲(chǔ)。也就是說,大容量存儲(chǔ)設(shè)備1807可以包括諸如硬盤或者cd-rom驅(qū)動(dòng)器之類的計(jì)算機(jī)可讀介質(zhì)(未示出)。

不失一般性,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括ram、rom、eprom、eeprom、閃存或其他固態(tài)存儲(chǔ)其技術(shù),cd-rom、dvd或其他光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備。當(dāng)然,本領(lǐng)域技術(shù)人員可知計(jì)算機(jī)存儲(chǔ)介質(zhì)不局限于上述幾種。上述的系統(tǒng)存儲(chǔ)器1804和大容量存儲(chǔ)設(shè)備1807可以統(tǒng)稱為存儲(chǔ)器。

根據(jù)本發(fā)明的各種實(shí)施例,服務(wù)器1800還可以通過諸如因特網(wǎng)等網(wǎng)絡(luò)連接到網(wǎng)絡(luò)上的遠(yuǎn)程計(jì)算機(jī)運(yùn)行。也即服務(wù)器1800可以通過連接在系統(tǒng)總線1805上的網(wǎng)絡(luò)接口單元1811連接到網(wǎng)絡(luò)1812,或者說,也可以使用網(wǎng)絡(luò)接口單元1811來連接到其他類型的網(wǎng)絡(luò)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(未示出)。

上述存儲(chǔ)器還包括一個(gè)或者一個(gè)以上的程序,一個(gè)或者一個(gè)以上程序存儲(chǔ) 于存儲(chǔ)器中,被配置由cpu執(zhí)行,所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的如下所述的sdk發(fā)送方法的指令,包括:

當(dāng)接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

基于接口文件、加密函數(shù)文件和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,保護(hù)邏輯庫用于對(duì)加密函數(shù)文件進(jìn)行加載和解密;

將第二sdk發(fā)送給應(yīng)用開發(fā)方,以供應(yīng)用開發(fā)方基于第二sdk發(fā)布目標(biāo)應(yīng)用。

可選地,對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,包括:

從第一sdk中,獲取至少一個(gè)接口和至少一個(gè)函數(shù);

從至少一個(gè)函數(shù)中,獲取至少一個(gè)接口函數(shù),至少一個(gè)接口函數(shù)為至少一個(gè)接口所對(duì)應(yīng)的函數(shù);

獲取至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口函數(shù)聲明為至少一個(gè)接口函數(shù)的函數(shù)聲明;

基于至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,生成接口文件;

對(duì)至少一個(gè)函數(shù)分別進(jìn)行加密,得到至少一個(gè)函數(shù)密文;

基于至少一個(gè)函數(shù)密文,生成加密函數(shù)文件。

可選地,基于至少一個(gè)函數(shù)密文,生成加密函數(shù)文件之后,還包括:

對(duì)于至少一個(gè)函數(shù)中的每個(gè)函數(shù),對(duì)函數(shù)進(jìn)行哈希運(yùn)算,得到函數(shù)的信息摘要;

對(duì)信息摘要進(jìn)行加密,得到函數(shù)的數(shù)字簽名;

將數(shù)字簽名添加到加密函數(shù)文件中。

可選地,將第二sdk發(fā)送給應(yīng)用開發(fā)方之前,還包括:

獲取第二sdk所適用的應(yīng)用標(biāo)識(shí);

對(duì)獲取的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第一哈希值;

將第一哈希值添加到第二sdk中。

在本發(fā)明實(shí)施例中,當(dāng)開發(fā)工具提供方接收到處理指令時(shí),對(duì)第一sdk進(jìn)行預(yù)處理,得到接口文件和加密函數(shù)文件,基于該接口文件、該加密函數(shù)文件 和存儲(chǔ)的保護(hù)邏輯庫,生成第二sdk,操作簡(jiǎn)單,生成效率較高,之后,開發(fā)工具提供方將該第二sdk發(fā)送給應(yīng)用開發(fā)方,以供該應(yīng)用開發(fā)方基于該第二sdk發(fā)布目標(biāo)應(yīng)用。由于第二sdk中包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,因此,第二sdk可以大大提高反編譯的難度和工具量。且由于接口文件包括的是接口和接口函數(shù)聲明,加密函數(shù)文件包括的是函數(shù)密文,保護(hù)邏輯庫中沒有第一sdk中的內(nèi)容,因此,即使攻擊者可以對(duì)該第二sdk成功進(jìn)行反編譯,也無法獲取到sdk源代碼,從而實(shí)現(xiàn)了對(duì)sdk源代碼的保護(hù),增強(qiáng)了sdk源代碼的保密性。

圖19和圖20是本發(fā)明實(shí)施例提供的應(yīng)用發(fā)布裝置的結(jié)構(gòu)示意圖。該應(yīng)用發(fā)布裝置可以為服務(wù)器或者終端。

圖19示出了本發(fā)明一個(gè)實(shí)施例提供的應(yīng)用發(fā)布裝置服務(wù)器的結(jié)構(gòu)示意圖。該服務(wù)器可以是后臺(tái)服務(wù)器集群中的服務(wù)器。具體來講:

服務(wù)器1900包括中央處理單元(cpu)1901、包括隨機(jī)存取存儲(chǔ)器(ram)1902和只讀存儲(chǔ)器(rom)1903的系統(tǒng)存儲(chǔ)器1904,以及連接系統(tǒng)存儲(chǔ)器1904和中央處理單元1901的系統(tǒng)總線1905。服務(wù)器1900還包括幫助計(jì)算機(jī)內(nèi)的各個(gè)器件之間傳輸信息的基本輸入/輸出系統(tǒng)(i/o系統(tǒng))1906,和用于存儲(chǔ)操作系統(tǒng)1913、應(yīng)用程序1914和其他程序模塊1915的大容量存儲(chǔ)設(shè)備1907。

基本輸入/輸出系統(tǒng)1906包括有用于顯示信息的顯示器1908和用于用戶輸入信息的諸如鼠標(biāo)、鍵盤之類的輸入設(shè)備1909。其中顯示器1908和輸入設(shè)備1909都通過連接到系統(tǒng)總線1905的輸入輸出控制器1910連接到中央處理單元1901?;据斎?輸出系統(tǒng)1906還可以包括輸入輸出控制器1910以用于接收和處理來自鍵盤、鼠標(biāo)、或電子觸控筆等多個(gè)其他設(shè)備的輸入。類似地,輸入輸出控制器1910還提供輸出到顯示屏、打印機(jī)或其他類型的輸出設(shè)備。

大容量存儲(chǔ)設(shè)備1907通過連接到系統(tǒng)總線1905的大容量存儲(chǔ)控制器(未示出)連接到中央處理單元1901。大容量存儲(chǔ)設(shè)備1907及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為服務(wù)器1900提供非易失性存儲(chǔ)。也就是說,大容量存儲(chǔ)設(shè)備1907可以包括諸如硬盤或者cd-rom驅(qū)動(dòng)器之類的計(jì)算機(jī)可讀介質(zhì)(未示出)。

不失一般性,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他 數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括ram、rom、eprom、eeprom、閃存或其他固態(tài)存儲(chǔ)其技術(shù),cd-rom、dvd或其他光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備。當(dāng)然,本領(lǐng)域技術(shù)人員可知計(jì)算機(jī)存儲(chǔ)介質(zhì)不局限于上述幾種。上述的系統(tǒng)存儲(chǔ)器1904和大容量存儲(chǔ)設(shè)備1907可以統(tǒng)稱為存儲(chǔ)器。

根據(jù)本發(fā)明的各種實(shí)施例,服務(wù)器1900還可以通過諸如因特網(wǎng)等網(wǎng)絡(luò)連接到網(wǎng)絡(luò)上的遠(yuǎn)程計(jì)算機(jī)運(yùn)行。也即服務(wù)器1900可以通過連接在系統(tǒng)總線1905上的網(wǎng)絡(luò)接口單元1911連接到網(wǎng)絡(luò)1912,或者說,也可以使用網(wǎng)絡(luò)接口單元1911來連接到其他類型的網(wǎng)絡(luò)或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)(未示出)。

上述存儲(chǔ)器還包括一個(gè)或者一個(gè)以上的程序,一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,被配置由cpu執(zhí)行,所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的如下所述的應(yīng)用發(fā)布方法的指令,包括:

接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼;

將加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用;

將目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。

可選地,基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,包括:

當(dāng)?shù)诙dk中包括第一哈希值時(shí),獲取目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí);

對(duì)目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第二哈希值;

當(dāng)?shù)诙V蹬c第一哈希值相同時(shí),基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯。

在本發(fā)明實(shí)施例中,應(yīng)用開發(fā)方接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,基于該接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼,由于該接口文件中包括的是接口和接口函數(shù)聲明,因此,即使攻擊者可以從編譯后的應(yīng)用源代 碼中獲取到該接口文件并對(duì)該接口文件進(jìn)行反編譯,也不能獲取到sdk源代碼,提高了sdk源代碼的保密性。之后,應(yīng)用開發(fā)方將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用,將該目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。由于加密函數(shù)文件中包括的是函數(shù)密文,后續(xù)目標(biāo)應(yīng)用運(yùn)行時(shí)實(shí)際上調(diào)用的是加密函數(shù)文件,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取接口文件并對(duì)該接口文件進(jìn)行篡改,也不會(huì)影響目標(biāo)應(yīng)用的正常運(yùn)行。

圖20是本發(fā)明實(shí)施例提供的一種應(yīng)用發(fā)布裝置終端的結(jié)構(gòu)示意圖。參見圖20,終端2000可以包括通信單元2010、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器2020、輸入單元2030、顯示單元2040、傳感器2050、音頻電路2060、wifi(wirelessfidelity,無線保真)模塊2070、包括有一個(gè)或者一個(gè)以上處理核心的處理器2080、以及電源2090等部件。本領(lǐng)域技術(shù)人員可以理解,圖20中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:

通信單元2010可用于收發(fā)信息或通話過程中,信號(hào)的接收和發(fā)送,該通信單元2010可以為rf(radiofreque至少一cy,射頻)電路、路由器、調(diào)制解調(diào)器、等網(wǎng)絡(luò)通信設(shè)備。特別地,當(dāng)通信單元2010為rf電路時(shí),將基站的下行信息接收后,交由一個(gè)或者一個(gè)以上處理器2080處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,作為通信單元的rf電路包括但不限于天線、至少一個(gè)放大器、調(diào)諧器、一個(gè)或多個(gè)振蕩器、用戶身份模塊(sim)卡、收發(fā)信機(jī)、耦合器、l至少一a(low至少一oiseamplifier,低噪聲放大器)、雙工器等。此外,通信單元2010還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommu至少一icatio至少一,全球移動(dòng)通訊系統(tǒng))、gprs(ge至少一eralpacketradioservice,通用分組無線服務(wù))、cdma(codedivisio至少一multipleaccess,碼分多址)、wcdma(wideba至少一dcodedivisio至少一multipleaccess,寬帶碼分多址)、lte(lo至少一gtermevolutio至少一,長(zhǎng)期演進(jìn))、電子郵件、sms(shortmessagi至少一gservice,短消息服務(wù))等。存儲(chǔ)器2020可用于存儲(chǔ)軟件程序以及模塊,處理器2080通過運(yùn)行存儲(chǔ)在存儲(chǔ)器2020的軟件程 序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器2020可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端2000的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器2020可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器2020還可以包括存儲(chǔ)器控制器,以提供處理器2080和輸入單元2030對(duì)存儲(chǔ)器2020的訪問。

輸入單元2030可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。優(yōu)選地,輸入單元2030可包括觸敏表面2031以及其他輸入設(shè)備2032。觸敏表面2031,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面2031上或在觸敏表面2031附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置??蛇x的,觸敏表面2031可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶的觸摸方位,并檢測(cè)觸摸操作帶來的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器2080,并能接收處理器2080發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸敏表面2031。除了觸敏表面2031,輸入單元2030還可以包括其他輸入設(shè)備2032。優(yōu)選地,其他輸入設(shè)備2032可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。

顯示單元2040可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端2000的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元2040可包括顯示面板2041,可選的,可以采用lcd(liquidcrystaldisplay,液晶顯示器)、oled(orga至少一iclight-emitti至少一gdiode,有機(jī)發(fā)光二極管)等形式來配置顯示面板2041。進(jìn)一步的,觸敏表面2031可覆蓋顯示面板2041,當(dāng)觸敏表面2031檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器2080以確定觸摸事件的類型,隨后處理器2080根據(jù)觸摸事件的類型在顯示面板2041上提供相應(yīng)的視覺輸出。雖然在圖20中,觸 敏表面2031與顯示面板2041是作為兩個(gè)獨(dú)立的部件來實(shí)現(xiàn)輸入和輸入功能,但是在某些實(shí)施例中,可以將觸敏表面2031與顯示面板2041集成而實(shí)現(xiàn)輸入和輸出功能。

終端2000還可包括至少一種傳感器2050,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板2041的亮度,接近傳感器可在終端2000移動(dòng)到耳邊時(shí),關(guān)閉顯示面板2041和/或背光。作為運(yùn)動(dòng)傳感器的一種,重力加速度傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端2000還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。

音頻電路2060、揚(yáng)聲器2061,傳聲器2062可提供用戶與終端2000之間的音頻接口。音頻電路2060可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器2061,由揚(yáng)聲器2061轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器2062將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路2060接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器2080處理后,經(jīng)通信單元2010以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器2020以便進(jìn)一步處理。音頻電路2060還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端2000的通信。

為了實(shí)現(xiàn)無線通信,該終端上可以配置有無線通信單元2070,該無線通信單元2070可以為wifi模塊。wifi屬于短距離無線傳輸技術(shù),終端2000通過無線通信單元2070可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖中示出了無線通信單元2070,但是可以理解的是,其并不屬于終端2000的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。

處理器2080是終端2000的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器2020內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器2020內(nèi)的數(shù)據(jù),執(zhí)行終端2000的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器2080可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器2080可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主 要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器2080中。

終端2000還包括給各個(gè)部件供電的電源2090(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器2080邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源2060還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。

盡管未示出,終端2000還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。

在本實(shí)施例中,終端還包括有一個(gè)或者一個(gè)以上的程序,這一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,且經(jīng)配置以由一個(gè)或者一個(gè)以上處理器執(zhí)行,所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的如下所述的應(yīng)用發(fā)布方法的指令,包括:

接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,接口文件包括至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明,至少一個(gè)接口和至少一個(gè)接口函數(shù)聲明包含于第一sdk中,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼;

將加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用;

將目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。

可選地,基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,包括:

當(dāng)?shù)诙dk中包括第一哈希值時(shí),獲取目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí);

對(duì)目標(biāo)應(yīng)用的應(yīng)用標(biāo)識(shí)進(jìn)行哈希運(yùn)算,得到第二哈希值;

當(dāng)?shù)诙V蹬c第一哈希值相同時(shí),基于接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯。

在本發(fā)明實(shí)施例中,應(yīng)用開發(fā)方接收開發(fā)工具提供方發(fā)送的第二sdk,第二sdk包括接口文件、加密函數(shù)文件和保護(hù)邏輯庫,基于該接口文件,對(duì)應(yīng)用源代碼進(jìn)行編譯,應(yīng)用源代碼為待開發(fā)的目標(biāo)應(yīng)用的源代碼,由于該接口文件中包括的是接口和接口函數(shù)聲明,因此,即使攻擊者可以從編譯后的應(yīng)用源代 碼中獲取到該接口文件并對(duì)該接口文件進(jìn)行反編譯,也不能獲取到sdk源代碼,提高了sdk源代碼的保密性。之后,應(yīng)用開發(fā)方將該加密函數(shù)文件、該保護(hù)邏輯庫和編譯后的應(yīng)用源代碼進(jìn)行集成,得到目標(biāo)應(yīng)用,將該目標(biāo)應(yīng)用發(fā)送給應(yīng)用發(fā)布平臺(tái),以對(duì)目標(biāo)應(yīng)用進(jìn)行發(fā)布。由于加密函數(shù)文件中包括的是函數(shù)密文,后續(xù)目標(biāo)應(yīng)用運(yùn)行時(shí)實(shí)際上調(diào)用的是加密函數(shù)文件,因此,即使攻擊者可以從編譯后的應(yīng)用源代碼中獲取接口文件并對(duì)該接口文件進(jìn)行篡改,也不會(huì)影響目標(biāo)應(yīng)用的正常運(yùn)行。

圖21是本發(fā)明實(shí)施例提供的一種應(yīng)用運(yùn)行裝置終端的結(jié)構(gòu)示意圖。參見圖21,終端2100可以包括通信單元2110、包括有一個(gè)或一個(gè)以上計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的存儲(chǔ)器2120、輸入單元2130、顯示單元2140、傳感器2150、音頻電路2160、wifi(wirelessfidelity,無線保真)模塊2170、包括有一個(gè)或者一個(gè)以上處理核心的處理器2180、以及電源2190等部件。本領(lǐng)域技術(shù)人員可以理解,圖21中示出的終端結(jié)構(gòu)并不構(gòu)成對(duì)終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:

通信單元2110可用于收發(fā)信息或通話過程中,信號(hào)的接收和發(fā)送,該通信單元2110可以為rf(radiofreque至少一cy,射頻)電路、路由器、調(diào)制解調(diào)器、等網(wǎng)絡(luò)通信設(shè)備。特別地,當(dāng)通信單元2110為rf電路時(shí),將基站的下行信息接收后,交由一個(gè)或者一個(gè)以上處理器2180處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,作為通信單元的rf電路包括但不限于天線、至少一個(gè)放大器、調(diào)諧器、一個(gè)或多個(gè)振蕩器、用戶身份模塊(sim)卡、收發(fā)信機(jī)、耦合器、l至少一a(low至少一oiseamplifier,低噪聲放大器)、雙工器等。此外,通信單元2110還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommu至少一icatio至少一,全球移動(dòng)通訊系統(tǒng))、gprs(ge至少一eralpacketradioservice,通用分組無線服務(wù))、cdma(codedivisio至少一multipleaccess,碼分多址)、wcdma(wideba至少一dcodedivisio至少一multipleaccess,寬帶碼分多址)、lte(lo至少一gtermevolutio至少一,長(zhǎng)期演進(jìn))、電子郵件、sms(shortmessagi至少一gservice,短消息服務(wù))等。存儲(chǔ)器2120可用于存儲(chǔ)軟件程序以及模塊,處理器2180通過運(yùn)行存儲(chǔ)在存儲(chǔ)器2120的軟件程 序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器2120可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)終端2100的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲(chǔ)器2120可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。相應(yīng)地,存儲(chǔ)器2120還可以包括存儲(chǔ)器控制器,以提供處理器2180和輸入單元2130對(duì)存儲(chǔ)器2120的訪問。

輸入單元2130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號(hào)輸入。優(yōu)選地,輸入單元2130可包括觸敏表面2131以及其他輸入設(shè)備2132。觸敏表面2131,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面2131上或在觸敏表面2131附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置。可選的,觸敏表面2131可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶的觸摸方位,并檢測(cè)觸摸操作帶來的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器2180,并能接收處理器2180發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸敏表面2131。除了觸敏表面2131,輸入單元2130還可以包括其他輸入設(shè)備2132。優(yōu)選地,其他輸入設(shè)備2132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。

顯示單元2140可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端2100的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元2140可包括顯示面板2141,可選的,可以采用lcd(liquidcrystaldisplay,液晶顯示器)、oled(orga至少一iclight-emitti至少一gdiode,有機(jī)發(fā)光二極管)等形式來配置顯示面板2141。進(jìn)一步的,觸敏表面2131可覆蓋顯示面板2141,當(dāng)觸敏表面2131檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器2180以確定觸摸事件的類型,隨后處理器2180根據(jù)觸摸事件的類型在顯示面板2141上提供相應(yīng)的視覺輸出。雖然在圖21中,觸 敏表面2131與顯示面板2141是作為兩個(gè)獨(dú)立的部件來實(shí)現(xiàn)輸入和輸入功能,但是在某些實(shí)施例中,可以將觸敏表面2131與顯示面板2141集成而實(shí)現(xiàn)輸入和輸出功能。

終端2100還可包括至少一種傳感器2150,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板2141的亮度,接近傳感器可在終端2100移動(dòng)到耳邊時(shí),關(guān)閉顯示面板2141和/或背光。作為運(yùn)動(dòng)傳感器的一種,重力加速度傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端2100還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。

音頻電路2160、揚(yáng)聲器2161,傳聲器2162可提供用戶與終端2100之間的音頻接口。音頻電路2160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器2161,由揚(yáng)聲器2161轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器2162將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路2160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器2180處理后,經(jīng)通信單元2110以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器2120以便進(jìn)一步處理。音頻電路2160還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端2100的通信。

為了實(shí)現(xiàn)無線通信,該終端上可以配置有無線通信單元2170,該無線通信單元2170可以為wifi模塊。wifi屬于短距離無線傳輸技術(shù),終端2100通過無線通信單元2170可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖中示出了無線通信單元2170,但是可以理解的是,其并不屬于終端2100的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。

處理器2180是終端2100的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器2120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器2120內(nèi)的數(shù)據(jù),執(zhí)行終端2100的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器2180可包括一個(gè)或多個(gè)處理核心;優(yōu)選的,處理器2180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主 要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器2180中。

終端2100還包括給各個(gè)部件供電的電源2190(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器2180邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源2160還可以包括一個(gè)或一個(gè)以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測(cè)電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。

盡管未示出,終端2100還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。

在本實(shí)施例中,終端還包括有一個(gè)或者一個(gè)以上的程序,這一個(gè)或者一個(gè)以上程序存儲(chǔ)于存儲(chǔ)器中,且經(jīng)配置以由一個(gè)或者一個(gè)以上處理器執(zhí)行,所述一個(gè)或者一個(gè)以上程序包含用于進(jìn)行本發(fā)明實(shí)施例提供的如下所述的應(yīng)用運(yùn)行方法的指令,包括:

從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,加密函數(shù)文件是對(duì)第一sdk中的函數(shù)進(jìn)行加密得到,第一sdk為用于進(jìn)行應(yīng)用開發(fā)的sdk;

當(dāng)接收到目標(biāo)應(yīng)用的運(yùn)行指令時(shí),基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,以運(yùn)行目標(biāo)應(yīng)用。

可選地,基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,包括:

通過保護(hù)邏輯庫對(duì)加密函數(shù)文件中的至少一個(gè)函數(shù)密文進(jìn)行加載和解密,得到至少一個(gè)函數(shù);

確定運(yùn)行指令所調(diào)用的目標(biāo)接口;

基于編譯后的應(yīng)用源代碼和目標(biāo)接口,從至少一個(gè)函數(shù)中獲取目標(biāo)函數(shù);

通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

可選地,基于編譯后的應(yīng)用源代碼和保護(hù)邏輯庫,調(diào)用加密函數(shù)文件,包括:

確定運(yùn)行指令所調(diào)用的目標(biāo)接口;

基于編譯后的應(yīng)用源代碼和目標(biāo)接口,通過保護(hù)邏輯庫對(duì)加密函數(shù)文件中的目標(biāo)函數(shù)密文進(jìn)行加載和解密,得到目標(biāo)函數(shù);

通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

可選地,通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù),包括:

當(dāng)加密函數(shù)文件中包括至少一個(gè)數(shù)字簽名時(shí),對(duì)目標(biāo)函數(shù)進(jìn)行哈希運(yùn)算,得到第一摘要;

從至少一個(gè)數(shù)字簽名中,獲取目標(biāo)函數(shù)的數(shù)字簽名;

對(duì)獲取的數(shù)字簽名進(jìn)行解密,得到第二摘要;

當(dāng)?shù)谝徽c第二摘要相同時(shí),通過編譯后的應(yīng)用源代碼調(diào)用目標(biāo)函數(shù)。

在本發(fā)明實(shí)施例中,終端從應(yīng)用發(fā)布平臺(tái)下載目標(biāo)應(yīng)用,該目標(biāo)應(yīng)用包括加密函數(shù)文件、保護(hù)邏輯庫和編譯后的應(yīng)用源代碼,當(dāng)接收到該目標(biāo)應(yīng)用的運(yùn)行指令時(shí),通過保護(hù)邏輯庫對(duì)該加密函數(shù)文件進(jìn)行加載和解密,并通過該編譯后的應(yīng)用源代碼調(diào)用解密后的該加密函數(shù)文件,以運(yùn)行該目標(biāo)應(yīng)用,從而在保證目標(biāo)應(yīng)用正常運(yùn)行的同時(shí)提高了該加密函數(shù)文件的保密性。

上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。

以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
葫芦岛市| 岳池县| 胶南市| 家居| 曲阜市| 桑日县| 崇信县| 如东县| 抚宁县| 泸州市| 江口县| 竹山县| 外汇| 南昌市| 河池市| 若尔盖县| 朝阳区| 富平县| 安岳县| 玉门市| 德安县| 潜江市| 西安市| 达日县| 清苑县| 垦利县| 扎兰屯市| 阿拉善右旗| 新蔡县| 岢岚县| 兖州市| 砀山县| 德昌县| 镇安县| 长岭县| 富裕县| 蛟河市| 长顺县| 石河子市| 钟山县| 成都市|